找回密码
 注册
搜索
查看: 14242|回复: 28

[讨论] Android和OPhone来了,我们有什么机遇

[复制链接]
发表于 2009-8-28 20:40:59 | 显示全部楼层 |阅读模式
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工程师就业机会也会很多。
发表于 2009-8-29 09:08:44 | 显示全部楼层
唉,找个托也找个水平高点的啊
点评回复

使用道具 举报

发表于 2009-9-2 15:15:28 | 显示全部楼层
刚刚开始混52RD,就碰到好人了。先回帖顶,再去看内容。
点评回复

使用道具 举报

发表于 2009-9-9 09:11:13 | 显示全部楼层
看情况决定,或许都能做。
[em06]
点评回复

使用道具 举报

发表于 2009-9-11 19:39:05 | 显示全部楼层
开源一定是未来科技平台的趋势,所以WM不开源,必定会淘汰。如若话说严重,请勿喷脸。
点评回复

使用道具 举报

发表于 2009-9-12 23:30:47 | 显示全部楼层
怎么都是mm
点评回复

使用道具 举报

发表于 2009-9-14 09:57:12 | 显示全部楼层
刚看到ophoneSDN网站上在免费发放Ophone手机。赶快去瞧瞧呗。
点评回复

使用道具 举报

发表于 2009-9-18 09:30:21 | 显示全部楼层
是在办送手机活动。不过我没参加,嘿嘿ie简单的了解了一下ophone,ophonesdn网站上面介绍得这么细,应有尽有,无论是入门文章,还是深入研究都有很丰富的帖子,
点评回复

使用道具 举报

发表于 2009-9-20 14:11:52 | 显示全部楼层
我把LZ在贴中的代码在我机器上运行了,并且我也写了一段代码,运行出了正确的结果,现在把原码贴出来也供大家学习一下.卡卡….
package com.test;
import android.app.Activity;
import android.os.Bundle;
public class TestHelloLib extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        printHello();
    }
    static {
    System.loadLibrary("hello");
    }
    private native void printHello();
}
  注意上面代码中粗体字部分:private native void printHello()用来声明一个native接口,static { System.loadLibrary("hello"); } 用来加载上面步骤中生成libhello.so(注意loadLibrary方法的参数不是”libhello.so”,而是去掉前缀和后缀之后的”hello”),onCreate()方法中则调用了printHello()接口。
通过这一步骤可生成Android开发者所熟悉的apk文件:TestHelloLib.apk。(运行成功)
点评回复

使用道具 举报

发表于 2009-9-24 18:58:49 | 显示全部楼层
呵呵,有点晕
点评回复

使用道具 举报

发表于 2009-9-26 11:29:16 | 显示全部楼层
WM几乎不可能形成垄断,老总都TM小肚鸡肠的,跟个烧饼似的。丫员工拿个iphone就给人家摔了。。这TM叫什么人。
点评回复

使用道具 举报

发表于 2009-9-29 13:57:35 | 显示全部楼层
日本的手机都快进入4G了,刚刚进入3G还好意思拿出来说
点评回复

使用道具 举报

发表于 2009-9-30 10:51:29 | 显示全部楼层
SM人??屁人呗。嫉妒别人的东西好。这叫不思进取。
点评回复

使用道具 举报

发表于 2009-10-6 15:42:08 | 显示全部楼层
嫉妒在作祟。MS就是这么盛气凌人,就是这么高人一等,所以心气儿也就比常人要高,所以他们也就会自命为自己的东西是最好的,其实是最跟不上套路的垃圾。[em06]
点评回复

使用道具 举报

发表于 2009-10-8 11:58:02 | 显示全部楼层

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

还能怎么办,WM现在是最傻逼的东西。
点评回复

使用道具 举报

发表于 2009-10-12 10:11:05 | 显示全部楼层
我小舅子的八大姑的奶奶的六大婶子的亲娘舅买了个三星定制机WM系统,触屏太NM难使了。本来挺好的系统,硬件跟不上也是个垃圾。[em14]
点评回复

使用道具 举报

发表于 2009-10-13 09:49:16 | 显示全部楼层
那就是垃圾硬件,WM是个强大的系统。MS也是强大的公司。新提出的Wmphone也将是强大的。[em07]
点评回复

使用道具 举报

发表于 2009-10-16 10:35:19 | 显示全部楼层
WM除非跟中国移动合作才有出路。中国用WM系统的还是少数。否则在中国只是一个PC商。仅此而已。新出的WMPHONE挺烂的。或者真应该捡起当初颓废的平板电脑。发展发展还有戏在移动市场弄碗粥喝。[em08]
点评回复

使用道具 举报

发表于 2009-10-19 16:07:21 | 显示全部楼层
MS也加入phone的队伍中了。作为伟大的中国市场的用户,我对他不感冒。[em03]
点评回复

使用道具 举报

发表于 2009-10-22 12:56:43 | 显示全部楼层
[em02]虽然是地头蛇,但是地头蛇了解自己低头上的人想要什么?说谁呢,都清楚。
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-4-20 13:01 , Processed in 0.052138 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表