android 4.0.1源码编译,学习错误解决

主机是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


解决:是使用的系统 fedora的问题,在fedora中suselinux默认设置了一些权限

在这里可以通过执行  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 4.0.1源码编译,学习错误解决_第1张图片

问题八:修改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是可以安装的。


你可能感兴趣的:(android,File,processing,Signal,linux内核,linker)