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 ดังนั้นฉันจึงพยายามยกเว้นโฟลเดอร์ "Preview" นี้ในการตั้งค่าคอมไพเลอร์ และตอนนี้ก็ใช้งานได้แล้ว ปัญหานี้เกิดขึ้นหลังจากที่ฉันได้เริ่มใช้ชั้นเรียนบริการ Google Play ในโครงการของฉันแล้วเท่านั้น ฉันจะขอบคุณหากมีใครสามารถอธิบายเหตุผลเบื้องหลังปัญหานี้ได้


ทุกคนสามารถช่วยสิ่งนี้ที่รวบรวม 'com.google.android.gms: play-services: 6.5.87' ได้ในขณะที่เพิ่มในส่วนการอ้างอิงใน android studio เราสามารถเพิ่มโถได้เช่นกัน แต่สิ่งที่บรรทัดด้านบนทำเมื่อเราไม่ได้เพิ่มไห
Android Killer

คำตอบ:


244

คำตอบทั้งหมดนั้นไม่ถูกต้องเนื่องจากการเปิดตัวปลั๊กอิน gradle v0.4.2 การตั้งค่าบริการ Google Play ภายใต้ Android Studio นั้นตรงไปตรงมา คุณไม่จำเป็นต้องนำเข้า jar หรือเพิ่มไลบรารีโครงการใด ๆ หรือเพิ่มโมดูลใหม่ภายใต้ android studio สิ่งที่คุณต้องทำคือเพิ่มการอ้างอิงที่ถูกต้องลงในไฟล์ build.gradle โปรดดูลิงก์เหล่านี้: การอัปเดตปลั๊กอิน Gradle v0.4.2 , New Build Systemและตัวอย่างนี้

ที่ถูกต้องวิธีที่จะทำเช่นนั้นจะเป็นดังนี้:

ก่อนอื่นคุณต้องเปิดผู้จัดการ 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 Maps และ Analytics คุณสามารถแทนที่ตัวอย่างก่อนหน้านี้ด้วยตัวอย่างต่อไปนี้:

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

คุณสามารถค้นหารายการการอ้างอิงทั้งหมดได้ที่นี่

หมายเหตุด้านข้าง:

  • ใช้ไลบรารีบริการเล่นเวอร์ชันล่าสุด ถ้าเป็นเวอร์ชันเก่า android studio จะเน้น ณ วันนี้ (5 กุมภาพันธ์คือ 6.5.87) แต่คุณสามารถตรวจสอบเวอร์ชันล่าสุดได้ที่Gradle Please
  • หลังจากการอัปเดต Android Studio ครั้งใหญ่ให้ทำความสะอาดสร้างโครงการใหม่โดยทำตามคำแนะนำถัดไปตามที่แนะนำในความคิดเห็นโดย @ user123321

    cd ไปยังโฟลเดอร์โครงการของคุณ ./
    gradlew clean
    ./gradlew build


เฮ้ Estornino ฉันเห็นการอัปเดตนี้ด้วย แต่ฉันสงสัยว่า Android Studio (อย่างน้อย IDE เอง) รับการอ้างอิงได้อย่างไร คุณทำให้มันใช้งานได้กับการตั้งค่า Gradle หรือไม่?
victor n.

ใช่มันได้ผลสำหรับฉัน IDE ยังสามารถแก้ไขชื่อใหม่ได้ ขอบคุณ.
victor n.

ขออภัยสำหรับการตอบกลับปลาย. เมื่อคุณกดปุ่ม syncronize ide จะเพิ่มการอ้างอิงใหม่โดยอัตโนมัติ เป็นระบบการสร้างที่กำหนดพฤติกรรมอุดมคติและไม่แนะนำให้ทำการเปลี่ยนแปลงโครงการในรูปแบบความคิด "เก่า" (ฉันหมายถึงการเปลี่ยนโมดูลและการกำหนดค่าโครงการ) ฉันดีใจที่มันทำงานให้คุณ
Imanol

5
ตรวจสอบให้แน่ใจว่าคุณ. /gradlew ทำความสะอาดแล้ว. / gradlew build ก่อนที่ android studio 2.x จะรับการอ้างอิง มิฉะนั้นคุณจะได้รับข้อผิดพลาด
NoClassDef

2
ณ วันนี้บิลด์ล่าสุดที่ฉันได้รับคือ 5.2.08
chrisbjr

114
  1. ไปที่ไฟล์ -> โครงสร้างโครงการ
  2. เลือก 'การตั้งค่าโครงการ'
  3. เลือกแท็บ "การอ้างอิง"
  4. คลิก '+' และเลือก '1.Library Dependencies'
  5. ค้นหา: com.google.android.gms: play-services
  6. เลือกเวอร์ชันล่าสุดแล้วคลิก 'ตกลง'

