主机是fedora 14 linux内核2.6.35.6 swapon交换分区1.5G make -version 3.81(官方指定的make版本)jdk 1.6
磁盘预留空间大概需要大于13G
具体的编译步骤可参考
Fedora 15编译Android源代码
Android4.0.1 源码下载,模拟器编译和运行
问题1:
out/host/common/obj/JAVA_LIBRARIES/clearsilver_intermediates/classes) Unrecognized option : 9999999 make: *** [out/host/common/obj/JAVA_LIBRARIES/clearsilver_intermediates/javalib.jar] Error 41 解决:安装jdk,并正确设置环境变量,具体参考上面列出的第一篇文章 问题二: 缺少libgl1的包 解决:在fedora下使用 yum install mesa-libGL-devel即可 问题三:Processing target/product/generic/dex_bootjars/system/framework/core.jar+ n s# Z5 J5 e8 j/ M. L) w. c( f
host/linux-x86/bin/dexopt: error while loading shared libraries: libdvm.so: cannot enable executable stack as shared object requires: Permission denied
在这里可以通过执行 setsebool allow_execstack=1
问题四:
/usr/bin/ld: note: 'XInitThreads' is defined in DSO /usr/lib/libX11.so.
6 so try adding it to the linker command line
/usr/lib/libX11.so.6: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
解决:
在文件development/tools/emulator/opengl/host/renderer/Android.mk中加入
LOCAL_LDLIBS += -lX11
问题五:out of memory 或者是 collect2: ld terminated with signal 9 [Killed]
解决:android在后面的编译阶段内存占用量很高,如果没有设置swap交换分区,或者分区太小都会导致上述错误 ,
# dd if=/dev/zero of=/opt/other/swapfile bs=1024 count=1536K
# mkswap /opt/other/swapfile
# swapon /opt/other/swapfile
# swapon -s
Filename Type Size Used Priority
/opt/other/swapfile file 1572860 0 -1
问题六:acp: file 'out/host/linux-x86/obj/EXECUTABLES/vm-tests_intermediates/tests/data' does not exist
解决:在相应位置建立data目录即可(我在第一次编译的时候遇到了这个问题,按照此方法解决后又出现其他问题,删除out目录后重新编译,没有出现此问题及后续问题)
问题七:llvm-rs-cc:permission denied
解决:你可以到相应文件夹下 out/host/linux-x86/bin/llvm-rs-cc,查看此文件,即使你将所有权限有效,在运行会出现cannot execute binary file llvm-rs-c c,我没有找到解决办法,只是把out目录删除,重新编译就没有出现此问题。也没有出现上面的问题六。
倒腾了两天,终于是编出来了。貌似android的编译不是每次编译都是一样的,所有有人一次成功,还有人要纠结很久。贴图一张,祝大家成功阿!
问题八:修改android代码的过程中再进行编译出现You have tried to change the API from what has been previously approved.(修改了frameworks/base)
解决:make update-api
问题九:当想测试一个内置的应用程序时,使用mmm编译packages/experimental/xxx文件夹,会在generic/system/app下生成apk文件以及同名的xxx.odx文件,但是这个apk文件是不可以直接安装的,安装时出错。logcat会显示does not include classes.dex。
解决:‘发现Android的ROM中有很多odex文件,相对于APK中的dex文件而言这个odex有什么作用呢? Android123提示大家,如果你仔细观察会发现文件名时一一对应的,同时那些对应的apk文件中没有dex文件。这样做可以使其厂商保证一定的反盗版,因为没有没有dex文件的apk是无法正常安装的,而厂商直接将odex和不完整的apk文件放到手机rom固化到/system/bin中可以让一般用户无法正常导出使用。’其实含有dex的文件在generic/obj/APPS下面的xxx_intermediates文件夹下,下面的xx.apk.unaligned和xxx.apk.unsingned是包含dex是可以安装的。