Android Studio із сервісами Google Play


95

Я намагаюся протестувати служби Google Play за допомогою нової Android Studio. У мене є проект із залежністю від google_play_services.jar. Але при спробі відновити проект я отримую такі помилки:

Information:[TstGP3-TstGP3] Crunching PNG Files in source dir: C:\Users\ans\AndroidStudioProjects\TstGP3\TstGP3\src\main\res
Information:[TstGP3-TstGP3] To destination dir: C:\Users\ans\AndroidStudioProjects\TstGP3\build\classes\res-cache\TstGP3-TstGP3
Information:Compilation completed with 2 errors and 0 warnings in 2 sec
Information:2 errors
Information:0 warnings
C:\Users\ans\.AndroidStudioPreview\system\compiler\tstgp3.3f17bd41\.generated\Android_BuildConfig_Generator\TstGP3-TstGP3.74fc5b25\production\com\example\tstgp3\BuildConfig.java
    Error:Error:line (4)error: duplicate class: com.example.tstgp3.BuildConfig
C:\Users\ans\.AndroidStudioPreview\system\compiler\tstgp3.3f17bd41\.generated\aapt\TstGP3-TstGP3.74fc5b25\production\com\example\tstgp3\R.java
    Error:Error:line (10)error: duplicate class: com.example.tstgp3.R

Здається, у ньому є два файли BuildConfig, а також два класи R. Як я можу вирішити проблему?

Редагувати:

Я помітив, що компілятор компілює два файли R.java: той, який знаходиться в папці мого проекту, і інший, який знаходиться в папці% USERPROFILE% .AndroidStudioPreview Отже, я спробував виключити цю папку "Попередній перегляд" у налаштуваннях компілятора і зараз це працює. Ця проблема виникає лише після того, як я почав використовувати класи Google Play Services у своєму проекті. Буду вдячний, якщо хтось зможе пояснити причину цієї проблеми.


Будь-хто може допомогти, що робить ця компіляція 'com.google.android.gms: play-services: 6.5.87', додаючи до розділу залежностей в андроїд-студії. Ми також можемо додати банку, але те, що робиться у наведеному вище рядку, оскільки ми не додаємо банки.
Android Killer

Відповіді:


243

Всі ці відповіді помилкові, оскільки з випуском плагіна gradle v0.4.2 налаштування сервісів google play під андроїд-студією відбувається прямо вперед. Вам не потрібно імпортувати будь-яку jar або додавати будь-яку бібліотеку проектів, а також додавати новий модуль під андроїд-студією. Вам потрібно додати правильні залежності у файл build.gradle. Перегляньте ці посилання: оновлення плагіна Gradle v0.4.2 , система нової збірки та цей зразок

Правильний спосіб зробити це полягає в наступному:

Перш за все, вам потрібно запустити менеджер sdk та завантажити та встановити наступні файли, що знаходяться в розділі "Додатково": сховище підтримки Android , сервіси Google play , сховище Google .

Перезапустіть android studio та відкрийте файл build gradle. Ви повинні змінити файл build.gradle, щоб виглядати так у залежностях:

dependencies {
    compile 'com.google.android.gms:play-services:6.5.87' 
 }

І нарешті, синхронізуйте свій проект (кнопка ліворуч від менеджера AVD).

З версії 6.5 ви можете включити повну бібліотеку (дуже велику) або лише модулі, які вам потрібні (найкращий варіант). Тобто, якщо вам потрібні лише Карти Google та Analytics, ви можете замінити попередній приклад таким:

dependencies {  
    compile 'com.google.android.gms:play-services-base:6.5.87'    
    compile 'com.google.android.gms:play-services-maps:6.5.87'  
}

Повний список залежностей ви можете знайти тут

Деякі допоміжні примітки:

  • Використовуйте останню версію бібліотеки служб відтворення. Якщо це стара версія, андроїд-студія виділить її. На сьогоднішній день (5 лютого - 6.5.87), але ви можете перевірити останню версію на сайті Gradle Please
  • Після серйозного оновлення Android Studio очистіть відновлюваний проект, дотримуючись наступних інструкцій, як запропоновано в коментарях @ user123321

    cd до папки вашого проекту
    ./gradlew clean
    ./gradlew build


ей Есторніно. я теж бачив це оновлення, але мені було цікаво, як Android Studio (принаймні сама IDE) підбирає залежності? ти змусив його працювати лише з налаштуваннями Gradle?
віктор н.

