Google Play सेवाओं के साथ Android स्टूडियो


95

मैं नए Android स्टूडियो के साथ Google Play Services का परीक्षण करने का प्रयास कर रहा हूं। मेरे पास 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' क्या संकलन करता है, जबकि एंड्रॉइड स्टूडियो में निर्भरता अनुभाग में जोड़ा जाता है। हम जार को भी जोड़ सकते हैं लेकिन ऊपर की रेखा क्या करती है क्योंकि हम जार नहीं जोड़ रहे हैं।
एंड्रॉयड किलर

जवाबों:


243

उन सभी के उत्तर गलत हैं, क्योंकि ग्रेड प्लगिन v0.4.2 के रिलीज़ होने के बाद एंड्रॉइड स्टूडियो के तहत Google Play सेवाओं का सेटअप सीधे आगे है। आपको किसी जार को आयात करने या किसी भी प्रोजेक्ट लाइब्रेरी को जोड़ने की आवश्यकता नहीं है और न ही एंड्रॉइड स्टूडियो के तहत कोई नया मॉड्यूल जोड़ने की आवश्यकता है। आपको जो करना है वह सही निर्भरता बिल्ड.ग्रेड फ़ाइल में जोड़ना है। कृपया उन लिंक पर एक नज़र डालें: ग्रेड प्लगइन v0.4.2 अपडेट , न्यू बिल्ड सिस्टम और यह नमूना

ऐसा करने का सही तरीका इस प्रकार है:

सबसे पहले आपको sdk manager को लॉन्च करना होगा और "extras" के तहत स्थित निम्न फ़ाइलों को डाउनलोड और इंस्टॉल करना होगा: Android support repository , Google play services , Google रिपॉजिटरी

एंड्रॉइड स्टूडियो को पुनरारंभ करें और बिल्ड ग्रेडेल फ़ाइल खोलें। निर्भरता के तहत इस तरह दिखने के लिए आपको अपनी बिल्ड.ग्रेड फ़ाइल को संशोधित करना होगा:

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

और अंत में अपनी परियोजना (एवीडी प्रबंधक के बाईं ओर बटन) को सिंक्रनाइज़ करें।

संस्करण 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) है, लेकिन आप नवीनतम संस्करण को देख सकते हैं कृपया
  • एंड्रॉइड स्टूडियो के एक प्रमुख अपडेट के बाद, @ user123321 द्वारा टिप्पणियों में सुझाए गए अगले निर्देशों का पालन करके अपनी परियोजना को फिर से बनाएं

    अपने प्रोजेक्ट फ़ोल्डर में cd
    ./gradlew clean
    ./gradlew बिल्ड


हे एस्टोर्निनो। मैंने इस अद्यतन को भी देखा, लेकिन मैं सोच रहा था कि एंड्रॉइड स्टूडियो (आईडीई खुद को कम से कम) निर्भरता कैसे चुनता है? क्या आपको यह केवल ग्रेड सेटिंग्स के साथ काम करने के लिए मिला?
विजेता n।

हाँ, यह मेरे लिए काम किया। IDE भी नए नामों को हल करने में सक्षम है। धन्यवाद।
विजेता n।

देर से उत्तर के लिए क्षमा करें। जब आप सिंक्रोनाइज बटन दबाते हैं तो आइड नई निर्भरता को स्वचालित रूप से जोड़ता है। यह बिल्ड सिस्टम है, जो विचारधारा को नियंत्रित करता है और "पुरानी" विचार शैली में परियोजना में बदलाव करने के लिए इसे हतोत्साहित करता है (मेरा मतलब है कि मॉड्यूल और प्रोजेक्ट कॉन्फ़िगरेशन बदलना)। मुझे खुशी है कि यह आपके लिए काम कर रहा है।
इमानॉल

5
सुनिश्चित करें कि आप ./gradlew को साफ करें। Android स्टूडियो 2.x से पहले ही नवीनीकरण करें। निर्भरता को उठाएगा। अन्यथा आपको NoClassDef त्रुटि
मिलती है

2
आज के अनुसार, नवीनतम निर्माण मुझे मिला 5.2.08
क्रिसबज्र

114
  1. फाइल -> प्रोजेक्ट स्ट्रक्चर पर जाएं
  2. 'प्रोजेक्ट सेटिंग' चुनें
  3. 'निर्भरताएँ' टैब चुनें
  4. '+' पर क्लिक करें और '1. सीमाएँ निर्भरता' चुनें
  5. इसके लिए खोजें: com.google.android.gms: play-services
  6. नवीनतम संस्करण का चयन करें और 'ठीक' पर क्लिक करें

देखा! ग्रेडल से लड़ने की जरूरत नहीं है :)


