带有 Google Play 服务的 Android Studio
Posted
技术标签:
【中文标题】带有 Google Play 服务的 Android Studio【英文标题】:Android Studio with Google Play Services 【发布时间】:2013-05-13 13:17:06 【问题描述】:我正在尝试使用新的 android Studio 测试 Google Play 服务。 我有一个依赖于 google_play_services.jar 的项目。 但是当我尝试重建项目时,出现以下错误:
Information:[TstGP3-TstGP3] Crunching PNG Files in source dir: C:\Users\ans\AndroidStudioProjects\TstGP3\TstGP3\src\main\res
Information:[TstGP3-TstGP3] To destination dir: C:\Users\ans\AndroidStudioProjects\TstGP3\build\classes\res-cache\TstGP3-TstGP3
Information:Compilation completed with 2 errors and 0 warnings in 2 sec
Information:2 errors
Information:0 warnings
C:\Users\ans\.AndroidStudioPreview\system\compiler\tstgp3.3f17bd41\.generated\Android_BuildConfig_Generator\TstGP3-TstGP3.74fc5b25\production\com\example\tstgp3\BuildConfig.java
Error:Error:line (4)error: duplicate class: com.example.tstgp3.BuildConfig
C:\Users\ans\.AndroidStudioPreview\system\compiler\tstgp3.3f17bd41\.generated\aapt\TstGP3-TstGP3.74fc5b25\production\com\example\tstgp3\R.java
Error:Error:line (10)error: duplicate class: com.example.tstgp3.R
它似乎有两个 BuildConfig 文件和两个 R 类。我该如何解决这个问题?
编辑:
我注意到编译器编译了两个 R.java 文件:一个位于我的项目文件夹中,另一个位于文件夹 %USERPROFILE%.AndroidStudioPreview 所以,我试图在编译器设置中排除这个“预览”文件夹,现在它可以工作了。 此问题仅在我开始在我的项目中使用 Google Play 服务类之后才会出现。 如果有人能解释这个问题背后的原因,我将不胜感激。
【问题讨论】:
任何人都可以帮助这个 compile 'com.google.android.gms:play-services:6.5.87' 添加到 android studio 中的依赖项部分。我们也可以添加罐子,但上面的行做了什么,因为我们没有添加罐子。 【参考方案1】:我将播放库文件从 google-play-services_lib 复制到我的项目库目录:
google-play-services.jar google-play-services.jar.properties。然后选择它们,右键单击,“添加为库”。
【讨论】:
感谢您的回答,但它对我不起作用 - 这与我之前尝试过的类似。 这个建议与我在别处读到的其他信息背道而驰。第一个答案中链接的答案已被弃用,因为它使用了这种方法。【参考方案2】:已编辑:这家伙真的把它带回家了,并且有一个很好的小教程 http://instantiatorgratification.blogspot.com/2013/05/google-play-services-with-android-studio.html
附注:我玩了这么多,我需要做一个gradlew clean
才能让它成功运行
如果您已导入项目或正在使用位于 \extras\google\google_play_services\samples\maps 的 Sample Maps 应用程序工作,请查看本教程。
https://***.com/a/16598478/2414698
如果您是从头开始创建一个新项目,请注意 Xav 在同一篇文章中的 cmets。他描述了 Android Studio 使用不同的编译器,并且您必须手动修改 build.gradle 文件。我成功地做到了这一点。我复制了
google-play-services.jar google-play-services.jar.properties进入我的 lib 目录并将以下内容添加到我的 build.gradle 文件中
dependencies
compile files('libs/android-support-v4.jar')
compile files('libs/google-play-services.jar')
另外,如果这是一个新项目,也请查看这篇文章。
https://***.com/a/16671865/2414698
【讨论】:
您链接到的文章现已弃用。不推荐使用此解决方案。【参考方案3】:这些答案中的大多数仅解决编译时依赖关系,但您会在运行时发现大量 NoClassDef 异常。那是因为您需要的不仅仅是 google-play-services.jar。它引用了作为库项目一部分的资源,如果您只有 jar,则这些资源不会正确包含。
最适合我的是首先在 Eclipse 中正确设置项目。将您的项目结构化,使其同时包含您的应用程序和库,如下所述:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-project-setup
然后从 Eclipse 中导出您的应用项目,并导入 Android Studio,如下所述:http://developer.android.com/sdk/installing/migrate.html。确保同时导出您的应用项目和 Google Play 服务库项目。导入时它将检测库项目并将其作为模块导入。我只是在项目导入过程中接受了所有默认值。
【讨论】:
谢谢,但我不想使用 eclipse!【参考方案4】:在执行以下操作后,我已经完成了这项工作:
将 google-play-services-lib 作为模块(注意模块和项目之间的区别),然后将 google-play-services.jar 添加到模型“libs”目录中。 之后,通过创建库将 jar 添加到构建路径或将 jar 添加到另一个库。我通常有一个 IDEA 库,我将所有 /libs/*.jar 文件添加到其中。 通过模块设置 (F4) 将库添加到您的模块构建路径。 将 google-play-services-lib 作为模块依赖项添加到您的项目中。 完成!注意:这也不会给我运行时异常,它可以工作。
【讨论】:
我得到同样的错误:R.java 和 BuildConfig.java 重复 你有这个模块作为编译依赖吗? 是的!唯一的解决方案是我之前提到的那个(不包括预览文件夹)【参考方案5】:所有这些答案都是错误的,因为 gradle plugin v0.4.2 的发布在 android studio 下设置 google play 服务是直截了当的。您无需导入任何 jar 或添加任何项目库,也无需在 android studio 下添加任何新模块。您要做的就是将正确的依赖项添加到 build.gradle 文件中。请查看这些链接:Gradle plugin v0.4.2 update、New Build System 和 this sample
正确的方法如下:
首先,您必须启动 sdk 管理器并下载并安装位于“extras”下的以下文件:Android 支持库、Google play services ,谷歌存储库。
重启 android studio 并打开 build gradle 文件。您必须修改您的 build.gradle 文件,使其在依赖项下如下所示:
dependencies
compile 'com.google.android.gms:play-services:6.5.87'
最后同步您的项目(AVD 管理器左侧的按钮)。
从 6.5 版开始,您可以包含完整的库(非常大)或仅包含您需要的模块(最佳选项)。也就是说,如果您只需要 Google Maps and Analytics,您可以将前面的示例替换为以下示例:
dependencies
compile 'com.google.android.gms:play-services-base:6.5.87'
compile 'com.google.android.gms:play-services-maps:6.5.87'
可以找到完整的依赖列表here
一些旁注:
使用最新的播放服务库版本。如果是旧版本,android studio 会高亮显示。截至今天(2 月 5 日是 6.5.87),但您可以在Gradle Please 上查看最新版本在对 Android Studio 进行重大更新后,按照@user123321 在 cmets 中建议的后续说明清理重建项目
cd 到你的项目文件夹 ./gradlew 清洁 ./gradlew 构建
【讨论】:
嘿,埃斯托尼诺。我也看到了这个更新,但我想知道 Android Studio(至少是 IDE 本身)如何获取依赖项?你是否让它只使用 Gradle 设置? 是的,它对我有用。 IDE 还能够解析新名称。谢谢。 抱歉回复晚了。当您按下同步按钮时,ide 会自动添加新的依赖项。管理 ide 行为的是构建系统,不鼓励以“旧”理念风格对项目进行更改(我的意思是更改模块和项目配置)。我很高兴它对你有用。 确保你 ./gradlew clean 然后 ./gradlew build 在 android studio 2.x 获取依赖之前。否则你会得到一个 NoClassDef 错误 截至今天,我得到的最新版本是 5.2.08【参考方案6】:Android Studio 中的 Google Play 服务集成。
第 1 步:
SDK manager->Tools Update this
1.Google play services
2.Android Support Repository
第 2 步:
chance in build.gradle
defaultConfig
minSdkVersion 8
targetSdkVersion 19
versionCode 1
versionName "1.0"
dependencies
compile 'com.android.support:appcompat-v7:+'
compile 'com.google.android.gms:play-services:4.0.+'
第 3 步:
android.manifest.xml
<uses-sdk
android:minSdkVersion="8" />
第 4 步:
Sync project file with grandle.
wait for few minute.
第 5 步:
File->Project Structure find error with red bulb images,click on go to add dependencies select your app module.
Save
如果您需要帮助,请发表评论。 编码愉快。
【讨论】:
【参考方案7】:-
转到文件 -> 项目结构
选择“项目设置”
选择“依赖项”选项卡
点击“+”并选择“1.Library Dependencies”
搜索:com.google.android.gms:play-services
选择最新版本并点击“确定”
瞧!无需与 Gradle 斗争 :)
【讨论】:
这对我有用,而且非常简单。它已经知道最新的 play-services 版本号——你只需从列表中选择它,gradle 文件就会为你修改! 我可以用同样的方法导入排行榜的BaseGameUtils吗? 是的,艾哈迈德。这样你就可以导入任何Android库了。 简单、优雅的解决方案。感谢@IvoStoyanov,它将为像我这样的初学者节省大量时间。【参考方案8】:上述解决方案都不适合我。不确定它是特定于我的设置还是新版本。
我使用的是 Android Studio Beta 0.8.9,但按照以下说明在库列表中没有看到任何 com.google.android.gms:play-service:
转到文件->项目结构->选择项目设置->选择“依赖项”选项卡单击“+”-> 1.库依赖项->选择com.google.android.gms:play-services:+
我已经这样做了:
首先,您必须启动 sdk 管理器并下载并安装位于“extras”下的以下文件:Android 支持存储库、Google Play 服务、Google 存储库。
解决的方法是从 SDK 管理器添加“Froyo 的 Google Play 服务”,然后重复第一步。
没有正确理解原因,但这有效。
PS:我刚刚观察到,即使现在我搜索播放服务时也不会出现,但是当我直接滚动并查看列表时,它就在那里。
【讨论】:
【参考方案9】:关注这篇文章->http://developer.android.com/google/play-services/setup.html
你应该选择Using Android Studio
示例 Gradle 文件:
注意:在你的应用模块中打开 build.gradle 文件 目录。
apply plugin: 'com.android.application'
android
compileSdkVersion 20
buildToolsVersion "20.0.0"
defaultConfig
applicationId "applicationId"
minSdkVersion 14
targetSdkVersion 20
versionCode 1
versionName "1.0"
buildTypes
release
runProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
dependencies
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:20.+'
compile 'com.google.android.gms:play-services:6.1.+'
您可以在这里找到最新版本的 Google Play 服务:https://developer.android.com/google/play-services/index.html
【讨论】:
【参考方案10】:打开您的项目 build.gradle 文件并在依赖项模块下添加以下行。
dependencies
compile 'com.google.android.gms:play-services:7.0.0'
如果您不想集成完整的库,下面将添加 Google Analytics 和 Maps
dependencies
compile 'com.google.android.gms:play-services-analytics:7.0.0'
compile 'com.google.android.gms:play-services-maps:7.0.0'
【讨论】:
【参考方案11】:在我的情况下,google-play-services_lib 在我的项目中集成为 Google 地图和 GCM 的模块(外部库)。
现在,这些时间需要实现 Google Places Autocomplete API,但问题是代码是新的,我的库是旧的,所以找不到某些类:
按照这些步骤...
1> 将 Google play 服务 更新到 SDK 管理器中
2> 选择 google play 服务的新 .jar 文件 (Sdk/extras/google/google_play_services/libproject/google-play-services_lib/libs) 替换为旧的
我成功了……!!!
【讨论】:
以上是关于带有 Google Play 服务的 Android Studio的主要内容,如果未能解决你的问题,请参考以下文章
带有 Unity 的 Google Play 服务 - 登录没有任何结果
带有 Google Play 服务位置的 Android 服务导致应用程序随机打开