ubuntu下编译apps应用模块的一些问题总结
预编译: . build/envsetup.sh
默认情况下编译会生成apk 和 odex 两个文件,其中apk里面是不包含classes.dex文件的,因此不能直接安装,如果要得到一个完整的apk 需要更改mk文件,有两种办法:
1.只更改需要编译的app项目中mk文件,增加 LOCAL_DEX_PREOPT := false
2. 上面的办法只能更改一个项目,可以将整个framework的默认编译设置一下:
/build/core/java_library.mk
查找 LOCAL_DEX_PREOPT := true
修改为 LOCAL_DEX_PREOPT := false
/build/core/package.mk
查找 LOCAL_DEX_PREOPT := true
修改为 LOCAL_DEX_PREOPT := false
重新加载编译环境 source build/envsetup.sh
这样就不再需要单独为每个模块设置了。
需要注意的两点:
1.编译的时候需要修改代码文件,不然很可能out中得到的apk不是新的,一般来说当你发现mm很快结束,几乎没有打印出什么编译信息的时候你就得考虑是不是没有真正编译。
2.默认的app模块AndroidManifest.xml文件需要按照 常规eclipse项目的AndroidManifest.xml修改下,不然很可能在某些手机上不能安装(安装包解析失败),这主要是因为如下几个因素导致的:
android:versionCode="1"
android:versionName="1.0"
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
经过一晚的折腾,总算编译成功了,不容易啊,睡觉。