昨天尝试按照周老师交给的方法,生成update-usb.zip这个压缩文件,因为这个文件可以直接烧录到板子中,但在我这边进行烧写的时候就出现错误,烧录步骤:
1.进入Android 源代码的目录,source build/envsetup.sh
2.lunch full_godbox-eng
3. source mk-ics.sh
之后提示Java Memory相关的异常,之后就去找王。感觉他对Android系统还是比较理解的,特别是对Makefile这些东西,研究得应该比较多,以下子就定位到了在哪个地方出了错。而我自己感觉这方面很有欠缺,很少尝试,自己跟一下错误的地方(首先查看mk-ics.sh,这个shell编程也不是太了解,感觉很多东西要学)。下次得自己尝试着看这些Makefile,shell 脚本了。编译还是出错,之后他去找师兄,师兄说你在压缩那行随便加个什么文件试试,尝试之后还是出错。
“你可以把你单独编译你那个模块,之后替换到板子上去。”
这确实可行,又省去了很多事情。
对于模拟器中可能会不一样,因为模拟器中每次启动时都会调用到system.img等,所以,需要每次都要像下面这样进行单独编译。
单独编译模块
android中的一个应用程序可以单独编译,编译后要重新生成system.img
在源码目录下执行
$ . build/envsetup.sh (.后面有空格)
就多出一些命令:
- croot: Changes directory to the top of the tree.
- m: Makes from the top of the tree.
- mm: Builds all of the modules in the current directory.
- mmm: Builds all of the modules in the supplied directories.
- cgrep: Greps on all local C/C++ files.
- jgrep: Greps on all local Java files.
- resgrep: Greps on all local res/*.xml files.
- godir: Go to the directory containing a file.
可以加—help查看用法
我们可以使用mmm来编译指定目录的模块,如编译联系人:
$ mmm packages/apps/Contacts/
编完之后生成两个文件:
out/target/product/generic/data/app/ContactsTests.apk
out/target/product/generic/system/app/Contacts.apk
可以使用
$ make snod
重新生成system.img,再运行模拟器
多与人交流,享受获取新知识的兴奋,感受自己的成长。加油