41

我在尝试使用 GoogleMap 创建应用的 Android Studio 中遇到了很多麻烦。

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

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

我以前从未使用过 Android Studio,而且我在整个项目/模块范式上都遇到了困难。

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

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

摇篮:
FAILURE:构建失败并出现异常。

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

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

7 回答 7

55

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

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

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

EDIT3:对于那些仍然尝试使用这种方法的人 - 请注意它已经过时并且不再起作用

这是我所做的:

1) 我maps从 Google Play Services 示例中获取项目并将其复制到单独的目录中。这将是我们将尝试运行的 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 Projectmaps~/Work/stack/maps. 现在我们看到很多关于未知引用 GMS 库的投诉:

在此处输入图像描述

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

5) 在Modules选项卡上,单击+按钮并选择Import Module并导入您的 GooglePlayServices 库。我没有更改向导中的任何内容,因此Next一直单击到最后:

在此处输入图像描述

6) 现在你需要引用这个导入的库。再次打开此屏幕(转到View -> Module Settings)。确保您选择了maps项目和Dependency选项卡。单击+以添加依赖项并选择Library。在那里选择您导入的库:

在此处输入图像描述

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

在此处输入图像描述

8) 让我们修复它。我的支持库位于<sdk location>/extras/android/support/v13/android-support-v13.jar. 因此,让我们尝试将其添加到我们的工作区。转到View -> Open Module Settings并选择Libraries选项卡。选择+->Java并选择支持库:

在此处输入图像描述

9) 现在它会询问您将此库添加到哪个项目,因此请确保您已选择您的maps项目:

在此处输入图像描述

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

玩得开心

于 2013-05-16T22:22:28.797 回答
13

除了创建一个新项目外,我遵循了相同的说明。在项目结构下,我删除了 Android-Gradle 方面并能够成功构建。可以选择更新 gradle 构建文件并将 Android-Gradle 方面添加到播放服务库。

注意:我更改了 Google Play Services 目录的名称。

build.gradle用于 Google Play 服务库。

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.gradle用于测试应用程序。

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
    }
}
于 2013-05-23T12:23:55.150 回答
9

我已经尝试过很多关于这方面的教程但都失败了,但最终找到了一个似乎适用于 Android Studio 和 gradle 的简单解决方案

我刚刚在我的 Mac 上安装了 Android Studio 0.2.3,这些是让我在全新的 hello world 项目模板上查看地图片段的步骤:

1) 点击 Android Studio 工具栏中的 SDK 管理器按钮。

2) 在“Extras”下找到“Google play services”并下载。

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) 你现在应该可以在你的设备上运行你的项目了。

于 2013-08-07T21:30:34.887 回答
3

这是我制作的一个项目的配置,它使用Google Maps API V2, in Android Studio 0.2, withgradle 0.5.+.还使用了其他模块,如ActiobarSherlock, 和自定义NumberPicker,我只是留下它们以防有人需要它们。

项目结构:

在此处输入图像描述

1)TOP目录settings.gradle:

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

2) TOP 目录 build.gradle

task assemble {}

(你们中的一些人可能会面临未找到的任务。这就是你放这条线的原因!)

3) SuperModule 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 库。我还使用 Play Services(这就是为什么 min sdk 必须 >=8),并且布局库(用于空间元素)支持库不包含在此处,因为它包含在 ABS 库中!

操作栏 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 没有显示,因为它与其他具有相同的逻辑..

于 2013-07-15T20:43:36.497 回答
2

我写了一篇文章,并逐步使用 Location 接口和 google map api 创建了一个地图应用程序。这将经历我在尝试启动和运行地图应用程序时遇到的许多怪癖,包括要包含哪些 SDK、要导入哪些库、在 android 清单中设置什么以及如何更改 gradle 文件。希望这可以帮助

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

于 2014-01-05T19:46:59.383 回答
1

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

无论如何,在导入所有内容后,我仍然遇到问题并且不确定如何设置构建路径(或非 Eclipse 等效项)。

我只需要按照下面的教程进行一半,删除已经在模块设置窗口中列出的 google-play-services 库,然后再次添加它。

我希望这对其他人有用。

于 2013-05-16T22:45:30.693 回答
1

我也有类似的问题,我解决了导入 google_play_services.jar 之类的库而不是 google play services 项目之类的模块。

于 2013-05-18T19:24:24.270 回答