如何在Android Studio中使用Google Maps Api v2创buildAndroid应用程序?

在Android Studio中尝试使用GoogleMap创build应用程序时遇到了很多麻烦。

在使用Eclipse作为我的IDE之前(几乎)没有任何问题,我遵循以下指南:

https://developers.google.com/maps/documentation/android/start

我之前从来没有使用过Android Studio,并且在整个项目/模块范例中遇到困难。

我无法成功configurationGoogle Play服务SDK http://developer.android.com/google/play-services/setup.html

这是我得到的奇怪的错误之一:

摇篮: 
失败:生成失败,出现exception。

 * 什么地方出了错:
执行失败的任务':MyMapApp:compileDebug'。
 >编译失败; 详细信息请参阅编译器错误输出。

 *尝试:
运行--stacktrace选项来获取堆栈跟踪。 运行--info或--debug选项来获得更多的日志输出。

最后,我设法使用Android Studio运行GoogleMapsAPIv2项目。

编辑:正如Xavier所述,这种方法只适用于非Gradle项目。 本教程中使用的UI部分将从AndroidStudio中排除。 所以如果你有自己的使用Gradle构build系统的项目,你需要手动修改build.gradleconfiguration文件,因为Android Studio UI不会影响它。

编辑2:随着AndroidStudio v0.1.1发布,负责模块依赖的UI部分已经被淘汰,所以现在我们需要通过build.gradle文件手动更新依赖。 用于更改gradle依赖关系的UI将在下一个版本中发布

编辑3:对于那些仍然试图使用这种方法 – 请注意,它已经过时,不再工作

这是我做的:

1)我从Google Play服务示例中获取maps项目并将其复制到单独的目录中。 这将是我们将尝试运行的我们的MapsApiV2项目。 在我的Mac上,它位于<sdk_location>/extras/google/google_play_services/samples我将它放在~/Work/stack/

2)复制google-play-services_lib项目目录到相同的地方( ~/Work/stack ),所以我的工作目录看起来像这样。 顺便说一下,lib项目位于<sdk_location>/extras/google/google_play_services/libproject在这里输入图像描述

3)现在让我们打开Android Studio。 在欢迎屏幕上按Import Project并从~/Work/stack/maps导入我们的maps项目。 现在我们看到很多关于GMS库的未知引用的抱怨:

在这里输入图像描述

4)现在我们需要添加Google Play服务作为参考库。 去View -> Open Module Settings

5)在Modules选项卡上,单击+button并selectImport Module并导入您的GooglePlayServices库。 我没有改变任何东西,所以点击Next到最后:

在这里输入图像描述

6)现在你需要引用这个导入的库。 再次打开此屏幕(转到View -> Module Settings )。 确保你有你的maps项目和Dependency选项卡。 点击+添加依赖项,然后selectLibrary 。 在那里select你的input库:

在这里输入图像描述

7)现在我们可以看到它不是在抱怨GMS库,而是抱怨支持库:

在这里输入图像描述

8)我们来修复它。 我的支持库位于<sdk location>/extras/android/support/v13/android-support-v13.jar 。 所以我们尝试将其添加到我们的工作区。 转到View -> Open Module Settings然后selectLibraries选项卡。 select+ – > Java并select支持库:

在这里输入图像描述

9)现在要问你哪个项目添加这个lib,所以确保你select了你的maps项目:

在这里输入图像描述

10)此时代码应该编译没有问题。 只要确保你在Manifest中定位了正确的SDK版本。

玩的开心

除了我正在创build一个新的项目,我遵循了相同的指示。 在项目结构下,我删除了Android-Gradle方面,并且能够成功构build。 可以select更新Gradle构build文件并将Android-Gradle构件添加到播放服务库中。

注:我更改了Google Play服务目录的名称。

为Google Play服务库build.gradle

 apply plugin: 'android-library' buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.4' } } dependencies { compile files('libs/android-support-v4.jar') compile files('google-play-services.jar') } android { compileSdkVersion 17 buildToolsVersion '17.0.0' sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aild.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] } } } 

