2016-02-02 11 views
7

मेरे Android परियोजना में, वहाँ कई उत्पाद जायके हैं:एंड्रॉइड स्टूडियो: उत्पाद स्वाद में Google-सेवा मॉड्यूल को कैसे बाहर निकालना है?

buildTypes { 
    release {} 
    debug {} 
    staging {} 
} 

productFlavors { 
    freeVersion {} 
    proVersion {} 
    partnerVersion {} 
} 

इसके अलावा, मैं Google Analytics का उपयोग:

apply plugin: 'com.google.gms.google-services' 

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

कैसे उनमें से एक में बाहर करने के लिए गूगल सेवाओं? उदाहरण के लिए, में:

freeVersion {} 
+0

मैंने इसे पहले नहीं किया है लेकिन [ग्रैडल प्लगइन उपयोगकर्ता मार्गदर्शिका] (http://tools.android.com/tech-docs/new-build-system/user-guide#TOC- उत्पाद- स्वाद- कॉन्फ़िगरेशन) आपके लिए सहायक हो सकता है। – iSandeep

उत्तर

-2

मैंने शुरुआत में प्रश्न को गलत तरीके से पढ़ा। मुक्त संस्करण को बाहर करने के लिए आप फ्रीवर्सन को बाहर करने के लिए वांछित निर्भरता के साथ ProVersionCompile और partnerVersionCompile का उपयोग करेंगे।

dependencies { 
    proVersionCompile 'com.google.android.gms:play-services-analytics:8.4.0' 
    partnerVersionCompile 'com.google.android.gms:play-services-analytics:8.4.0' 
} 
+0

यह काम नहीं करता है। क्या मैं निर्भरता को अक्षम कर सकता हूं, लेकिन मैं ग्रेबल प्लगइन को बंद नहीं कर सकता (प्लगइन लागू करें: 'com.google.gms.google-services'), जो हर बार संकलन समय पर google-services.json की तलाश में है। – user3634297

+0

यह कई स्वाद और google-services.json के साथ एक समस्या है। लागू प्लगइन com.google.gms का उपयोग करें: google-services: 2.0.0-alpha3। फिर यह आपको प्रत्येक स्वाद निर्देशिका में google-services.json फ़ाइल रखने का समर्थन करता है। एप्लिकेशन/src/ freeVersion/google-services.json proVersion/google-services.json partnerVersion/google-services.json – Joopkins

+0

नहीं, ये काम नहीं करता है। त्रुटि: (135, 0) आईडी 'com.google.gms के साथ प्लगइन: google-services: 2.0.0-alpha3' नहीं मिला। – user3634297

8

freeCompile के उपयोग के नोटिस और घोषणा की एक चर flavor सशर्त प्लगइन लागू करने के लिए करें।

apply plugin: 'com.android.application' 

def flavor 

android { 

    .... 

    .... 

    productFlavors { 
     free { 
      applicationId "com.anandbibek.builditbigger.free" 
      flavor = "free" 
     } 
     paid { 
      applicationId "com.anandbibek.builditbigger.paid" 
      flavor = "paid" 
     } 
    } 
} 

dependencies { 

    // Added for AdMob 
    freeCompile 'com.google.firebase:firebase-ads:9.6.1' 

    compile 'com.android.support:appcompat-v7:24.2.1' 
    compile 'com.google.code.findbugs:jsr305:2.0.1' 

} 
if(flavor == "free") { 
    apply plugin: 'com.google.gms.google-services' 
} 

सुनिश्चित करें कि आपने स्वाद विशिष्ट फ़ोल्डर में google-services.json फ़ाइल डालें। मेरे मामले में, मैंने इसे app/src/free में ही रखा है। यह सुविधा तब उपलब्ध होती है जब आप अपनी मुख्य प्रोजेक्ट ग्रेडल फ़ाइल में classpath 'com.google.gms:google-services:3.0.0' का उपयोग करते हैं।

+1

यह (अब नहीं?) काम करता है, क्योंकि मान हमेशा अंतिम परिभाषित स्वाद पर सेट किया जाएगा :-( – Kelevandos

+0

अभी भी मेरे लिए काम करता है। 'स्वाद' चर का मान तय किया जाता है कार्यों को धीरे-धीरे चलाएं। शायद आप दोनों स्वादों को चला रहे हैं और बाद में चर का उपयोग कर रहे हैं? – anandbibek

+0

मैंने इसे लॉगिंग करने का प्रयास किया और वास्तव में सभी 3 स्वादों को एक के बाद एक कहा जाता है, और अंतिम मान हमेशा अंतिम मॉड्यूल में एक सेट होने के बाद समाप्त होता है :(यदि नीचे दिए गए कोड को केवल एक बार बुलाया जाता है, तो उन 3 को बदलें: ( – Kelevandos

संबंधित मुद्दे