5
यह मेरे लिए काम किया और बहुत आसान है। यह पहले से ही नवीनतम प्ले-सर्विसेज संस्करण संख्या जानता है - आप इसे केवल एक सूची से चुनते हैं, और आपके लिए ग्रेड फ़ाइल संशोधित की जाती है!
निक पर्किन्स

क्या मैं लीडरबोर्ड के लिए बेसगैमिल्स आयात करने के लिए समान विधि का उपयोग कर सकता हूं?
12

हां, अहमद। इस तरह आप किसी भी Android लाइब्रेरी को आयात कर सकते हैं।
इवो ​​स्टोयानोव 12

सरल, सुरुचिपूर्ण समाधान। धन्यवाद @IvoStoyanov यह मेरे जैसे शुरुआती लोगों के समय की बहुत बचत करेगा।
मणिकंदन एस

5

संपादित करें: यह लड़का वास्तव में इसे घर लाया था और इसमें एक अच्छा सा ट्यूटोरियल है। http://instantiatorgratification.blogspot.com/2013/05/google-play-services-with-android-studio.html

एक तरफ ध्यान दें: मैंने लगभग इतना खेला था कि मुझे gradlew cleanइसे सफलतापूर्वक चलाने के लिए एक करने की आवश्यकता थी

यदि आपने अपनी परियोजना को आयात कर लिया है या \ n "एक्स्ट्रा \ google \ google_play_services \ नमूनों \" में स्थित नमूना मैप्स एप्लिकेशन से काम कर रहे हैं तो इस ट्यूटोरियल को देखें।

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

यदि आप स्क्रैच से एक नया प्रोजेक्ट बना रहे हैं तो उसी पोस्ट पर Xav की टिप्पणियों पर ध्यान दें। वह बताता है कि एंड्रॉइड स्टूडियो एक अलग संकलक का उपयोग करता है और आपको मैन्युअल रूप से बिल्ड.ग्रेड फ़ाइल को संशोधित करना होगा। मैंने सफलता के साथ ऐसा किया। मैं नकल करता हूँ

  • गूगल-प्ले-services.jar
  • google-play-services.jar.properties

मेरी कार्यशील निर्देशिका में और मेरी build.gradle फ़ाइल में निम्न जोड़ दिया

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

इसके अलावा, अगर यह एक नया है प्रोजेक्ट इस पोस्ट को भी देखें।

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


7
आपके द्वारा लिंक किया गया लेख अब हटा दिया गया है। यह समाधान अनुशंसित नहीं है।
रेवन्नाह

4

इनमें से अधिकांश उत्तर केवल संकलन-समय की निर्भरता को संबोधित करते हैं, लेकिन आपको रन-टाइम पर NoClassDef अपवादों की मेजबानी मिलेगी। ऐसा इसलिए है क्योंकि आपको Google-play-services.jar से अधिक की आवश्यकता है। यह उन संसाधनों का संदर्भ देता है जो पुस्तकालय परियोजना का हिस्सा हैं, और यदि आपके पास केवल जार है तो वे सही ढंग से शामिल नहीं हैं।

मेरे लिए सबसे अच्छा काम सबसे पहले प्रोजेक्ट सेटअप को सही तरीके से ग्रहण में लाना था। क्या आपके प्रोजेक्ट को संरचित किया गया है ताकि इसमें आपका ऐप और लाइब्रेरी दोनों शामिल हों, जैसा कि यहाँ वर्णित है: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Multi-project-setup

फिर अपने ऐप प्रोजेक्ट को ग्रहण से निर्यात करें, और यहां बताए अनुसार 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

उपरोक्त समाधान में से किसी ने भी मेरे लिए काम नहीं किया। सुनिश्चित नहीं है कि यह मेरे सेटअप या नई रिलीज़ के लिए विशिष्ट है।

मैं एंड्रॉइड स्टूडियो बीटा 0.8.9 का उपयोग कर रहा हूं और मुझे इस निर्देश का पालन करने पर पुस्तकालय सूची में कोई com.google.android.gms: play-service नहीं मिल रही थी:

फाइल पर जाएँ -> प्रोजेक्ट स्ट्रक्चर -> प्रोजेक्ट सेटिंग्स चुनें -> 'डिपेंडेंसीज़' टैब पर क्लिक करें '+' -> १.लिफ्ट डिपेंडेंसीज़ -> सेलेक्ट करें com.google.android.gms: play-services: +

मैंने पहले ही यह कर लिया था:

सबसे पहले आपको एसडीके प्रबंधक को लॉन्च करना होगा और "एक्स्ट्रा" के तहत स्थित निम्न फ़ाइलों को डाउनलोड और इंस्टॉल करना होगा: एंड्रॉइड सपोर्ट रिपॉजिटरी, Google प्ले सर्विसेज, Google रिपॉजिटरी।

