如何在Android Studio中创建使用Google Maps Api v2的Android应用程序?
我在安卓工作室尝试用谷歌地图创建一个应用程序时遇到了很多麻烦 使用Eclipse作为我的IDE之前,我遵循了以下指南(几乎)没有任何问题: 我以前从未使用过AndroidStudio,而且我对整个项目/模块范例有困难 我无法成功配置Google Play Services SDK 下面是我遇到的一个奇怪的错误: Gradle: FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':MyMapApp:compileDebug'. > Compilation failed; see the compiler error output for details. * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. 格拉德尔: 失败:生成失败,出现异常。 *出了什么问题: 任务“:MyMapApp:CompiledBug”的执行失败。 >编译失败;有关详细信息,请参阅编译器错误输出。 *尝试: 使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。如何在Android Studio中创建使用Google Maps Api v2的Android应用程序?,android,google-maps,android-studio,google-play-services,Android,Google Maps,Android Studio,Google Play Services,我在安卓工作室尝试用谷歌地图创建一个应用程序时遇到了很多麻烦 使用Eclipse作为我的IDE之前,我遵循了以下指南(几乎)没有任何问题: 我以前从未使用过AndroidStudio,而且我对整个项目/模块范例有困难 我无法成功配置Google Play Services SDK 下面是我遇到的一个奇怪的错误: Gradle: FAILURE: Build failed with an exception. * What went wrong: Execution failed for
最后,我设法使用Android Studio运行GoogleMapsAPIv2项目 EDIT:正如Xavier所提到的,这种方法只适用于非gradle项目。本教程中使用的UI部分将从AndroidStudio中排除。因此,如果您有自己的项目使用Gradle build system,则需要手动修改build.Gradle配置文件,因为Android Studio UI不会影响该文件。 EDIT2:随着AndroidStudio v0.1.1版本的发布,负责模块依赖关系的UI部分已被消除,因此现在我们需要通过build.gradle文件手动更新依赖关系。用于更改渐变依赖项的UI将在下一版本中发布 EDIT3:对于那些仍然尝试使用这种方法的人-请注意,它已经过时,不再有效了
task assemble {}
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
}
}
以下是我所做的:
1) 我从Google Play Services示例中获取了maps
项目,并将其复制到单独的目录中。这将是我们将要尝试运行的MapsApiV2项目。在我的Mac电脑上,它位于/extras/google/google\u play\u services/samples
我把它放在~/Work/stack/
2) 将google-play-services_lib
项目目录复制到相同的位置(~/Work/stack
),因此我的工作目录如下所示。顺便说一句,lib项目位于/extras/google/google\u play\u services/libproject
:
3) 现在让我们打开Android Studio。在欢迎屏幕上,按导入项目
并从~/Work/stack/maps
导入我们的地图
项目。现在我们看到很多关于GMS图书馆未知参考文献的投诉:
4) 现在我们需要添加GooglePlay服务作为参考库。转到查看->打开模块设置
5) 在模块
选项卡上,单击+
按钮,选择导入模块
并导入您的GooglePlayServices库。我没有更改向导中的任何内容,因此一直单击Next
,直到结束:
6) 现在您需要引用此导入的库。再次打开此屏幕(转到查看->模块设置
)。确保选择了映射
项目和相关性
选项卡。单击+
添加依赖项,然后选择库
。在此处选择导入的库:
7) 现在我们可以看到,它不是在抱怨GMS
库,而是在抱怨支持库:
8) 让我们把它修好。我的支持库位于/extras/android/support/v13/android-support-v13.jar
。因此,让我们尝试将其添加到我们的工作区。转到查看->打开模块设置
并选择库
选项卡。选择+
->Java
并选择支持库:
9) 现在,它将询问您要将此库添加到哪个项目,因此请确保您已选择了maps
项目:
10) 此时,代码应该编译w/o问题。只需确保清单中的SDK版本是正确的
玩得开心我也遇到了类似的问题,但就是找不到com.google.android.gms.maps包(它一直说它不存在)。这是在我按照谷歌自己的文档上的迁移教程正确导入所有内容(看起来)之后: 无论如何,在导入所有内容之后,我仍然存在问题,不确定如何设置构建路径(或非eclipse等效路径) 我只需要按照你下面教程的一半,删除已经在模块设置窗口中列出的google play services库,然后再次添加它
我希望这对其他人有用。我也有类似的问题,我解决了像库一样导入google_play_services.jar,而不是像模块一样导入google play services项目。除了创建一个新项目外,我遵循了相同的说明。在项目结构下,我删除了Android Gradle方面,并能够成功构建。可以选择更新gradle构建文件,并将Android gradle方面添加到play services库中
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']
}
}
}
注意:我更改了Google Play Services目录的名称
谷歌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.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
}
}
这里是我为一个项目所做的配置,它使用了
googlemapsapiv2
,在androidstudio 0.2
中,使用了gradle 0.5.+。
以及其他模块,比如ActiobarSherlock
,使用了自定义的NumberPicker
,我只是把它们留着以备有人需要
项目结构:
include ':SuperModule', ':libraries:actionbarsherlock', ':libraries:numberPicker'
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')
}
}
1)顶级目录设置。渐变:
include ':SuperModule', ':libraries:actionbarsherlock', ':libraries:numberPicker'
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')
}
}
2)顶级目录生成.gradle
task assemble {}
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
}
}
(你们中的一些人可能会面临“集合未找到”的任务。这就是为什么要写这行!)
3)超级模块构建。gradle
task assemble {}
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 L