Android和OPhone来了,我们有什么机遇

w12801050 2009-08-28 08:42:23
Windows是个大家都耳熟能详的单词,它最让人熟悉的就是微软的PC操作系统,而旗下的Windows Mobile就没有那么有名气了,虽然是出自同一家公司,但是Windows Mobile却没有那么好的口碑,我总结了原因大概有以下几点:一,不开源,这使得开发做起来只能自己研究,遇到问题在网也很难得到解答;二开发太因难,首先C/C++中内存泄漏,悬空指针,数组边界违规这些都是经常要注意的问题,还有在Windows mobile中除UI界面实现的难度外,海量数据与反应要求的冲突,也很难解决.其次界面,控件太少,要独自开发等等主要的瓶颈就在这里.;三Windows Mobile手机平台使用率太低(手机太少),很难引起大家的重视;
但是相对于windows mobile,在新的3G平台(Ophoen和Android)中开发中显得十分简单了.那么什么是OPhone呢?
我简单介绍下OPhone,。OPhoen是中移动和播思通讯自去年开始基于Linux2.6,主导开发的自主创新的手机操作系统。该系统直接内置了中移动的服务菜单、音乐随身听、手机导航、号簿管家、139邮箱、飞信、快讯和移动梦网等3G特色业务;那么Android是什么呢? Android 是Google开发的基于Linux2.6平台的开源手机操作系统.它包括操作系统、用户界面和应用程序--移动电话工作所需的全部软件,而且不存在任何以往阻碍移动产业创新的专有权障碍.
从以上面的介绍可以看出,这二个操作系统都是以3G为搭载平台,我们知道现在的3G业务正刚刚起步,刚刚进入发展阶段,如果这个时候有个好的切入点能够进入3G,绝对是个好的时会.那么我就先研究了一下,发现OPhone和Android的SDK中没有包括JNI的支持,而且对如何支持JNI也没有任何文档说明.不过既然整个OPhone平台是开源的,我们可以通过一些源代码来找到一些线索(比如frameworks/base/media/jni/目录),依葫芦画瓢的实现上层JAVA程序通过JNI来调用Native C程序中的函数.
  依照下面的步骤可以实现一个非常简单的JNI的实例程序:首先编写C模块,实现动态库.(如何在OPhone中编译C模块的更多细节,请参考<OPhone编译环境(1) - 编译Native C的helloworld模块>)在development目录下添加新目录hellolib,并添加hellolib.c和OPhone.mk文件.hellolib.c的内容如下:
#include <jni.h>
#define LOG_TAG "TestLib"
#undef LOG
#include <utils/Log.h>
JNIEXPORT void JNICALL Java_com_test_TestHelloLib_printHello(JNIEnv * env, jobject jobj)
{
LOGD("Hello LIB!\n");
}
  注意这里的函数名需要按照JNI的规范(因此也可以用javah -jni工具来生成头文件,来保证函数名的正确性),Java_com_test_TestHelloLib_printHello的命名对应后面在java代码中,package名字是com.test,类名是TestHelloLib,native函数名是printHello.

  另外,LOGD及#define LOG_TAG "TestLib"等打印log的方式是采用了OPhone所提供的LOG机制,这样才能通过OPhone的logcat工具看到log.用于编译C模块的OPhone.mk文件内容如下:
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \
hellolib.c
LOCAL_C_INCLUDES := \
$(JNI_H_INCLUDE)
LOCAL_SHARED_LIBRARIES := \
libutils
LOCAL_PRELINK_MODULE := false
LOCAL_MODULE := libhello
include $(BUILD_SHARED_LIBRARY)
 该文件中的一些变量分别对应的含义如下:
LOCAL_SRC_FILES - 编译的源文件
LOCAL_C_INCLUDES - 需要包含的头文件目录
LOCAL_SHARED_LIBRARIES - 链接时需要的外部库
LOCAL_PRELINK_MODULE - 是否需要prelink处理(参考prelink的详细介绍:<动态库优化——Prelink(预连接)技术>,OPhone的Toolchain, prelink工具:<OPhone Toolchain与Bionic Libc>)
LOCAL_MODULE - 编译的目标对象
BUILD_SHARED_LIBRARY - 指明要编译成动态库
 接下来回到OPhone顶层目录,并执行make libhello来编译:
# cd $(YOUR_OPHONE) && make libhello
target thumb C: libhello <= development/hellolib/hellolib.ctarget SharedLib: libhello (out/target/product/generic/obj/SHARED_LIBRARIES/libhello_intermediates/LINKED/libhello.so)
target Non-prelinked: libhello (out/target/product/generic/symbols/system/lib/libhello.so)
target Strip: libhello (out/target/product/generic/obj/lib/libhello.so)
Install: out/target/product/generic/system/lib/libhello.so
   编译结果可得到位于out/target/product/generic/system/lib/目录的动态共享库libhello.so,这样的话,我们就可以得到了一个简单的JNI.研究到了这里我猛然间意识到有一大笔很大的财福正在向我招手.因为我本来就是学C/C++,且又是在WM工作,有着手机平台的经验.未来的OPhoneOS一定会有大量的市场就业机会和高薪位置,所以现在开始学习或投入OPhoneOS的开发绝对是非常好的选择.这还是下一代手机平台的先峰,酬劳多不说,又可以找简单快乐的工作.那我为什么不选择这个Ophoen或Android平台呢?
