Android系统学习(一)------编译系统Android7.0

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Guet_Kite/article/details/86602395

你好!这里是风筝的博客,

欢迎和我一起交流。


最近入手了一块nanopi m4,这块板子的芯片是rk3399,而且板子开放有源码,正好拿来学习安卓系统!

板子wiki:http://wiki.friendlyarm.com/wiki/index.php/NanoPi_M4/zh

从GitHub上下载了他的源码,给的是安卓7.0,他的编译脚本是build-nanopc-t4.sh文件,执行编译就好了,按照wiki教程,执行加-F -M选项,对应脚本里:

	while true; do
		case "$1" in
			-a ) BUILD_ANDROID=true;    shift 1;;
			-B ) BUILD_UBOOT=true;      shift 1;;
			-K ) BUILD_KERNEL=true;     shift 1;;
			-W ) BUILD_WIFI=true;       shift 1;;
			-F|--all)
				 BUILD_UBOOT=true;
				 BUILD_KERNEL=true;
				 BUILD_WIFI=true;
				 BUILD_ANDROID=true;
				 shift 1;;
			-M ) MAKE_RKDEV_IMG=true;   shift 1;;
			-u ) GEN_UPDATE_IMG=true;   shift 1;;

			-h ) usage; exit 1 ;;
			-- ) shift; break  ;;
			*  ) echo "invalid option $1"; usage; return 1 ;;
		esac
	done

说以-F是把UBOOT、KERNEL、WIFI、ANDROID都编译 一遍,然后-M对应的是MAKE_RKDEV_IMG,这个应该是把之前编译的东西都做成img文件。

我是在虚拟机里编译,ubuntu16.04,分了4G内存和120G硬盘,编译好后Android源码大概八十多 G大小,耗时八个多小时。

编译安卓7.0时候出现一个小错误,大概如下:

Out of memory error (version 1.2-rc4 'Carnac' (298900 f95d7bdecfceb327f9d201a1348397ed8a843843 by android-jack-team@google.com)).
GC overhead limit exceeded.
Try increasing heap size with java option '-Xmx<size>'.
Warning: This may have produced partial or corrupted output.

这是因为安卓7是用jack编译的,“Jack server的安装和启动是在编译安卓系统后自动执行的,安卓编译的过程中会通过prebuild/sdk/tools目录中的jack-admin脚本来运行。”网上有很多答案,按照网上给的答案来弄:

修改Jack的配置文件prebuilts/sdk/tools/jack-admin
这是一个管理Jack的shell脚本,找到start-server函数,直接修改其启动参数,由原来的
JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME"
更改为
JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096m -cp $LAUNCHER_JAR $LAUNCHER_NAME"

然后reboot重启虚拟机编译,发现不行,编译的时候卡在一个,卡住不动了,忘记截图了,然后网上找了好多文章都没有说,最后发现一个哥们和我一样的情况,他猜测说应该是4g(4096m太大了),毕竟我给虚拟机也是分配了4G内存,最后改成3G就好了,也就是改为:
sudo vi prebuilts/sdk/tools/jack-admin

JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx3g -cp $LAUNCHER_JAR $LAUNCHER_NAME"

这个大概在454行左右吧,改完后reboot重启虚拟机继续编译就好了,有时候他编译一个文件要好久,不要理它,期初我看它卡在 一个地方好久,我以为卡住了,等了半天,进度终于动了!
恕我直言,这个jack真难用,怪不得Google后来就抛弃了,而且在Android7.0里面我想禁止jack都不行,而且这玩意贼占内存,编译完了还不释放,alt+f2打开运行窗口,在里面输入gnome-system-monitor命令可以看到,占用内存非常大。
手动杀掉jack-server:./prebuilts/sdk/tools/jack-admin stop-server
启动时可以:./prebuilts/sdk/tools/jack-admin start-server
当然也可以查看已运行的Server:jack-admin list-server
关于jack可以看:Android下的Jack-Jill初探

最后编译完成后所有img文件都在rockdev/Image-nanopc_t4/ 子目录下。

nanopi m4要启动Android系统的话需要emmc,所有要先使用win32diskimager工具在电脑上把一个带eflasher的固件烧写到SD卡里,然后就可以把我们刚刚编译好的安卓源码里的img文件复制到SD卡里了。
5

把SD卡和emmc都插上,板子会自动从SD卡启动,就会运行SD卡里的eflasher工具,我们就可以操作eflasher工具把所有img文件写到emmc里,写完后掉电拔掉SD卡,再重新上电,就可以在屏幕看到启动了我们编译好的Android系统了!

参考:自己动手编译Android源码(超详细)
Android 7.0系统源码下载\编译

展开阅读全文

学习android系统

01-20

各位IT界的前辈们,有谁能够在我学习android系统之前给我些好的学习建议?我是一个初入IT界的后生晚辈,在2015年上半年想去捣腾下android系统。这个是我在我校图书馆找到的一些书籍,各位前辈、同行可以看看,觉得我适合去看那本书或者各位向我推荐适合我看的书籍。谢谢各位rn我自己在图书馆找到书籍有:《android UI基础教程》 2012年10第一次出版rn《android编程入门很简单》 2012年8月第一次出版rn《android游戏编程之从零开始》 2011年10月第一次出版rn《android开发精要》 2012年8月第一次出版rn《android 4编程入门经典——开发智能手机与平板电脑应用》 2012年11月第一次出版rn《Google android揭秘》 2010年4月第一次出版rn《android移动应用开发——基于adobe AIR》 2012年7月第一次出版rn《android SDK程序设计与开发范例》 2013年1月第一次出版rn《Google android开发入门指南(第二版)》 2009年1月第一次出版rn《android扳机支持与硬件相关子系统》 2013年10月第一次出版rn《android核心原理与系统级应用高效开发》 2012年7月第一次出版rn《android 4游戏编程入门经典》 2012年11月第一次出版rn《android移动应用设计与开发》 2012年9月第一次出版。 rnrn[align=center][color=#FF0000][size=24px]为什么我的眼里常含泪水?[/size][/color][/align]rn[align=center][color=#FF0000][size=24px]因为我对着土地爱得深沉。[/size][/color][/align]rn[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/1.gif][/img][img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/1.gif][/img][img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/1.gif][/img][img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/1.gif][/img][img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/1.gif][/img][img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/1.gif][/img][img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/monkey/1.gif][/img] 论坛

没有更多推荐了,返回首页