android - पैकेज नाम(Google Analytics) के लिए कोई मेलिंग क्लाइंट नहीं मिला-कई उत्पादफ्लवर्स और बिल्डटाइप्स




android-studio gradle (20)

प्रसंग:

मैं अपने ऐप के लिए Google Analytics सेट करने का प्रयास कर रहा हूं। (4 कस्टम buildTypes और कुछ productFlavors से अधिक productFlavors )

यह ठीक काम करता है जब मैं Build Variant चयन करता हूं जिसके पास com.my.app.package.name ( google-services.json उत्पन्न करते समय उपयोग किया जाने वाला पैकेज नाम) के लिए सेट किया गया है। लेकिन, मेरे अन्य स्वादों में विभिन्न अनुप्रयोग हैं।

मैंने इसे स्थापित करने के लिए ऑफिशियल डिगुइड का अनुसरण किया।

त्रुटि मुझे तब मिलती है जब Build Variants Tab में किसी अन्य बिल्ड वेरिएंट का चयन किया जाता है (जिसमें एक अलग applicationId (पैकेज नाम) होता है:

त्रुटि: कार्य के लिए निष्पादन विफल रहा ': ऐप: processAllcategoriesDebugfreeGoogleServices'।

पैकेज नाम 'com.my.app.package.name.debug' के लिए कोई मेलिंग क्लाइंट नहीं मिला

त्रुटि संदेश की व्याख्या:

Debugfree ऊपर त्रुटि संदेश में टास्क नाम में मेरा कस्टम buildType और Allcategories मेरे productFlavors से एक है।

मैं त्रुटि को समझता हूं और जानता हूं कि पैकेज का नाम जस का निर्माण करते समय मैंने जो उपयोग किया था, उससे अलग है, लेकिन यही वह है जो मैं चारों ओर एक रास्ता निकालने की कोशिश कर रहा हूं।

संकट:

अब, google-services.json app फ़ोल्डर में रहता है और इसलिए मैं उन्हें स्वाद विशिष्ट स्रोत सेट फ़ोल्डर में ड्रॉप करके प्रत्येक उत्पाद स्वाद के लिए अलग करने में सक्षम नहीं हो रहा हूं।

प्रशन:

  1. मेरा कस्टम byildType डिबगिंग प्रत्यय के लिए .debug to the applicationId (पैकेज नाम)। क्या कोई तरीका है जिससे मैं इसे google-services.json साथ काम कर .debug जिसमें मेरी रिलीज़ applicationId (यानी बिना प्रत्यय के। .debug )।
  2. क्या अलग-अलग फ़ाइलों और कार्यों को app फ़ोल्डर में कॉपी करने के लिए अलग-अलग फ़ाइलों और कार्यों का उपयोग किए बिना एक ही google-services.json फ़ाइल में कई उत्पाद फ्लेवर कॉन्फ़िगर करने का एक तरीका है। मुझे पता है कि यह इस पोस्ट में वर्णित task का उपयोग करके किया जा सकता है। वहाँ सिर्फ एक फ़ाइल के लिए एक आसान तरीका है या सही फ़ाइल ग्रेडिंग विन्यास पर आधारित है?
  3. मुझे google-services.json में package_name फ़ील्ड दिखाई com.my.app.package.namecom.my.app.package.name पास पैकेज का नाम com.my.app.package.name । क्या मैं सभी बिल्ड वेरिएंट के लिए काम करने के लिए कई पैकेज नाम मैन्युअल रूप से जोड़ सकता हूं? यदि हाँ, तो कैसे करें? दस्तावेज़ों में कोई निर्देश नहीं मिला।

जब भी आप package name बनाते हैं या अपडेट करते हैं, तो सुनिश्चित करें कि आपका पैकेज नाम बिल्कुल एक ही है [ऊपरी मामला और निचला मामला]

नीचे कदम है।

1)। एप्लिकेशन स्तर gradle फ़ाइल में ऐप्लिकेशन की जाँच करें,

2)। अपनी google-services.json फ़ाइल में package_name जाँच करें,

3)। अपने AndroidManifest फ़ाइल में package जाँच करें

और पूर्ण पुष्टि के लिए अपने वर्किंग पैकेज डायरेक्टरी का नाम बनाएं ("com.example.app") भी वही है।


1. सत्यापित पैकेज का नाम और आवेदन आईडी समान होना चाहिए

2. Google- services.json पैकेज का नाम सत्यापित करें जो ऐप फ़ोल्डर में उपलब्ध है


Im देशी से आ रहा है, लेकिन मुझे लगता है कि यह इस सवाल पर भी लागू होता है। विस्तृत विवरण देना।

फ़ाइल के भीतर android/app/build.gradle खोज के लिए applicationId ( android भीतर, defaultConfig )

और यह सुनिश्चित करें कि यह मूल्य समान है

client[0]client_info.android_client_info.package_name

