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文件又回来咯:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通