Android工程开发有感

来源:互联网 发布:json xml 转换 编辑:程序博客网 时间:2024/06/04 18:22

 

8月份接到安排,要把产品移植到ANDROID上,一直忙了两个多月才算发出去一个像样的版本。当然总算是发出去了,这两天就不用像以前那么忙,闲来写点东西,算是个小的总结吧。

google对这款系统产品赋予了艰巨使命,希望以此在移动领域分得一片天地。不过我觉得这款产品可能发的是有点急了,有些地方还真的不是太尽如人意。

 

项目的需求是把代码移植到ANDROID上,因此主要工作就是写接口。不过比较头痛的是ANDOIRD采用的是JAVA编程,而项目现成的代码是C/C++写的,所以就得使用NATIVE/JNI。在JAVA里面调用C代码要用NATIVE。NATIVE是JAVA的关键字,作用就是在JAVA里面声明一个功能函数,然后去C里面去实现。从C里面调用JAVA需要使用JNI。JNI是一个不错的东西,但在参与这个项目之前,我可是闻所未闻。JNI主要包含JavaVM和JNIEnv,前者表示JAVA虚拟机,后者是调用环境,实际上是一个包含了所有可用函数指针的结构体。开始的时以为JNIEnv对一个程序来说是唯一不变的,等后来代码运行起来才知道并不这样。对一个程序来说JavaVM才是唯一不变的,所以可以存起来,然后通过JavaVM获得JNIEnv。代码如下(*vm)->GetEnv(vm, (void**) &env, JNI_VERSION_1_4);

 

把代码写完了就可以开始编译了。编译用到的是NDK-BUILD,早一点的版本也有用make的。不过我下的这个版本已经开始建议用NDK-BUILD了。调试用的是NDK-GDB。到这要说一下了:ANDROID对JAVA代码支持还可以,单步调,下断点,都没的说;但是对C/C++的支持就没那么友好了。

 

(待续……)

 

javap -s xunlei/com/Thunder

 

main.xml里面关于宽度和高度的属性是必要的,如果删除程序会出错。