build.gradletesting应用程序。

 buildscript { repositories { maven { url 'http://repo1.maven.org/maven2' } } dependencies { classpath 'com.android.tools.build:gradle:0.4' } } apply plugin: 'android' dependencies { compile files('libs/android-support-v4.jar') compile project(':lib-google-play-services') compile files('../lib-google-play-services/libs/google-play-services.jar') } android { compileSdkVersion 17 buildToolsVersion "17.0.0" defaultConfig { minSdkVersion 11 targetSdkVersion 16 } } 

我已经尝试过很多关于此的教程,但最终find了一个似乎适用于Android Studio和Gradle的简单解决scheme

我刚刚在我的Mac上安装了Android Studio 0.2.3,这些步骤使我能够在新的Hello World项目模板上查看地图片段:

1)单击Android Studio工具栏中的SDKpipe理器button。

2)在“Extras”下find“Google Play服务”并下载。

3)在您的src目录的build.gradle文件中,将这一行添加到依赖关系:

 compile 'com.google.android.gms:play-services:3.1.36' 

4)按照本教程的顺序安装您的API密钥: https : //developers.google.com/maps/documentation/android/start#the_google_maps_api_key

5)添加片段到你的布局xml:

 <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" android:name="com.google.android.gms.maps.MapFragment"/> 

6)你现在应该能够在你的设备上运行你的项目。

以下是我在Android Studio 0.2中使用Google Maps API V2一个项目的configuration,其中包含gradle 0.5.+. 还有其他模块,如ActiobarSherlock和一个自定义的ActiobarSherlock被使用,我只是让他们以防万一有人需要他们。

项目结构:

在这里输入图像描述

1)TOP目录settings.gradle:

 include ':SuperModule', ':libraries:actionbarsherlock', ':libraries:numberPicker' 

2)TOP目录build.gradle

 task assemble {} 

(你们中的一些人可能面临着找不到的任务,那就是为什么你放这个线!)

3)超级模块build.gradle

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.5.+' } } apply plugin: 'android' dependencies { compile 'com.google.android.gms:play-services:3.1.36' compile 'com.android.support:gridlayout-v7:13.0.0' compile project(':libraries:actionbarsherlock') compile project(':libraries:numberPicker') } android { compileSdkVersion 17 buildToolsVersion "17.0.0" defaultConfig { minSdkVersion 8 targetSdkVersion 16 } } 

注意这里的依赖关系。 它的actiobarSherlock(ABS)和NumberPicker,用作android库。 我也使用播放服务(这就是为什么min sdk必须> = 8),和布局库(对于空间元素)支持库不包括在这里,因为它包含在ABS库!

Actionbar Sherlock build.gradle:

 buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.5.+' } } apply plugin: 'android-library' dependencies { compile 'com.android.support:support-v4:13.0.0' } android { compileSdkVersion 17 buildToolsVersion "17.0.0" defaultConfig { minSdkVersion 7 targetSdkVersion 16 } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' java.srcDirs = ['src'] resources.srcDirs = ['src'] aidl.srcDirs = ['src'] renderscript.srcDirs = ['src'] res.srcDirs = ['res'] assets.srcDirs = ['assets'] } instrumentTest.setRoot('tests') } } 

NumberPicker build.gradle没有显示,因为它具有与其他逻辑相同的逻辑。

我写了一篇文章,并使用Location界面和Google Maps API创build了一个地图应用程序。 这将通过我尝试启动和运行地图应用程序时遇到的许多特殊情况,包括哪些SDK要包含,要导入哪些库,在Android清单中设置什么以及如何更改gradle文件。 希望这可以帮助

http://www.todroid.com/how-to-create-a-google-map-application-using-android-studio/

我有一个类似的问题,但它只是它找不到com.google.android.gms.maps包(它一直说它不存在)。 这是在我根据Google自己的文档上的迁移教程正确导入了所有内容之后( http://developer.android.com/sdk/installing/migrate.html);

无论如何,导入一切后,我仍然有问题,不知道如何设置构buildpath(或非eclipse等效)。

我只需按照以下一半的教程,删除已在模块设置窗口中列出的google-play-services库,然后重新添加。

我希望这对其他人有用。

我也有类似的问题,我解决了像库导入google_play_services.jar而不是谷歌播放服务项目像一个模块。