Google的instructions for using the Play Service API(例如)说:
Copy the /extras/google/google_play_services/libproject/google-play-services_lib library project into the source tree where you maintain your Android app projects.
Note: You should be referencing a copy of the library that you copied to your source tree—you should not reference the library from the Android SDK directory.
这对我来说似乎很难看 – 为什么不从SDK目录中引用它?这有什么技术原因吗?或者是否可以明确控制何时升级?
问题是该库除源代码外还包含资源. Eclipse只能处理打包为jar文件的库,为了Android开发的目的,它不能包含资源.
因此,为了将库的资源编译到应用程序中,必须将库的源代码与资源一起添加到项目中.
如果您将构建移动到Maven,并使用“理解”Maven的IDE,那么您可以将包含资源的库编译为“apklib”,并以类似于jar文件的方式将其视为外部库.
新的基于Gradle的构建系统是基于Maven原语构建的,但是使用了不同的格式,’aar’.希望它最终还能支持apklib,以便Maven构建和Gradle构建可以互操作.
我刚刚完成了将Android应用程序转换为Maven构建的练习,包括使用一些apklibs.我可以告诉你,带有m2eclipse插件的Eclipse不能正确处理apklib. IntelliJ和新的Google Android Studio(基于IntelliJ)都可以毫无问题地处理apklib.