android4.4系统源码编译(四)_问题总结


http://blog.csdn.net/duantihi/article/details/50263427


经过三个阶段的环境搭建、源码下载、编译,中间遇到不少问题, 现整理一下,供遇到类似问题的朋友参考:


1.找不到  linux/netfilter/xt_CONNMARK.h 文件

out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_CONNMARK.c:26:41: fatal error: linux/netfilter/xt_CONNMARK.h: No such file or directory
compilation terminated.
make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libext_intermediates/libxt_CONNMARK.o] 错误 1
make: *** 正在等待未完成的任务....
make: *** wait: 没有子进程。 停止。

原因分析:我在windows从百度网盘下载,拷贝到mac解压【由于Ubuntu解压报错】,再把mac目录挂载到ubuntu,再拷贝到ubuntu的其他目录;
由于mac系统文件名不区分大小写,android源码中有的目录下存在同名的文件,只有大小写不同,mac下解压出来就只剩一个小写的那个文件了,所以大写的文件就找不到了
解决方法:在ubuntu上下载网盘的文件,在ubuntu里解压;
参考链接:

2.build internal error
原因:内存不足导致, 原先 make -j8,改为 make -j4后可以了, 实在不行,可以试试 make
我的是2G内存。

3.build结束后,out/…/system/ 目录下没有生成system.img文件,其他都生成了
原因:不知
解决:单独生成 system.img,在mydroid目录下执行命令:  make systemimage

单独编出 system.img后,原来 /generic/userdata.img、ramdisk.img 不在了, 又单独生成这俩个个文件
PS:后来在网上找到方法,Android4.4的system.img路径默认不在 generic/下,而在out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img , 所以可以不单独编译的,只要把system.img拷贝到/generic目录下即可

4.执行 emulator 命令, 提示:emulator:未找到命令

解决:先执行如下两条命令命令:
.   build/envsetup.sh
lunch 1

再执行 emulator

最终运行成功:


5.修改后的apk无法push到模拟器: /system       read-only file system
解决:先 adb remount 【模拟器启动的情况下】
举例:修改了短信app的名称:


6.导入android 工程,报错,找不到某些依赖的类
步骤:
(1)在adb-bundle 的eclipse中导入 android project工程,如Launcher2【网上说要新建java工程,那个适用于导入全部源码,导入单独一个工程按导入普通android工程即可】,路径:packages/app/Launcher2
(2) Launcher.java 类报错
    找不到 : com.android.common.Search 类
解决方法:需要导入 该类所在的包: out/target/common/obj/JAVA_LIBRARIES/android-common-intermediates/classes.jar

参考:
前提:完整正确的编译了android源码,或者把别人编译好的完整的拷贝过来

测试Calculator,我最终导入的jar包:最终不报错了


7.调试单个app
动态联调遇到的问题:
按照上面的文章调试,debug时提示错误:
Failed to connect to remote VM. Connection refused.
拒绝连接
解决方法:
采用普通的调试方法,启动模拟器后,在eclipse的Device下能看到连接上的 模拟器, 点击对应的进程调试即可


8.ubuntu重启后 emulator无法启动 :
   调试、单独编译Calculator后,重启ubuntu,发现 system.img、userdata.img、disk.img 文件都没了
原因:网上下的remakesystem 脚本执行后把这些文件删掉了;

解决方法:重新 make
它自动仅编译缺少的部分,不会整个系统重新编译哦,10分钟就好了
img文件又回来咯:




原文地址:https://www.cnblogs.com/ztguang/p/12646440.html