Android可以通过use library来引用另一个Project,实际开发过程中遇到了很多稀奇古怪的问题,总结如下:
1. 通常情况下library 工程的AndroidManifest.xml中的 <uses-permission>、<meta-data> 等元素会被merge 到主工程的AndroidManifest.xml中,但是像<service>、<receiver>、<activity>等元素却不会merge过去。不知道是什么原因,Android 真TMD要逆天了。
2. library 工程的assets目录下的文件也不会自动merge 到主工程。
解决办法:
1. 在主Project的project.properties里加上如下一句,编译时就可以自动合并library 工程和主工程的manifest 文件了。
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
# Project target.
<span style="background-color: rgb(255, 255, 102);">manifestmerger.enabled=true</span>
2. 实际编译过程中可能会报错:You should be confirmed some point like ADT version, Also Minimum and target SDK should be same as library project.你应该确保adt版本ADT(可能是 20.0.1以上),并且两个工程的<uses-sdk>必须保持一致。
<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="19"/>