再次研究Jollen的mokoid工程,在模拟器上运行篇!
2011-08-05 15:28
246 查看
本次研究的原因是:
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重新打包。节约编译时间。
================================================================================
引用一片博文:/article/3474589.html
/article/3474589.html
手工打包 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
今天就这么多,待续.............
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重新打包。节约编译时间。
================================================================================
引用一片博文:/article/3474589.html
/article/3474589.html
手工打包 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
今天就这么多,待续.............
相关文章推荐
- [原创]Android HAL实例学习-Jollen的mokoid工程编译篇
- [原创]Android HAL实例学习-Jollen的mokoid工程编译篇
- Android HAL实例学习-Jollen的mokoid工程编译篇
- cordova---cordova常见指令,创建工程,编译运行项目,添加删除平台、插件,模拟器
- unity3d在xcode中编译工程在模拟器上运行
- iOS开发——关于拷贝的iOS工程在其他电脑上不能真机和模拟器运行,即只有MyMac设备,没有其他设备
- iOS开发——为iOS工程创建模拟器包,用于其它电脑上iOS模拟器的运行测试(Creating an iOS Simulator Build)
- .Net Micro Framework研究—模拟器直接运行MF程序
- ionic项目打包好Xcode工程,模拟器运行各种沙盒缓存目录
- iOS开发——为iOS工程创建模拟器包,用于其它电脑上iOS模拟器的运行测试(Creating an iOS Simulator Build)
- 在iPhone X模拟器下运行工程 报错dyld: dyld_sim cannot be loaded in a restricted process的解决办法
- 安装Genymotion模拟器运行Android studio的工程
- framework中编译anroid工程并在模拟器上运行
- 如何用javac 和java 编译运行整个Java工程
- 用Eclipse建立从Vuze/Azureus工程并编译运行的方法
- Eclipse下通过Maven的Jetty插件运行Web工程的配置,包括启动https
- MyEclipse中的配置及运行工程
- Android Studio模拟器启动工程时报错:HAX kernel module is not installed!
- iOS-手把手教你边制作静态库边运行工程
- The global shader cache file'X:/XXXX/GlobalShaderCache-PCD3D_SM5.bin' is missing——UE4工程运行失败