为什么 Google 建议将库复制到您的树中?

2024-05-15

谷歌的Play 服务 API 的使用说明 http://developer.android.com/google/play-services/setup.html(例如)说:

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

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

这对我来说看起来很丑——为什么不从 SDK 目录引用它呢?这有什么技术原因吗?或者您可以明确控制它何时升级?


我想指出,这完全是 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。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Google 建议将库复制到您的树中? 的相关文章

随机推荐

  • Symfony2动态添加事件监听器

    如何在不使用 services yml 模式的情况下动态地将事件侦听器 在我的例子中是一个学说事件 添加到内核 在深入研究了供应商目录之后 我自己找到了答案appProdProjectContainer php文件 如果您希望使用事件管理器
  • 如何在 Spring 3.1 中构造函数自动装配 HttpServletResponse?

    我有一个请求范围的 bean 并且需要访问 HttpServletResponse 和 HttpServletRequest 对象 我需要在构造函数中访问这些对象 因此属性自动装配不是一个选项 我做了以下事情 Component Scope
  • Chrome 版本 58 的 Redactor 编辑器文本格式问题

    我们正在使用编辑器 https imperavi com redactor https imperavi com redactor 版本 10 1 1 并且由于对项目的大量依赖而未迁移到 Redactor II 最近 我们在 Chrome
  • 更改 CSS 网格中的列顺序

    我正在研究 CSS 网格 当我在桌面尺寸上查看它时 min width 769px 我有单行三列 像这样的事情 col 1 col 2 col 3 我可以使用 css grid 移动列 以便我可以在移动布局上执行类似以下操作吗 col 1
  • Asp.Net Mvc 无法注销

    这是我的登录代码 var expire DateTime Now AddDays 7 Create a new ticket used for authentication var ticket new FormsAuthenticatio
  • 很奇怪!调用 window.location 或 location.replace 会重定向到该页面,然后再次返回!

    我处于调试模式 因此我可以看到正在访问哪个页面 当我打电话时window location or window location replace 它会转到该页面 然后返回原始页面 怎么会这样 解决方案是添加 window location
  • firebase匿名身份验证绑定到设备

    我正在开发一个用于公共信息的应用程序 所以不需要注册 但是 我想提供一些个性化服务 为了做到这一点 我需要将用户活动存储在服务器上 有没有办法允许用户匿名登录 但它与设备绑定 因此在用户删除或注销然后再次登录的情况下 他们仍然具有从 fir
  • 如何正确删除动画集中引用的 Raphael SVG 元素?

    我有一组动画 Raphael SVG 元素 我正在通过用户发起的 ajax 调用添加新元素并删除旧元素 我 set push 新元素 但因为我需要删除的元素通常不是集合中的最后一个元素 所以我使用 element remove 而不是 se
  • 更改 Bootstrap 工具提示显示/淡入和淡出的时间量

    我正在使用 Twitter Bootstrap 添加工具提示 是否可以添加一个属性来确定工具提示显示的时间 淡入和淡出所需的时间 span class myClass span Cheers Bootstrap 使用该类 fade用于工具提
  • std::forward_as_tuple 将参数传递给 2 个构造函数

    我想传递多个参数以便在函数内构造两个对象 以同样的方式std pair
  • 如何使用 Celery 多工作人员启用自动缩放?

    命令celery worker A proj autoscale 10 1 loglevel info启动具有自动缩放功能的工作人员 当创建多个工人时 me mypc projects x celery multi start mywork
  • C# 构建一个 webservice 方法,它接受 POST 方法,如 HttpWebRequest 方法

    我需要一个接受 POST 方法的 Web 服务 访问我的服务器正在使用 POST 方法 它向我发送了一个 xml 我应该用一些 xml 进行响应 另一方面 当我访问他时 我已经使用 HttpWebRequest 类进行了管理 并且工作正常
  • 为每行 NSTableView 文本着色

    我有一个 NSTableView 它显示我拥有的对象数组 对于每个对象 行 我想根据在每个对象上运行的函数的结果来更改显示的文本的颜色 因此 例如表中存在于另一个列表 或其他一些要求 中的所有对象 我想以绿色文本显示它们 不存在的对象以红色
  • 所有针对 iTunes Connect 的构建,导入此构建时出错 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我将构建上传到应用程序商店 之后它在活动中显示错误 任何人都可以帮帮我 SOLVED 转到构建设置 gt 搜索 bitcode gt 转启
  • 错误:找不到模块“jasmine-core”

    我安装了以下内容进行测试 devDependencies jasmine core 2 4 1 karma 0 13 22 karma jasmine 0 3 7 karma phantomjs launcher 1 0 0 运行后karm
  • 在常数空间中创建 1..N 的随机排列

    我正在寻找枚举固定空间中数字 1 N 的随机排列 这意味着我无法将所有数字存储在列表中 原因是 N 可能非常大 超过可用内存 我仍然希望能够一次遍历这样一个数字的排列 只访问每个数字一次 我知道对于某些 N 可以这样做 许多随机数生成器随机
  • 不可变的最终变量应该始终是静态的吗? [复制]

    这个问题在这里已经有答案了 在java中 如果一个变量是不可变的并且是final的 那么它应该是一个静态类变量吗 我问这个问题是因为每次类的实例使用它时创建一个新对象似乎很浪费 因为无论如何它总是相同的 Example 每次调用方法时都会创
  • 当表格在 IE 中获得焦点时,表格滚动条会向上跳跃

    问题 我有一个table有包装的div with overflow y auto 一旦table获得焦点 滚动条向上跳 我怎样才能防止这种情况发生 我经历过这种行为IE9 不在 Chrome 中 请注意 我已添加tabindex到桌子上 以
  • 位置数据 Google 照片 API

    当我通过 API 查询 Google 照片中的照片时 它不会返回与该图像关联的任何位置数据 当我在 Google Photos 中查看有关图像的信息时 我可以在地图上看到该位置 但是 API 没有给我这些坐标 mediaMetadata g
  • 为什么 Google 建议将库复制到您的树中?

    谷歌的Play 服务 API 的使用说明 http developer android com google play services setup html 例如 说 将 extras google google play service