एसडीके प्रबंधक से जोड़ने के लिए जो संकल्प किया गया था, "फ़ॉरो के लिए Google प्ले सेवाएं" फिर पहला कदम दोहराते हुए।

कारण ठीक से समझ में नहीं आया लेकिन यह काम किया।

पुनश्च: मैंने अभी देखा है कि अब भी जब मैं प्ले-सेवाओं की खोज करता हूं तो यह नहीं आता है, लेकिन जब मैं सीधे स्क्रॉल करता हूं और सूची के माध्यम से देखता हूं तो यह वहीं है।


2

इस लेख का पालन करें -> http://developer.android.com/google/play-services/setup.html

आपको Android Studio का उपयोग करके चुनना चाहिए

यहां छवि विवरण दर्ज करें

उदाहरण ग्रेड फ़ाइल:

नोट: अपने एप्लिकेशन मॉड्यूल निर्देशिका के अंदर 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 Services का नवीनतम संस्करण पा सकते हैं: https://developer.android.com/google/play-services/index.html


1

मैंने निम्नलिखित कार्य करने के बाद यह काम किया है:

  • एक मॉड्यूल के रूप में Google-play-services-lib करें (मॉड्यूल और प्रोजेक्ट के बीच अंतर नोट करें), फिर अपने मॉडल "libs" निर्देशिका में google-play-services.jar जोड़ें।
  • उसके बाद एक लाइब्रेरी बनाने के माध्यम से जार को अपने निर्माण पथ में जोड़ें या जार को किसी अन्य लाइब्रेरी में जोड़ें। मेरे पास आम तौर पर एक एकल आईडिया लाइब्रेरी है जो मैं अपनी सभी /libs/*.jar फ़ाइलों को जोड़ता हूं।
  • मॉड्यूल सेटिंग्स (F4) के माध्यम से लाइब्रेरी को अपने मॉड्यूल बिल्ड पथ में जोड़ें।
  • अपनी परियोजना के लिए मॉड्यूल निर्भरता के रूप में Google-play-services-lib जोड़ें।
  • किया हुआ!

नोट: यह मुझे रनटाइम अपवाद नहीं देता है, यह काम करता है।


मुझे वही त्रुटियाँ मिलती हैं: R.java और BuildConfig.java की नकल की जाती है
androidtester

क्या आपके पास संकलन निर्भरता के रूप में मॉड्यूल है?
जोहान एस

हाँ! एकमात्र समाधान वह है जिसका मैंने पहले उल्लेख किया है (पूर्वावलोकन फ़ोल्डर को
छोड़कर

0

अपनी परियोजना build.gradle फ़ाइल खोलें और निर्भरता मॉड्यूल के तहत नीचे की रेखा जोड़ें।

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

नीचे जोड़ दिया जाएगा यदि आप पूर्ण पुस्तकालय को एकीकृत नहीं करना चाहते हैं, तो Google Analytics और मानचित्र

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 मानचित्र और GCM के लिए मॉड्यूल (बाहरी Libs) के रूप में एकीकृत किया गया है मेरी परियोजना में ।

अब, इन समयों के लिए Google स्थल स्वतः पूर्ण एपीआई को लागू करने की आवश्यकता है लेकिन समस्या यह है कि कोड नए हैं और मेरे काम पुराने हैं इसलिए कुछ को नहीं देखा गया है:

इन चरणों का पालन ...

1> Google Play सेवा अपडेट करें एसडीके प्रबंधक में

2> Google Play सेवा की नई .jar फ़ाइल चुनें ( Sdk / अतिरिक्त / google / google_play_services / libproject / google-play-services_lib / libs ) को पुराने के साथ बदलें

मुझे सफलता मिली ... !!!


-3

मैंने अपने प्रोजेक्ट libs निर्देशिका के लिए google-play-services_lib से play libs फ़ाइलों की प्रतिलिपि बनाई:

  • गूगल-प्ले-services.jar
  • google-play-services.jar.properties।

फिर उन्हें चुना, राइट-क्लिक करें, "पुस्तकालयों के रूप में जोड़ें"।


1
आपके उत्तर देने वाले के लिए धन्यवाद, लेकिन यह मेरे लिए काम नहीं करता था - यह उस चीज के समान है जिसे मैंने पहले कोशिश की थी।
androidtester

यह सलाह अन्य जानकारी के विरुद्ध है जो मैंने कहीं और पढ़ी है। पहले उत्तर में जुड़े उत्तर को हटा दिया गया है क्योंकि यह इस पद्धति का उपयोग करता है।
रेवन्नाह
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.