再次研究Jollen的mokoid工程,在模拟器上运行篇!

来源:互联网 发布:sql注入处理 编辑:程序博客网 时间:2024/05/29 19:29

本次研究的原因是:

1.期望了解Android的权限和应用安全机制。

2.原先研究Jollen的mokoid工程是在6410的开发板上测试的,源码也是给厂家修改过的。

3.所以期望能够在一个正常的环境下面去实现一个新的设备支持。

4.最终考虑在模拟器上运行Jollen的mokoid工程。

 

Jollen的mokoid工程必须在源码环境下编译,生成了APK放在system/app下,生成的JAR放在了/framework目录下,生成的so在/system/lib/hw下。

本次测试还需要真正的编写一个驱动程序,放在内核里面编译,生成ko或者直接编译到内核。

 

需要做如下的准备工作:

0.自己编写一个什么都不做的内核驱动。随便在网上找了一个源码改了该,实现几个leds_ioctl/leds_init/leds_exit接口。记住在代码里面建立/dev/leds的节点。

1.下载andorid的内核源码,进行编译。请参见: Android 内核源代码交叉编译

2.下载android的源码,进行编译。请参见UBUNTU 10.10 编译Android 2.3.1源码以及SDK

3.为了调试应用方便,需要对编译结果system.img重新打包。节约编译时间。

================================================================================

引用一片博文:http://my.oschina.net/zengsai/blog/9798


http://my.oschina.net/zengsai/blog/9798
手工打包 system.img
单个模块编译后,直接打包/system目录下的内容到system.img,这样可以加快编译速度。

./mkyaffs2image <要打包的目录> <生成的文件>

 out/host/linux-x86/bin下有一些有用的host工具,可以添加它到环境变量:export PATH=$PATH:~/Project/android/out/host/linux-x86/bin
其中就有我们打包要用到的mkyaffs2img
mkyaffs2img可以用来手工打包emulator用到的img镜像。比如我们需要额外在system中添加一些组件的时候,直接将组件拷贝到system目录中,再执行

mkyaffs2img system system.img
就会生成带你需要组件的system.img文件。
================================================================================ 

4.少量的修改一下Jollen的mokoid工程的Android.mk,编译整个Android源码。生成了system/userdata/ramdisk.img,运行模拟器,用logcat dmesg观察打印输出。

调试的时候只用编译mokoid工程,重新打包system.img.

 

程序放入到ROM中,LedClient,LedTest是运行不对的,在logcat中提示 不能打开/dev/leds的节点。

修改/dev/leds节点的所属者 chown system system /dev/leds 。 运行LedTest就正常了,可以在dmesg中看到相应的打印输出。因LedTest进程所属者就是system。

 

但是LedClient肯定还是不行的,除非把节点的权限修改成 chmod 777 /dev/leds

 

今天就这么多,待续.............

 

 

 

 

 

 

原创粉丝点击