1.andrioid 2.2以上到版本需要ubuntu 64位的系统,android 4.1 需要jdk 1.6的(jdk 1.7不可以用)
2.剩下在编译过程中出现的错误,均为环境问题,因为很多工具lib包没有安装,比如,libstdc++.so.6 (这个文件是我在网上下载的),其他的都
可以使用sudo apt-get install 在联网的环境下安装。
3.中间有个过程出现STD.h找不到,这个是因为这个std文件包是android虚拟机要用到的,在源码编译中没有这个文件,所有我们需要将/usr/lib/下面的std文件拷贝到
当前编译的android/下面(skin文件同一级),然后进入skin里面将各个c,h文件中导入的std.h 文件编辑下,修改成/android/STD/STD.h 即可。
4.编译错误处理noproguard.classes-with-local.dex已杀死
错误现象描述:
Install: out/host/linux-x86/framework/dx.jar
Copy: dx (out/host/linux-x86/obj/EXECUTABLES/dx_intermediates/dx)
Install: out/host/linux-x86/bin/dx
target Dex: core
make: *** [out/target/common/obj/JAVA_LIBRARIES/core_intermediates/noproguard.classes-with-local.dex] 已杀死
开始怀疑是软件的环境没有搭建好导致或者工具的版本不对,后来通过free -m查到内存快被耗光但是虚拟内存为0。通过增加虚拟内存解决该问题。
增加虚拟内存的方法如下:
查看内存空间大小:free -m // m表示显示的字节单位是m(megabytes)
下面我们就来增加系统的 Swap 大小。
1.首先用命令free查看系统内 Swap 分区大小。
free -m
total used free shared buffers cached
Mem: 1002 964 38 0 21 410
-/+ buffers/cache: 532 470
Swap: 251 32 929
可以看到 Swap 只有251M,不符合 Oracle-xe-client 的安装要求。
2.创建一个 Swap 文件。进入根目录
mkdir swap
cd swap
sudo dd if=/dev/zero of=swapfile bs=1024 count=2100000
出现下列提示,上面命令中的 count 即代表swap文件大小。
记录了 2100000+0 的读入
记录了 2100000+0 的写出
2102400000 字节 (102 MB) 已复制,110.74704 秒,137 MB/秒
把生成的文件转换成 Swap 文件
sudo mkswap swapfile
Setting up swapspace version 1, size = 2102395 kB
no label, UUID=09fde987-5567-498a-a60b-477e302a988b
3.激活 Swap 文件。
sudo swapon swapfile
再次查看 free -m 的结果。
total used free shared buffers cached
Mem: 1002 967 34 0 22 410
-/+ buffers/cache: 534 467
Swap: 2053 32 2021
添加成功。
如果需要一直保持这个 swap ,可以sudo -s换到root
然后把它写入 /etc/fstab 文件。
/swap/swapfile swap swap defaults 0 0
这样开机后就可以使用这个swap了
4.扩展:
如果需要卸载这个 swap 文件,可以进入建立的 swap 文件目录。执行下列命令。
sudo swapoff swapfile
5.可以手动删除swapfile
rm swapfile
5、Error occurred during initialization of VM
Could not reserve enough space for object heap
从字面上看是在初始化java Vm的时候不能获取足够的堆空间,于是修改了build/core/definition.mk文件中的编译core.jar和framework.jar时需要的-JXmx为1024m,此参数代表编译上述两个包时需要的最大内存,此初始值为2048M,由于我的PC电脑总的内存才2G,系统运行会占据一部分内存,故编译android的时候肯定不会分配2G内存,
解决:
把build/core/definitions.mk 文件
第1528行:$(if $(findstring windows,$(HOST_OS)),,-JXms16M -JXmx2048M) \
改成: $(if $(findstring windows,$(HOST_OS)),,-JXms16M -JXmx1024M) \
6、running: java -Xmx2048m -jar out/host/linux-x86/framework/signapk.jar -w build/target/product/security/testkey.x509.pem build/target/product/security/testkey.pk8 /tmp/tmpgsmbIJ out/target/product/phs100/phs100-ota-eng.guihua.zip
Could not create the Java virtual machine.
make: *** [out/target/product/phs100/phs100-ota-eng.guihua.zip] ?? 1
解决 build/tools/releasetools/common.py
Try changing "java -Xmx2048m" in common.py to "java -Xmx1024m" if that fails try "java -Xmx512m" located in /build/tools/releasetools/common.py
grep用法:grep –rE sting ./*