《手机开发001》由会员分享,可在线阅读,更多相关《手机开发001(36页珍藏版)》请在金锄头文库上搜索。
1、手机开发手机开发 001001诺基亚调整分成模式厚诱开发者:收益上浮 50%随着苹果 ios 和谷歌 Android 系统面世,开发者本身亦转眼变成了“抢手货” 。CFP 供图智能手机系统开发竞争加剧,开发者瞬间变成“卖方”市场“诺基亚每天在全球销售近 126 万部手机,其中包括 100 万部诺基亚 S40 手机和 26 万部诺基亚智能手机。 ”在“2010 诺基亚中国开发伙伴峰会”上,诺基亚中国副董事长邓元鋆列出了一串数字, “在来到中国的 25 年间,诺基亚已经拥有超过 2.5 亿用户。2010 年前三季度,诺基亚已经在中国销售超过 6000 万部手机。 ”面对在座的软件开发者们,邓元鋆抛
2、出了一颗定心丸留在诺基亚平台,这里仍有广阔的空间。3 年前,中国智能手机领域仍为诺基亚 Symbian 和微软的 Windows Mobile 两大操作系统所把持,如果你想通过设计手机软件获利,必须在这两者间做出选择。时过境迁,如今开发者们大量流向获利能力更强的苹果 ios 和谷歌 Android,开发者本身亦转眼变成了抢手货,诺基亚终于出手了。“A”公司和“G”公司都不是对手?“无论是A公司(暗指苹果公司,Apple)还是G公司(暗指谷歌公司,Google),在中国智能手机销量都不是诺基亚的对手。 ”邓元鋆呼吁开发者为诺基亚开发更多的应用程序,以供用户下载。这仿佛数十年来家用游戏机市场的发展
3、轨迹,任天堂、世嘉、索尼、微软,每一次家用主机的改朝换代均以软件(游戏)的多寡定输赢每一个阶段,哪款家用游戏机获得软件的支持越多,主机销量才越多,反之在该平台上开发软件的公司和个人就越多。现在的手机操作系统正面临同样的竞争格局。面对大量开发者流失,诺基亚最重要的筹码便在于手机用户量。这无疑让努力转型互联网的诺基亚又回到了原点,需要靠足够的硬件销售来站稳脚跟。尽管邓元鋆暗指苹果和谷歌“不是对手” ,但事实上 iPhone 和Android 系统的智能手机正给诺基亚带来巨大的压力。最直接的表象是两者第三方软件的增长速度大幅超过诺基亚现有的 Symbian 系统。调整分成模式除了“布道”自己的“机海
4、”优势之外,诺基亚显然还需要更实在的内容来吸引开发者,例如收入。大会现场,诺基亚大中国区互联网服务媒介总监张伟新称, “超过2/3 的消费者更偏好运营商代收费模式,运营商代收费模式使得移动应用的购买量提高了 13 倍。 ”据他介绍,自 10 月 1 日开始,诺基亚已实施“固定收入分成比例” ,即采用运营商的应用分成比例,诺基亚不占收益份额。如此一来,应用开发者的收益相比之前提高了50%。张伟新表示,中国本地应用占比将增至 30%。不过诺基亚方面并未具体说明,到底是放弃了自己那部分收入比例,还是与运营商共同“让利” ,分享运营商的收益。据悉,诺基亚将联合中国移动在开发工具、技术培训、发布平台等方
5、面,面向本地开发伙伴建立一个“最具商业价值”的移动应用开发环境。Linux 程序开发基础概念在设置 Linux 的系统路径时,使用冒号分隔每个路径名。如:PATH=“/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11“在 Linux 中的程序有两种,一种是可执行程序,与 Windows 下的.exe 文件类似,一种是脚本,与 Windows 下的.bat 文件类似。Linux 中常用的程序存放路径有以下几个:/bin,该路径存放系统启动时需要使用的程序。/usr/bin,该路径存放用户需使用的标准程
6、序。/usr/local/bin,该路径存放本地安装的程序。Linux 使用斜杠“/“分隔路径名,而不是 Windows 的反斜杠“。Linux 下的 C 编译器使用 GCC,由于历史的原因,在 POSIX 兼容的操作系统中,C 编译器都叫 cc,所以 Linux 下也有一个 cc 命令,它是一个到 gcc 的软链接。开发工具,多数位于/usr/bin 或/usr/local/bin 目录下。头文件,位于/usr/include 目录。头文件包含有常量定义、系统调用和库函数调用的声明。这是系统默认的头文件存放路径,在编译程序时,编译器会自动查找该目录。gcc 编译器在编译程序时也可用-I 参数
7、指定另外的头文件路径。如:gcc -I/usr/local/myinclude test.c。库文件,库是一组已编译的函数集合,可方便我们重用代码。默认存放在/lib 和/usr/lib 目录。库文件可分为静态和共享两类。.a,静态库文件。使用静态库将会把所有的库代码引入程序,占用更多的磁盘空间和内存空间,所以一般建议使用共享库。.so,共享库文件。使用共享库的程序不包含库代码,只在程序运行才调用共享库中的代码。在编译时可用包含路径的库文件名或用-l 参数指定使用的库文件,/usr/lib/libm.a 等价于-lm。如:gcc -o hello hello.c /usr/lib/libm.a
8、 或用-l 参数写成 gcc -o hello hello.c -lm如果我们要使用的库文件不在默认位置,在编译程序时可用-L 参数指定库文件的路径。下面例子使用了/usr/hello/lib 目录下的libhello 库文件:gcc -o hello -L/usr/hello/lib hello.c -lhello创建和使用静态库。分别创建两个函数,函数 a 的内容如下:#include void a(char *arg)printf(“function a,hello world %sn“,arg);函数 b 的内容如下:#include void b(int arg)printf(“fu
9、nction b,hello world %dn“,arg);接着,生成两个对象文件。debian:/c# gcc -c a.c b.cdebian:/c# ls *.oa.o b.o最后,用 ar 归档命令把生成的对象文件打包成一个静态库libhello.a。debian:/c# ar crv libhello.a a.o b.o r - a.or - b.o为我们的静态库定义一个头文件 lib.h,包含这两个函数的定义。/* this is a header file.*/void a(char *arg);void b(int arg);* 创建 jims.c 程序,内容如下。#!cpl
10、usplus#include “lib.h“int main()a(“jims.yang“);b(3);exit(0);利用静态链接库编译程序。debian:/c# gcc -c jims.cdebian:/c# gcc -o jims jims.o libhello.adebian:/c# ./jimsfunction a,hello world jims.yangfunction b,hello world 3debian:/c#gcc -o jims jims.o libhello.a 也可以写成 gcc -o jims jims.o -L. -lhello预处理,在程序开头以“#”开头
11、的命令就是预处理命令,它在语法扫描和分析法时被预处理程序处理。预处理有以下几类:宏定义,用#define 指令定义。如:#define BUFFER 1024。取消宏定义用#undef 指令。宏还可带参数,如:#define BUF(x) x*3包含头文件,用#include 指令,可把包含的文件代码插入当前位置。如:输入 plot filename u 1(colum ) with linespoint。画出图就可以分析了,gnuplot 没有缩小功能,当放大后,只能用 reset 后重绘。直到昨天终于给了对方一个 1.2 的版本的 software,等他们跑车的结果了。没问题的话,又要搞
12、GPS generater 了。最近在查关于 Linux 下时间编程的问题:1. Linux 下与时间有关的结构体struct timeval int tv_sec; int tv_usec; ; 其中 tv_sec 是由凌晨开始算起的秒数,tv_usec 则是微秒(10E-6 second)。 struct timezone int tv_minuteswest; int tv_dsttime; ; tv_minuteswest 是格林威治时间往西方的时差,tv_dsttime 则是时间的修正方式。 struct timespec long int tv_sec; long int tv_n
13、sec; ; tv_nsec 是 nano second(10E-9 second)。 struct tm int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; ; tm_sec 表秒数,在0,61之间,多出来的两秒是用来处理跳秒问题用的。 tm_min 表分数,在0,59之间。 tm_hour 表时数,在0,23之间。 tm_mday 表本月第几日 ,在1,31之间。 tm_mon 表本年第几月 ,在0,11之间。 t
14、m_year 要加 1900 表示那一年。 tm_wday 表本第几日 ,在0,6之间。 tm_yday 表本年第几日 ,在0,365之间,闰年有 366 日。 tm_isdst 表是否为日光节约时间 。 struct itimervalstruct timeval it_interval;struct timeval it_value;it_interval 成员表示间隔计数器的初始值,而 it_value 成员表示间隔计数器的当前值。2.获得当前时间在所有的 UNIX 下,都有个 time()的函数 time_t time(time_t *t);这个函数会传回从 epoch 开始计算起的秒
15、数,如果 t 是 non-null,它将会把时间值填入 t 中。 对某些需要较高精准度的需求,Linux 提供了 gettimeofday()。 int gettimeofday(struct timeval * tv,struct timezone *tz); int settimeofday(const struct timeval * tv,const struct timezone *tz); struct tm 格式时间函数 struct tm * gmtime(const time_t * t); 转换成格林威治时间。有时称为 GMT 或 UTC。 struct tm * loca
16、ltime(const time_t *t); 转换成本地时间。它可以透过修改 TZ 环境变数来在一台机器中,不同使用者表示不同时间。 time_t mktime(struct tm *tp); 转换 tm 成为 time_t 格式,使用本地时间。 tme_t timegm(strut tm *tp); 转换 tm 成为 time_t 格式,使用 UTC 时间。 double difftime(time_t t2,time_t t1); 计算秒差。 3.文字时间格式函数 char * asctime(struct tm *tp); char * ctime(struct tm *tp); 这两个函数都转换时间格式为标准 UNIX 时间格式。 Mon May 3 08:23:35 1999 ctime 一率使用当地时间,asctime 则用 tm 结构内的 timezone 资讯来表示。 size_t strftime(char *s