更新到修订版 30 后缺少“<sdk>/extras/google/google_play_services/libproject”文件夹
Posted
技术标签:
【中文标题】更新到修订版 30 后缺少“<sdk>/extras/google/google_play_services/libproject”文件夹【英文标题】:Missing "<sdk>/extras/google/google_play_services/libproject" folder after update to revision 30 【发布时间】:2016-09-15 14:14:56 【问题描述】:我使用 android SDK Manager 将 Google Play Services 版本从修订版 29 更新到了 30,但更新后目录 "<sdk>/extras/google/google_play_services/libproject"
消失了,只留下目录“docs”和“samples”。
我已经尝试卸载并重新安装了几次,但总是碰巧错过目录“libproject”。
有人在更新时遇到过这个问题吗?
我正在使用 Debian Linux 8.4 (jessie),但不相信它与问题有关。
【问题讨论】:
在 rev 30 到达之前,我在许多游戏中使用 rev 29 并且工作正常,但是当 rev 30 到达时 rev 29 不起作用,然后我更新到 rev 30 现在广告再次工作,似乎 rev 29 和波纹管没有不工作了,顺便说一下我用的是unity3d @Yogi。当我这样做时,我在这两个上得到一个 No Resource Found 错误:'@android:style/Theme.Holo.Light.DialogWhenLarge.NoActionBar' 和 '@android:style/Theme.Material.Light.DialogWhenLarge.NoActionBar'。您是如何克服这个问题的? 【参考方案1】:看起来 Google 刚刚将 Google Play 服务分解为多个库。如果您还通过 SDK 管理器更新了 Google Repository
,您将在 <sdk>/extras/google/m2repository/com/google/android/gms
中找到它们。
各个库采用aar
格式,因此您必须自己提取jar
,如果这是您所追求的。
【讨论】:
如何在 Eclipse 中使用这些。我有一个遗留项目因此而中断。 步骤如下: 1. 将 .aar 重命名为 .zip 2. 解压缩文件 3. 创建一个“libs”文件夹并将 classes.jar 文件移动到其中 4. 将项目导入 Eclipse通过使用现有源代码中的新建 -> 项目 -> Android 项目 5. 转到项目的属性并设置构建目标和“是库”标志 我在哪里可以找到这方面的信息?我觉得谷歌在不让人们知道的情况下这样做很荒谬......更不用说,他们还没有用这些信息更新他们的网站...... @Cigogne Eveillée classes.jar 文件中的类被混淆并重命名,无法导入 AdListener、AdRequest、InterstitialAd 等类 2016 年 7 月 16 日:google play services 31,没有 lib 项目并且使用 9.2.0、9.2.1 的 .aar 都不会提供要导入的类。如果想使用更新的 gms-ads 库并添加所有需要的项目库,请参阅本文,以便让它导入类,但仍然会导致 com.google.android.gms.ads.AdView 在 XML 中膨胀错误... ......最终的解决方案恢复到 28 或 29,如果你仍然想坚持使用迄今为止为 Android 开发人员优化和内存友好的 Eclipse....github.com/dandar3/android-google-play-services-ads【参考方案2】:我正在 Eclipse 中处理一个遗留项目,我以与其他项目略有不同的方式解决了这个问题。对我来说,使用 Google Play Services 修订版 29 中的项目时,我遇到了各种我无法解决的依赖问题。例如,它想要兼容库 v4,所以我导入了它,但即便如此它也找不到一些必需的资源。
但是,我能够使用 Revision 28 而不出现此类问题,并将我的应用程序的最低版本设置为 ICS。下面是第 28 版的链接。下载它,解压缩,然后将 libproject 文件夹解压缩到删除之前它通常所在的位置。
在 Eclipse 中导入项目(确保选择了复制文件),一切都会好起来的。
https://dl-ssl.google.com/android/repository/google_play_services_8298000_r28.zip
【讨论】:
谢谢,我已经尝试了 4 个小时来尝试其他解决方案,这是唯一有效的解决方案。永远感恩:) 谢谢先生!很遗憾 Google 的说明不起作用。 @Andrew S 您的解决方案对我有用,谢谢。我在回答中提供了一些关于如何实施解决方案的更多细节和屏幕截图,以防可以帮助其他人:***.com/questions/42979484/…。 @Jamie_montoya 很高兴您发现它很有用,但该问题需要标记为重复此问题。【参考方案3】:现在我使用此站点上提供的版本历史记录降级回修订版 29(并且运行良好):http://www.smorgasbork.com/2015/01/05/google-play-services-sdk-version-history
我相信由于更新的描述,这可能是 Google 将提供库(在 .aar 文件中)的新格式:
修订号 29 表示“客户端库和示例代码”,修订号 30 表示“javadocs 和示例代码”。
【讨论】:
【参考方案4】:m2repository 文件夹包含用于 android studio 的 aar 文件。如果您查看示例文件夹并打开一些示例应用程序 project.properties 文件,您将看到示例应用程序仍然引用 google-play-services_lib。这肯定会被谷歌修复,我也看到有人抱怨展示广告问题,所以他们可能很快就会回来更新。
【讨论】:
@jefferson_amarals,也许你是对的。他们可能将其删除的原因可能是因为集成 firebase 会导致 65k 参考限制。这就是为什么我们首先有单独的 API 库。如果你还需要这个lib,这家伙创建了一个eclipse lib项目,它集成了新播放服务的jar文件,其他API也可以使用相同的方法:github.com/dandar3/android-google-play-services-base另外,他写了一个关于如何提取的小教程这里需要来自 AAR 的 JAR:plus.google.com/112240505564011894075/posts/6zpkvmVtGhU【参考方案5】:我在 Google 移动广告 SDK 开发者论坛上 posted a question 讨论了这个问题。总结答案中的步骤(来自移动广告 SDK 团队的 Veer Busani):
我们绝不建议您重命名/编辑 Android SDK 的任何部分。如果您发现任何问题,请告诉我们,我们会进行调查。至于您的移动广告/Unity/Android 集成,我一定会帮助您。如果您使用的是 Google Play 服务修订版 30.0 (v 9.0),请按照以下步骤操作 - 创建一个新项目并导入移动广告Unity package。 复制我们的demo script,创建一个新的空游戏对象并将脚本添加为组件。 右键单击 Assets > PlayServicesResolver 文件夹并选择 Google Play Services > Resolve Client Jars。 Unity 中的 GMS 修订版 30 存在一个已知问题。要为 Android 构建,您需要选择 Assets > Plugins > Android > firebase-common-9.0.0.aar 文件,然后在 Unity Inspector 中取消选择 Android 插件平台部分。 最后,在您的 Player Settings 中编辑 Bundle Identifier,并将您的出色项目部署到您的 Android 设备上。
这行得通。
【讨论】:
移动添加与地图服务有什么关系?如果打算让应用程序带有地图,这似乎是一种非常复杂的方式。 @AndrewS:您的评论是此页面上对“地图”的唯一引用——无论是问题还是当前的任何答案都不是特定于地图的。这是关于 Google Play 服务的,它是移动广告支持(除其他外)所必需的。安装 GPS 的目的并不重要……安装并运行它是最终目标。这个答案是从支持论坛中的官方回复中总结出来的,所以任何令人费解的原因都是由于 SDK 的不幸的后 Google-I/O 推出。 我想这一年很公平。我认为这是一个以 Android 为中心的问题,但我认为它也适用于统一性,而且通常还增加了......以上是关于更新到修订版 30 后缺少“<sdk>/extras/google/google_play_services/libproject”文件夹的主要内容,如果未能解决你的问题,请参考以下文章