Как я могу создать приложение Android в Android Studio, которое использует Google Maps Api v2?

У меня много проблем в Android Studio, пытаясь создать приложение с помощью GoogleMap.

Я уже следил за следующим руководством (почти) без проблем с использованием Eclipse в качестве моей IDE:

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

Я никогда раньше не использовал Android Studio, и у меня возникли сложности с всей парадигмой проекта/модуля.

Мне не удалось успешно настроить SDK сервисов Google Play http://developer.android.com/google/play-services/setup.html

Вот одна из странных ошибок, которые я получаю:

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.

Ответ 1

Наконец, мне удалось запустить проект GoogleMapsAPIv2 с помощью Android Studio.

EDIT: Как уже упоминалось Xavier, этот метод будет работать только для проектов без gradle. И часть пользовательского интерфейса, которая была использована в этом руководстве, будет исключена из AndroidStudio. Поэтому, если у вас есть собственный проект, который использует систему сборки Gradle, вам необходимо вручную изменить файл конфигурации build.gradle, так как интерфейс Android Studio не влияет на него.

EDIT2: при выпуске AndroidStudio v0.1.1 часть пользовательского интерфейса, ответственная за зависимости модулей, была устранена, поэтому теперь нам нужно вручную обновлять зависимости через файл build.gradle. Пользовательский интерфейс для изменения зависимостей Gradle будет выпущен в следующих выпусках

EDIT3: для тех, кто все еще пытается использовать этот подход - обратите внимание, что он устарел и больше не работает

Вот что я сделал:

1) Я взял проект maps из образцов Служб Google Play и скопировал его в отдельный каталог. Это будет наш проект MapsApiV2, который мы будем пытаться запустить. На моем Mac он находился в <sdk_location>/extras/google/google_play_services/samples Я поместил его в ~/Work/stack/

2) Скопировал каталог проекта google-play-services_lib в одно и то же место (~/Work/stack), поэтому мой рабочий каталог выглядит так. Проект Btw, lib находится в <sdk_location>/extras/google/google_play_services/libproject: enter image description here

3) Теперь откройте Android Studio. На экране приветствия нажмите Import Project и импортируйте наш проект maps с ~/Work/stack/maps. Теперь мы видим много жалоб на неизвестную ссылку на библиотеку GMS:

enter image description here

4) Теперь нам нужно добавить Службу Google Play как справочную библиотеку. Переход на View -> Open Module Settings

5) На вкладке Modules нажмите кнопку + и выберите Import Module и импортируйте свою библиотеку GooglePlayServices. Я ничего не изменил в волшебниках, поэтому нажал Next до конца:

enter image description here

6) Теперь вам нужно обратиться к этой импортированной библиотеке. Откройте этот экран еще раз (перейдите к View -> Module Settings). Убедитесь, что выбран проект maps и вкладка Dependency. Нажмите +, чтобы добавить зависимость, и выберите Library. Выберите там импортированную библиотеку:

enter image description here

7) Теперь мы видим, что он не жалуется на библиотеку GMS, но все же жалуется на библиотеку поддержки:

enter image description here

8) Пусть это исправить. У меня есть библиотека поддержки, расположенная в <sdk location>/extras/android/support/v13/android-support-v13.jar. Поэтому попробуйте добавить его в нашу рабочую область. Перейдите на View -> Open Module Settings и выберите вкладку Libraries. Выберите +Java и выберите библиотеку поддержки:

enter image description here

9) Теперь он спросит вас, к какому проекту добавить этот lib, поэтому убедитесь, что вы выбрали проект maps:

enter image description here

10) В этот момент код должен компилировать без проблем. Просто убедитесь, что вы настроили правильную версию SDK в манифесте.

Удачи

Ответ 2

Я выполнял те же инструкции, кроме того, что создавал новый проект. В рамках проекта я удалил фасет Android- Gradle и смог успешно построить. При желании можно обновить файлы сборки gradle и добавить фасет Android-Gradle в библиотеку сервисов воспроизведения.

ПРИМЕЧАНИЕ. Я изменил имя каталога Служб Google Play.

build.gradle для библиотеки Google 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']
        }
    }
}

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
    }
}

Ответ 3

Я пробовал и проваливал много учебников по этому вопросу, но, наконец, нашел простое решение, которое, похоже, работает с Android Studio и gradle

Я только что установил Android Studio 0.2.3 на свой Mac, и это шаги, которые заставили меня просмотреть фрагмент карты на новом шаблоне проекта hello world:

1) Нажмите кнопку менеджера SDK на панели инструментов в Android Studio.

2) В разделе "Дополнительно" найдите "Службы Google Play" и загрузите его.

3) в файле build.gradle в каталоге src, добавьте эту строку в зависимости:

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) теперь вы можете запустить проект на своем устройстве.

Ответ 4

Вот конфигурация для проекта, который я создал, который использует Google Maps API V2, в Android Studio 0.2, с gradle 0.5.+. Также используются другие модули, такие как ActiobarSherlock, и пользовательский NumberPicker, и я просто оставляю их в если кто-то нуждается в них.

Структура проекта:

enter image description here

1) Настройки TOP Directory.gradle:

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

2) TOP Directory 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. Я также использую Службы Службы (вот почему min sdk должен быть >= 8), а layout lib (для элемента пространства) Библиотека поддержки здесь не включена, поскольку она включена в библиотеку ABS!

Actionbar Шерлок 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 не показан, потому что он имеет ту же логику с другими.

Ответ 5

Я написал статью и шагнул через создание приложения карты, используя интерфейс Location и google map api. Это будет проходить через многие идиосинкратии, с которыми я столкнулся, пытаясь запустить и запустить приложение карты, в том числе, какой SDK включить, какие библиотеки импортировать, что установить в манифесте android и как изменить файл gradle. Надеюсь, что это поможет

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

Ответ 6

У меня была аналогичная проблема, но просто не удалось найти пакет com.google.android.gms.maps(он продолжал говорить, что его не существует). Это произошло после того, как я импортировал все (казалось бы) правильно, выполнив руководство по миграции в своих собственных документах Google: http://developer.android.com/sdk/installing/migrate.html

В любом случае, после импорта всего, у меня все еще была проблема, и я не знал, как установить путь сборки (или эквивалент без затмения).

Мне просто нужно было выполнить половину вашего урока ниже, удалить библиотеку google-play-services, которая уже была указана в окне настроек модуля, а затем добавить ее снова.

Надеюсь, это полезно кому-то другому.

Ответ 7

У меня тоже была аналогичная проблема, я решил импортировать google_play_services.jar, как в библиотеку, а не в google play services project Like the Module.