2013-05-16 1 views
40

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

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

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

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

Я не смог успешно настроить Google Play Services SDK 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

Вы ориентированные на API Google, в качестве цели сборки? – nhaarman

+0

Я установил Карты Google в этом [демонстрационном проекте] (https://github.com/johnjohndoe/TouchableMapDemo). – JJD

+0

Вы можете увидеть мой ответ на аналогичный вопрос в http://stackoverflow.com/questions/16759364/multi-project-setup-with-gradle-for-android/17657713#17657713. Я надеюсь, это поможет вам! – JavierSP1209

ответ

54

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

EDIT: Как уже упоминалось Xavier, этот метод будет работать только для проектов, не связанных с градиентом. И часть пользовательского интерфейса, которая была использована в этом руководстве, будет исключена из 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 project находится по адресу <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 Service в качестве справочной библиотеки. Переход к View -> Open Module Settings

5) На вкладке Modules, нажмите кнопку + и выберите Import Module и импортировать GooglePlayServices LIB.Я ничего не изменил в мастерах, так щелкнул 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 tab. Выберите + ->Java и выберите Библиотека поддержки:

enter image description here

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

enter image description here

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

Веселитесь

+2

Это сработало отлично! Большое спасибо. Отличные скриншоты тоже! – whoabackoff

+3

Упрощенный ответ. Но почему все используют темную тему? Юк! Это больно глазам! –

+0

Я получаю 'Gradle: пакет com.google.android.gms.maps не существует' и т. Д. Кто-нибудь знает, как это исправить? Я не хочу открывать новый вопрос только для этого. – EsseTi

1

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

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

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

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

1

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

13

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

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

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

Это РЕАЛЬНЫЙ ответ! Только одна коррекция: скомпилировать файлы ('../ lib-google-play-services/libs/google-play-services.jar ') не требуется ;-) уже косвенно добавляется через зависимость проекта. –

+2

Кроме того, settings.gradle необходимо обновить с помощью оператора include для проекта библиотеки. –

3

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

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

enter image description here

1) ТОП Каталог settings.gradle:

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

2) ТОП Справочник 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), а макет 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 разве показан, потому что он имеет ту же логику с другими ..

9

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

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

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

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

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

+0

Это рекомендуемый метод для последней версии (0.2.6) для Android Studio. – Daniel

+1

Пожалуйста, обратите внимание, что фрагмент должен быть 'com.google.android.gms.maps.SupportMapFragment', если вы поддерживаете более старые версии. – JJD

+0

Это работало для меня с AS 0.3.1, хотя мне приходилось покидать и перезапускать до запуска сгенерированных APK. –

2

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

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

Смежные вопросы