โวลา! ไม่ต้องสู้กับ Gradle :)


5
สิ่งนี้ใช้ได้ผลสำหรับฉันและง่ายมาก มันรู้หมายเลขเวอร์ชัน play-services ล่าสุดแล้ว - คุณเพียงแค่เลือกจากรายการและไฟล์ gradle จะถูกแก้ไขให้คุณ!
Nick Perkins

ฉันสามารถใช้วิธีเดียวกันนี้ในการนำเข้า BaseGameUtils สำหรับลีดเดอร์บอร์ดได้หรือไม่
eng.ahmed

ใช่ Ahmed ด้วยวิธีนี้คุณสามารถนำเข้าไลบรารี Android ใดก็ได้
Ivo Stoyanov

โซลูชันที่เรียบง่ายและสง่างาม ขอบคุณ @IvoStoyanov มันจะช่วยประหยัดเวลาของผู้เริ่มต้นอย่างฉันได้มาก
Manikandan S

5

แก้ไข: ผู้ชายคนนี้พามันกลับบ้านจริงๆและมีบทช่วยสอนเล็ก ๆ น้อย ๆ ที่ดี http://instantiatorgratification.blogspot.com/2013/05/google-play-services-with-android-studio.html

หมายเหตุด้านหนึ่ง: ฉันเล่นมาหลายรอบมากจนต้องทำgradlew cleanเพื่อให้มันวิ่งได้สำเร็จ

หากคุณนำเข้าโครงการของคุณหรือกำลังทำงานจากแอปพลิเคชันแผนที่ตัวอย่างที่อยู่ใน \ extras \ google \ google_play_services \ samples \ 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

แล้วส่งออกโครงการของแอปจากคราสและนำเข้ามาในสตูดิโอของ Android ตามที่อธิบายไว้ที่นี่: http://developer.android.com/sdk/installing/migrate.html อย่าลืมส่งออกทั้งโปรเจ็กต์แอปและโปรเจ็กต์ไลบรารีบริการ Google Play เมื่อนำเข้าจะตรวจพบโครงการไลบรารีและนำเข้าเป็นโมดูล ฉันเพิ่งยอมรับค่าเริ่มต้นทั้งหมดในระหว่างขั้นตอนการนำเข้าโครงการ


2
ขอบคุณ แต่ฉันไม่ต้องการใช้ eclipse!
androidtester

2

การรวมบริการ Google Play ใน Android studio

ขั้นตอนที่ 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 Manager "Google play services for Froyo" จากนั้นทำซ้ำขั้นตอนแรก

ไม่เข้าใจเหตุผลอย่างถูกต้อง แต่ได้ผล

PS: ฉันเพิ่งสังเกตว่าแม้ตอนนี้ฉันจะค้นหาบริการการเล่นสิ่งนี้ก็ไม่ได้มา แต่เมื่อฉันเลื่อนและดูรายการโดยตรงมันก็อยู่ตรงนั้น


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

คุณมีโมดูลนี้เป็นที่พึ่งพาในการคอมไพล์หรือไม่?
Johan S

ใช่ ทางออกเดียวคือวิธีเดียวที่ฉันได้กล่าวไว้ก่อนหน้านี้ (ยกเว้นโฟลเดอร์ Preview)
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จะรวมเป็นโมดูล (External Libs) สำหรับGoogle map & GCMในโครงการของฉัน

ตอนนี้เวลาเหล่านี้จำเป็นต้องใช้API การเติมข้อความอัตโนมัติของ Google Placesแต่ปัญหาคือรหัสเป็นของใหม่และ libs ของฉันเก่าจึงไม่พบบางคลาส:

ทำตามขั้นตอนต่อไปนี้ ...

1> อัปเดตบริการ Google Playเป็น SDK Manager

2> เลือกไฟล์. jar ใหม่ของบริการ Google Play ( Sdk / extras / google / google_play_services / libproject / google-play-services_lib / libs ) แทนที่ด้วยไฟล์เก่า

ประสบความสำเร็จ ... !!!


-3

ฉันคัดลอกไฟล์ play libs จาก google-play-services_lib ไปยังไดเรกทอรี libs โครงการของฉัน:

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

จากนั้นเลือกรายการเหล่านั้นคลิกขวา "เพิ่มเป็นไลบรารี"


1
ขอบคุณสำหรับ answaer ของคุณ แต่มันไม่ได้ผลสำหรับฉัน - มันคล้ายกับสิ่งที่ฉันเคยลองมาก่อน
androidtester

คำแนะนำนี้ขัดแย้งกับข้อมูลอื่น ๆ ที่ฉันอ่านจากที่อื่น คำตอบที่เชื่อมโยงกับในคำตอบแรกถูกเลิกใช้แล้วเนื่องจากใช้วิธีนี้
RevNoah
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.