так, це спрацювало для мене. IDE також може вирішити нові імена. Дякую.
віктор н.

Вибачте за пізню відповідь. Коли ви натискаєте кнопку синхронізації, ide автоматично додає нові залежності. Це система побудови, яка керує поведінкою ide, і не рекомендується вносити зміни в проект у "старому" стилі ідеї (я маю на увазі зміну модулів та конфігурації проекту). Я радий, що це працює для вас.
Imanol

5
Переконайтеся, що ви ./gradlew очистили тоді ./gradlew збирали, перш ніж android studio 2.x забере залежність. В іншому випадку ви отримуєте помилку
NoClassDef

2
На сьогодні остання збірка, яку я отримав, - 5.2.08
chrisbjr,

114
  1. Перейдіть до Файл -> Структура проекту
  2. Виберіть "Налаштування проекту"
  3. Виберіть вкладку "Залежності"
  4. Клацніть '+' та виберіть '1.Залежності бібліотеки'
  5. Шукати: com.google.android.gms: play-services
  6. Виберіть останню версію та натисніть "OK"

Вуаля! Не потрібно битися з Gradle :)


5
Це спрацювало для мене і дуже легко. Він уже знає номер останньої версії сервісів відтворення - ви просто вибираєте його зі списку, і файл gradle для вас модифікується!
Нік Перкінс

Чи можу я використовувати той самий метод для імпорту BaseGameUtils для таблиці лідерів?
eng.ahmed

Так, Ахмеде. Таким чином ви можете імпортувати будь-яку бібліотеку Android.
Іво Стоянов

Прості, елегантні рішення. Завдяки @IvoStoyanov це заощадить багато часу для початківців, таких як я.
Manikandan S,

5

ВИДАЛЕНО: Цей хлопець справді приніс його додому і має хороший маленький підручник http://instantiatorgratification.blogspot.com/2013/05/google-play-services-with-android-studio.html

одна сторона: я так багато грав, що мені потрібно було зробити, gradlew cleanщоб він успішно працював

Якщо ви імпортували свій проект або працюєте з додатком Зразки карт, який знаходиться в \ extras \ google \ google_play_services \ sample \ maps, ознайомтеся з цим посібником.

https://stackoverflow.com/a/16598478/2414698

Якщо ви створюєте новий проект з нуля, тоді зверніть увагу на коментарі Xav до тієї ж публікації. Він описує, що Android Studio використовує інший компілятор і що вам доведеться змінити файл build.gradle вручну. Я зробив це з успіхом. Я скопіював

  • google-play-services.jar
  • google-play-services.jar.properties

до мого каталогу lib та додав наступне до мого файлу build.gradle

dependencies {
    compile files('libs/android-support-v4.jar')
    compile files('libs/google-play-services.jar')
}

Крім того, якщо це новий проект, перегляньте і цю публікацію.

https://stackoverflow.com/a/16671865/2414698


7
Стаття, на яку ви посилаєтесь, тепер застаріла. Це рішення не рекомендується.
RevNoah

4

Більшість з цих відповідей стосуються лише залежностей часу компіляції, але ви знайдете безліч винятків NoClassDef під час виконання. Це тому, що вам потрібно більше, ніж google-play-services.jar. Він посилається на ресурси, які є частиною бібліотечного проекту, і ті не включені правильно, якщо у вас є лише jar.

Найкраще для мене спрацювало те, що спочатку правильно налаштували проект у затемненні. Нехай ваш проект буде структурований так, щоб він включав як вашу програму, так і бібліотеку, як описано тут: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-project-setup

Потім експортуйте проект програми з eclipse та імпортуйте в Android Studio, як описано тут: http://developer.android.com/sdk/installing/migrate.html . Переконайтеся, що ви експортували як проект програми, так і проект бібліотеки служб Google Play. При імпорті він виявить проект бібліотеки та імпортує його як модуль. Я просто прийняв усі за замовчуванням під час процесу імпорту проекту.


2
Дякую, але я не хочу використовувати затемнення!
androidtester

2

Інтеграція сервісів Google Play в студії Android.

Крок 1:

SDK manager->Tools Update this

1.Google play services
2.Android Support Repository

Крок 2:

chance in build.gradle 
defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.android.gms:play-services:4.0.+'
}

Крок 3:

 android.manifest.xml
<uses-sdk
        android:minSdkVersion="8" />

Крок 4:

Sync project file with grandle.
wait for few minute.

Крок 5:

File->Project Structure find error with red bulb images,click on go to add dependencies select your app module.
Save

Будь ласка, залиште коментар, якщо вам потрібна допомога. Щасливе кодування.


2

Жодне з наведеного вище рішення не працювало для мене. Не впевнений, що це специфічно для моєї установки або нового випуску.

Я використовую Android Studio Beta 0.8.9, і я не отримував жодного com.google.android.gms: play-service у списку бібліотеки, дотримуючись цієї інструкції:

Перейдіть до Файл -> Структура проекту -> Виберіть Налаштування проекту -> Виберіть вкладку «Залежності» Клацніть «+» -> 1. Залежності бібліотеки -> Виберіть com.google.android.gms: play-services: +

Я вже зробив це:

Перш за все, вам потрібно запустити менеджер sdk та завантажити та встановити наступні файли, що знаходяться в розділі "Додатково": сховище підтримки Android, сервіси Google play, сховище Google.

Що вирішило, це додати з Менеджера SDK «Служби Google Play для Froyo», повторивши перший крок.

Не зрозумів причину належним чином, але це спрацювало.

PS: Я щойно зауважив, що навіть зараз, коли я шукаю play-сервіси, цього не відбувається, але коли я безпосередньо прокручую і переглядаю список, він знаходиться саме там.


2

Дотримуйтесь цієї статті -> http://developer.android.com/google/play-services/setup.html

Вам слід вибрати Використання Android Studio

введіть тут опис зображення

Приклад файлу Gradle:

Примітка: Відкрийте файл build.gradle всередині каталогу модуля програми.

apply plugin: 'com.android.application'

android {
    compileSdkVersion 20
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "{applicationId}"
        minSdkVersion 14
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:20.+'
    compile 'com.google.android.gms:play-services:6.1.+'
}

Ви можете знайти останню версію Служб Google Play тут: https://developer.android.com/google/play-services/index.html


1

У мене це працює після того, як я зробив наступне:

  • Встановіть google-play-services-lib як модуль (зверніть увагу на різницю між модулем та проектом), а потім додайте google-play-services.jar до каталогу "libs" своїх моделей.
  • Після цього додайте jar до шляху побудови шляхом створення бібліотеки або додайте jar до іншої бібліотеки. Як правило, у мене є одна бібліотека IDEA, до якої я додаю всі свої файли /libs/*.jar.
  • Додайте бібліотеку до шляху збірки модулів через Параметри модуля (F4).
  • Додайте google-play-services-lib як залежність модуля до свого проекту.
  • Готово!

Примітка: Це також не дає мені винятків під час виконання, це працює.


Я отримую ті самі помилки: R.java та BuildConfig.java дублюються
androidtester

У вас є модуль як залежність компіляції?
Йохан С

Так! Єдине рішення - це те, про яке я вже згадував раніше (виключаючи папку Попередній перегляд)
androidtester

0

Відкрийте файл build.gradle проекту та додайте нижче рядок під модулем залежностей.

dependencies {
    compile 'com.google.android.gms:play-services:7.0.0'
}

Нижче буде додано Google Analytics і Maps, якщо ви не хочете інтегрувати повну бібліотеку

dependencies {
    compile 'com.google.android.gms:play-services-analytics:7.0.0'
    compile 'com.google.android.gms:play-services-maps:7.0.0'
}

0

У моєму випадку google-play-services_lib інтегруються як модуль (Зовнішні бібліотеки) для Google map & GCM у моєму проекті.

Зараз цей час вимагає впровадження API автозаповнення Google Places, але проблема в тому, що код новий, а мої бібліотеки старі, тому якийсь клас не знайдено:

виконавши ці кроки ...

1> Оновіть службу Google play у менеджер SDK

2> вибрати новий файл .jar служби Google Play ( Sdk / extras / google / google_play_services / libproject / google-play-services_lib / libs ) замінити старим

я досяг успіху ... !!!


-3

Я скопіював файли відтворити бібліотеки з google-play-services_lib до мого каталогу libs проекту:

  • google-play-services.jar
  • google-play-services.jar.properties.

Потім виділіть їх, клацніть правою кнопкою миші, "Додати як бібліотеки".


1
Дякую за відповідь, але це не спрацювало для мене - це схоже на те, що я пробував раніше.
androidtester

Ця порада суперечить іншій інформації, яку я читав в інших місцях. Відповідь, на яку посилається перша відповідь, застаріла, оскільки вона використовує цей метод.
RevNoah
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.