google-services.json भीतर मान के रूप में।


अगर इसमें से कोई भी आप लोगों के लिए काम नहीं करता है, तो मेरी समस्या एक पैकेज के नाम के साथ थी जो 'कॉम' से शुरू नहीं हुई थी। इसे बदल दिया, अब यह काम करता है।

उम्मीद है की वो मदद करदे


अपनी परियोजना निर्देशिका पर जाएं और ऐप / src पथ पर फ़ोल्डर बनाएं, जिसने आपके उत्पाद के स्वादों (जैसे अल्फा, बीटा, स्टोर या कभी आपके स्वाद का नाम क्या है) का नाम दिया है। फिर अपनी Google-services.json फ़ाइल को प्रत्येक फ़ोल्डर में कॉपी करें। अपने प्रत्येक उत्पाद स्वाद की google-services.json फ़ाइल जिसे आपने सबफ़ोल्डर किया है, पर "package_name" फ़ील्ड बदलना न भूलें।


अपने google-सेवाओं पर अपने पैकेज के नाम की जाँच करें। इसे अपने ऐप के स्थानीय पैकेज नाम के साथ समान होना चाहिए

उदाहरण

"client_info": {
    "mobilesdk_app_id": "1:6596814400689:android:65d6f25f5006145",
    "android_client_info": {
      "package_name": "com.my.app.package.name"
    }

इस स्थिति में मेरा स्थानीय पैकेज नाम com.my.app.package.name है इसलिए मैंने अपने पैकेज का नाम google-services में बदल दिया है। मेरे स्थानीय पैकेज नाम के साथ


आप इस समस्या को हल करने के लिए ऐसा कर सकते हैं।


आपको google-services.json को app/ dir में रखना होगा। और प्रत्येक बिल्ड प्रकार के लिए, app/src फ़ोल्डर में अकॉर्डेंट डायरेक्टर होना चाहिए।

उदाहरण के लिए, यदि आपके पास रिलीज़ और डीबग है:

app/google-services.json
app/src/debug/google-services.json

सभी Google-services.json फ़ाइलों में आपको बिल्ड प्रकार के अनुसार सही package_name निर्दिष्ट करना चाहिए।

उदाहरण के लिए, डिबग डीर के अंदर यह {com.myapp}.debug जैसा होना चाहिए


इसका अर्थ है कि आपकी google-services.json फ़ाइल या तो आपके एप्लिकेशन से संबंधित नहीं है (क्या आपने किसी अन्य ऐप के लिए google-services.jj डाउनलोड किया है?) ... तो इसे हल करने के लिए निम्न कार्य करें:

1: फायरबेस में साइन इन करें और अपना प्रोजेक्ट खोलें। 2: सेटिंग्स आइकन पर क्लिक करें और प्रोजेक्ट सेटिंग्स चुनें। 3: आपके एप्लिकेशन कार्ड में, उस ऐप के पैकेज का नाम चुनें, जिसके लिए आपको सूची से एक कॉन्फ़िगर फ़ाइल की आवश्यकता है। 4: google-services.json पर क्लिक करें। डाउनलोड पूरा होने के बाद, अपने प्रोजेक्ट रूट फ़ोल्डर में नई google-services.json जोड़ें, जो मौजूदा एक की जगह ले रही है..या सिर्फ पुराने को हटा दें। अपनी पहली परियोजना के लिए google-services.json को डाउनलोड करना बहुत सामान्य है और फिर यह मान लें या भूल जाएं कि यह विशिष्ट google-services.json आपके वर्तमान प्रोजेक्ट के लिए अकेले तैयार की गई है, क्योंकि कोई अन्य नहीं क्योंकि सभी परियोजनाओं का एक अद्वितीय पैकेज नाम है।


इसे हल करना सरल है: बस यह सुनिश्चित कर लें कि आपके ऐप में पैकेज का नाम / build.gradle फ़ाइल आपके ऐप मैनिफेस्ट फ़ाइल के समान पैकेज नाम है। और सुनिश्चित करें कि पैकेज का नाम सही है। इसका हल निकालना चाहिए


मुझे यह समस्या तब भी होती है जब मैं अपने एप्लिकेशन के पैकेज का नाम बदलता हूं।

अपने Android स्टूडियो प्रोजेक्ट में "google-services.json" फ़ाइल ढूंढें। खोलो इसे। और जांचें कि क्या आपके एप्लिकेशन का पैकेज नाम इस फाइल में लिखा हुआ है।

आपके एप्लिकेशन का पैकेज नाम और पैकेज का नाम "google-services.json" फ़ाइल में लिखा होना चाहिए।


मुझे लगता है कि आपने फ़ायरबेस जसन फ़ाइल "google-services" जोड़ दी है। नई फ़ाइल के साथ .json। एक नई फ़ाइल बनाना सुनिश्चित करें कि फायरबेस से json फाइल कैसे बनाई जाए, इस लिंक की जाँच करें और यह आपके पैकेज नाम के साथ मेल खाना चाहिए

दूसरी बात यह है कि यदि आप पैकेज का नाम बदल रहे हैं तो ड्रॉप डाउन से प्रोजेक्ट का चयन करते समय फाइलों के नीचे क्लिक करने पर विकल्प "पथ में बदलें" का उपयोग करें। आपको पूरे प्रोजेक्ट में पैकेज के नाम की खोज करनी होगी और उसे बदलना होगा!

उम्मीद है की यह मदद करेगा !


मैंने इसका हल ढूंढ लिया है:

हमें फायरबेस प्रोजेक्ट में दो "ऐप" बनाने हैं, और फिर हम किसी एक ऐप से जसन फाइल डाउनलोड कर सकते हैं (मैं फ्लेवर्ड ऐप से डाउनलोड किया गया)। इसमें दोनों ऐप्स का डेटा होगा। हम बस ऐप की रूट डायरेक्टरी में json फाइल कॉपी कर सकते हैं।

स्रोत: https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app-builds.html


मैंने इसे दो स्रोत बनाकर हल किया, एक मुफ्त और एक भुगतान किया। इन दोनों फ़ोल्डरों में आवश्यक जावा कोड और संसाधन फाइलें होंगी, जिन्हें विशेष स्वाद की आवश्यकताओं को संपादित किया जाएगा। उदाहरण के लिए, आप जावा क्लासेस और लेआउट फाइल दोनों से अदा में AdMob कोड निकालना चाहेंगे।


यदि Google-services.json फ़ाइल पर आपका पैकेज नाम ठीक है, तो gradle.properties फ़ाइल पर जाएँ। फिर अपना APPLICATION_ID = "com.yourpackage.name" बदलें


यह त्रुटि तब होती है जब आपके पास अपनी परियोजना में Google सेवाएँ Json फ़ाइल डाउनलोड होती है जिसका पैकेज नाम आपके प्रोजेक्ट के पैकेज नाम से मेल नहीं खाता है।

हाल ही में परियोजना के पैकेज का नाम बदला? यह सभी वर्गों को अद्यतन करता है लेकिन ग्रेड फ़ाइल को नहीं । इसलिए जांचें कि क्या आपके ग्रेडेल में आपके पैकेज का नाम सही है, और शायद मैनिफेस्ट भी।


सबसे पहले, ग्रेडेल में एप्लिकेशन पैकेज में एक प्रत्यय जोड़ें:

yourFlavor {
   applicationIdSuffix "yourFlavor"
}

इससे आपका पैकेज नाम रखा जाएगा

com.domain.yourapp.yourFlavor

फिर अपने वर्तमान प्रोजेक्ट के तहत फायरबेस पर जाएं और इस पैकेज के नाम के साथ एक और एंड्रॉइड ऐप जोड़ें।

फिर मौजूदा Google-services.json फ़ाइल को उस नए के साथ बदलें, जिसमें आप नए ऐप को बनाते हैं।

तब आप कुछ "क्लाइंट_इनफो" अनुभागों के साथ समाप्त हो जाएंगे। तो आपको कुछ इस तरह से समाप्त करना चाहिए:

"client_info": {
    "mobilesdk_app_id": "YOUR APP INFO",
    "android_client_info": {
      "package_name": "com.domain.yourapp"
    }
  }

"client_info": {
    "mobilesdk_app_id": "YOUR APP INFO - will be different then other app info",
    "android_client_info": {
      "package_name": "com.domain.yourapp.yourFlavor"
    }
  }

सुनिश्चित करें कि "google-services.json" फ़ाइल में आपके पैकेज का नाम आपके ऐप्स के पैकेज नाम के साथ समान है।


client_id सेवाओं में client_id और client_id जाँच करें। आपके पैकेज के नाम के अनुसार सही मूल्य है।

आपको उल्लेखित फ़ाइल को client_id और package_name क्षेत्र में संबंधित पैकेज नाम के साथ फ्लेवर निर्देशिका में जोड़ना चाहिए।


पैकेज नाम 'com.tf' के लिए कोई मेलिंग क्लाइंट नहीं मिला, मुझे पूरा यकीन है कि google-services.json में "package_name" ऐप के ग्रेड में आपके "applicationId" के साथ मेल नहीं खा रहा है।

एप्लिकेशन श्रेणी:

defaultConfig {
        applicationId "com.tf" //replace with the package_name in google-services.json =
        minSdkVersion 23
        targetSdkVersion 26
        versionCode 7
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

गूगल-services.json

"client_info": {
        "mobilesdk_app_id": "1:23978655351:android:2b2fece6b961cc70",
        "android_client_info": {
          "package_name": "in.ac.geu.debug"
        }
      },

समाधान : सुनिश्चित करें कि package_name और applicationId समान होना चाहिए।







android-productflavors