5

Google使用 Play Service API 的说明(例如)说:

将 /extras/google/google_play_services/libproject/google-play-services_lib 库项目复制到您维护 Android 应用项目的源代码树中。

注意:您应该引用复制到源代码树的库的副本——您不应该引用 Android SDK 目录中的库。

这对我来说似乎很难看 - 为什么不从 SDK 目录中引用它呢?这有什么技术原因吗?还是您可以明确控制它何时升级?

4

2 回答 2

4

需要指出的是,这完全是Eclipse的局限,确实丑陋。

问题是这个库除了源代码之外还包含资源。Eclipse 只能处理打包为 jar 文件的库,这些库对于 Android 开发来说是不能包含资源的。

因此,为了将库的资源编译到应用程序中,必须将库的源代码与资源一起添加到您的项目中。

如果您将构建移至 Maven,并使用“理解”Maven 的 IDE,那么您可以将包含资源的库编译为“apklib”,并将其视为外部库,其方式类似于 jar 文件。

新的基于 Gradle 的构建系统基于 Maven 原语构建,但为此使用了不同的格式“aar”。希望它最终也将支持 apklib,以便 Maven 构建和 Gradle 构建可以互操作。

我刚刚完成了将 Android 应用程序转换为 Maven 构建的练习,包括使用一些 apklib。我可以告诉你,带有 m2eclipse 插件的 Eclipse 不能正确处理 apklibs。IntelliJ 和新的 Google Android Studio(基于 IntelliJ)都可以毫无问题地处理 apklib。

于 2013-05-28T02:02:06.963 回答
0

这与“播放服务库”无关。就像项目使用的任何其他库一样,该库应该从项目的源代码树中引用。

在这种情况下,外部库位于 Android SDK 目录中,从那里引用也不是一个好的做法。所以是的,它可以称为“技术原因”。

不应从项目的源代码树以外的任何地方引用已使用的库(在本例中为 Play Services 库)。

于 2013-05-27T23:47:02.503 回答