今天在手机早报中看到:中国移动网上软件店上线了,工程师自己开发了手机软件可以在这个在线商店上直接销售分成。好像中国移动在OphoneOS的官方网站(http://www.ophonesdn.com)上也正在举行发帖赢OPhone手机的活动.想想看,中国移动的手机用户占70%的市场,未来创造的3G工程师就业机会也会很多。
...全文
1388 74 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
74 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
LZ共享的C#编写的显示时钟widget好,学到了。
煮咖啡 2010-03-25
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 scutliu 的回复:]

Ophone其实应该是以谷歌Android平台为基础进行裁剪、扩展定制的
楼主竟然说是"OPhoen是中移动和播思通讯自去年开始基于Linux2.6,主导开发的自主创新的手机操作系统。"
好搞笑啊!

国人就是这样
自己的东西不肯开源
用别人的东西又不愿承认
极端缺乏开源精神
发展缓慢时正常的
[/Quote]赞一个……OPhone是基于Android的……
TonyTech 2010-01-26
  • 打赏
  • 举报
回复
鄙视LZ
DrSmart 2010-01-13
  • 打赏
  • 举报
回复
多捞钱呗
ghgfhgf 2009-10-24
  • 打赏
  • 举报
回复
感觉真不错。网络游戏移动化,下班地铁没事儿,开打手游。
openai 2009-10-23
  • 打赏
  • 举报
回复
再来看看神奇之贴
tianshi67 2009-10-22
  • 打赏
  • 举报
回复
虽然是地头蛇,但是地头蛇了解自己低头上的人想要什么?说谁呢,都清楚。
techend001 2009-10-21
  • 打赏
  • 举报
回复
广告是有嫌疑,WM的市场占有率绝对是硬伤。。
sheneven 2009-10-21
  • 打赏
  • 举报
回复
都是对于系统api的封装
都差不多
要是自己会封装,自己去做系统呗
yaoxiaoss 2009-10-21
  • 打赏
  • 举报
回复
一切尽皆幻象- -列强π
wsc321 2009-10-20
  • 打赏
  • 举报
回复
机遇是给有准备的人准备的。
huangbeyond 2009-10-20
  • 打赏
  • 举报
回复
楼主是哪里来的广告托?

但是Windows Mobile却没有那么好的口碑,我总结了原因大概有以下几点:一,不开源,这使得开发做起来只能自己研究,遇到问题在网也很难得到解答;二开发太因难,首先C/C++中内存泄漏,悬空指针,数组边界违规这些都是经常要注意的问题,还有在Windows mobile中除UI界面实现的难度外,海量数据与反应要求的冲突,也很难解决.其次界面,控件太少,要独自开发等等主要的瓶颈就在这里.;三Windows Mobile手机平台使用率太低(手机太少),很难引起大家的重视;

----------------------------------------------
这几点就是你批判Windows Mobile的理由?!我来逐条反驳你。

一、不开源就非得自己研究问题了?开源的系统,你难道真的会花精力看它内核源代码不成!?微软的技术帮助文档一向是最全最友好的,WM开发技术发展了这么多年,资料和例子铺天盖地,有什么难找?

二、用C++进行软件开发,在哪里都是一样的不容易!Unix、Linux、Android和OPhone下面的C++就没有“内存泄漏,悬空指针,数组边界违规”这些现象了?!VS集成环境下面用C#进行WM软件开发,都是所见即所得的操作,这还不够方便和丰富啊?你是不是要在Windows下进行“声控编程”你才满意?海量数据与反应要求的冲突,嘿嘿,好笑,既然是“海量数据”,那么你拿到PC下一样会慢!不要拿着PC的标准去特殊要求WM,Android和OPhone也是PDA好不好?!说WM下的控件少,要么是你没有用过VS,要么是你颠倒黑白。要不,你列个Android和OPhone的控件清单出来,让大家看看究竟是谁的控件少!

三、Windows Mobile手机平台使用率太低,那要看用WM手机来干什么。如果只是听音乐、看视频、聊QQ、发邮件等这些大众型应用,那么,任何一个手机操作系统都能胜任。如果是真正的基于移动PDA的商务政务应用,WM的占用率未必低。


至于你举的那个“一个非常简单的JNI的实例程序”,又要写C代码,还要编辑OPhone.mk来完成编译,麻烦不麻烦啊?!程序员都把精力花费在这种出错率高、过程效率低下的工作里,他们拿什么时间去研究用户的需求和业务?!看看C#开发WM软件,是多么简单和便捷。这边用C#可能程序都开发完了,那边Android和OPhone的开发环境都还不能编译代码!


不要别有用心地在这里误导程序员,这样没什么意思的!!!
aa375188802 2009-10-19
  • 打赏
  • 举报
回复
MS也加入phone的队伍中了。作为伟大的中国市场的用户,我对他不感冒。
yaoxiaoss 2009-10-18
  • 打赏
  • 举报
回复
WM已经被android打压的不行了,PC也就只能做PC。
tifastars 2009-10-18
  • 打赏
  • 举报
回复
楼主可以宣传自己,但不要贬低他人,LZSB
tianshi67 2009-10-17
  • 打赏
  • 举报
回复
新出的微软手机,真是对他没感觉。
wsc321 2009-10-16
  • 打赏
  • 举报
回复
一个PC商。仅此而已。中国用WM系统的还是少数。WM除非跟中国移动合作才有出路。
aisdifu 2009-10-15
  • 打赏
  • 举报
回复
加油,lz爸爸听后马上打电话来:你妈叫你回家吃饭。
aa375188802 2009-10-14
  • 打赏
  • 举报
回复
出来打酱油,再去溜达一下啊
lonanodo 2009-10-14
  • 打赏
  • 举报
回复
还需观察!
加载更多回复(54)

7,656

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