क्या "com.google.firebase.provider.FirebaseInitProvider" वर्ग नहीं मिला?


156

ऐप लॉन्च पर मुझे नीचे अपवाद मिल रहा है।

java.lang.RuntimeException: Unable to get provider com.google.firebase.provider.FirebaseInitProvider: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider" on path: DexPathList[[zip file "/data/app/com.vfirst.ifbagro-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.vfirst.ifbagro-1, /vendor/lib, /system/lib]]
at android.app.ActivityThread.installProvider(ActivityThread.java:4993)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4596)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4536)
at android.app.ActivityThread.access$1300(ActivityThread.java:149)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1353)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5214)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:739)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider" on path: DexPathList[[zip file "/data/app/com.vfirst.ifbagro-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.vfirst.ifbagro-1, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
at android.app.ActivityThread.installProvider(ActivityThread.java:4978)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:4596) 
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4536) 
at android.app.ActivityThread.access$1300(ActivityThread.java:149) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1353) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5214) 
at java.lang.reflect.Method.invokeNative(Native Method) 

यहाँ app स्तर build.gradle है

apply plugin: 'com.android.application'
apply plugin: 'android-apt' 

android {
compileSdkVersion 24
buildToolsVersion "24.0.1"

defaultConfig {
    applicationId "com.vfirst.ifbagro"
    minSdkVersion 17
    targetSdkVersion 24
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])


compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.android.support:design:24.2.1'
compile 'com.android.support:support-v4:24.2.1'
compile 'com.google.android.gms:play-services-gcm:9.4.0'
compile 'com.google.android.gms:play-services-location:9.4.0'
compile 'com.android.support:multidex:1.0.1'
compile 'com.google.firebase:firebase-messaging:9.4.0'
compile 'com.google.android.gms:play-services:9.4.0'
testCompile 'junit:junit:4.12'
}

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

यह मेरा एप्लीकेशन लेवल बिल्ड.ग्रेड है

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
repositories {
    jcenter()
    mavenCentral()
}
dependencies {
    classpath 'com.android.tools.build:gradle:2.2.0'
    classpath 'com.google.gms:google-services:3.0.0'
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
    classpath 'com.google.gms:google-services:3.0.0'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}
}

allprojects {
repositories {
    jcenter()
}
}

task clean(type: Delete) {
     delete rootProject.buildDir
}

मसला कैसे हल करें?


के संभावित डुप्लिकेट stackoverflow.com/questions/37312103/...
जे राठौड़ आरजे

मैंने पहले ही उन सभी उत्तरों की कोशिश की थी। कुछ भी नहीं बाहर काम करता है
wishy

आपके मैनिफ़ेस्ट या google-services में कोई समस्या प्रतीत हो रही है। Json सुनिश्चित करें कि वे सही हैं। क्या आप अपनी मैनिफ़ेस्ट फ़ाइल पोस्ट कर सकते हैं?
एम ठक्कर

6
आप प्रकट परिवर्तन MultiDex के लिए आवश्यक किया था: android:name="android.support.multidex.MultiDexApplication"? यदि मल्टीडेक्स को सही तरीके से कॉन्फ़िगर किया गया है तो आपको ऐप इनिट के दौरान लॉगकट संदेश दिखाई देगा जैसे I/MultiDex: install done:।
बॉब स्नाइडर

झटपट रन सक्षम जांचें यदि हां, तत्काल रन अक्षम करें।
प्रताप बदावथ

जवाबों:


145

मेरे पास एक ही त्रुटि थी और मैंने इसे मल्टीडेक्स के साथ हल किया, जैसे कि इस लिंक पर वर्णित है: https://developer.android.com/studio/build/multidex.html


कभी-कभी यह केवल मल्टीडेक्स को सक्षम करने के लिए पर्याप्त नहीं है।

यदि स्टार्टअप के दौरान आवश्यक किसी भी वर्ग को प्राथमिक DEX फ़ाइल में प्रदान नहीं किया जाता है , तो आपका ऐप त्रुटि java.lang.NoClassDefFoundError के साथ क्रैश हो जाता है । https://developer.android.com/studio/build/multidex#keep

स्टार्टअप के दौरान FirebaseInitProvider की आवश्यकता है।

इसलिए आपको प्राथमिक DEX फ़ाइल में आवश्यक रूप से FirebaseInitProvider को मैन्युअल रूप से निर्दिष्ट करना होगा ।

build.gradle फ़ाइल

android {
    buildTypes {
        release {
            multiDexKeepFile file('multidex-config.txt')
            ...
        }
    }
}

multidex-config.txt (build.gradle फ़ाइल के समान निर्देशिका में)

com/google/firebase/provider/FirebaseInitProvider.class

1
आप अद्भुत हैं <3 बहुत बहुत धन्यवाद आपने मेरा दिन बचाया <3
मोहम्मद एतेफ

24
अरे यह अपवाद: इसके कारण: java.lang.ClassNotFoundException: श्रेणी "com.google.firebase.provider.FirebaseInitProvider" नहीं मिली, क्योंकि यदि आप प्रश्न देखते हैं, तो मल्टीडेक्स को सक्षम करने से कोई लेना-देना नहीं है। multDexEnabled सक्षम है!
जॉर्जेसी

3
यह त्रुटि मल्टीडेक्स से नहीं है, उसने सिर्फ सभी चरणों को पूरा नहीं किया है, क्योंकि आप उसकी अभिव्यक्ति या उसके मुख्य वर्ग को नहीं देख सकते हैं।
AMAN77

3
यह काम किया। मैंने अपने ग्रेड फ़ाइल में मल्टीडेक्स सक्षम किया था, लेकिन एंड्रॉइड मेनिफेस्ट भाग याद कर रहा था!
क्रिकार

3
इसके अलावा, सुनिश्चित करें कि आपकी Applicationकक्षा किस से फैली हुई है MultiDexApplication()। यह मेरे मामले में गायब था।
नेल्सन अल्मेंद्र

86

मैंने भी उसी मुद्दे का सामना किया और आखिरकार Instant Runएक एंड्रॉइड स्टूडियो में अक्षम करके इसे हल किया ।

सेटिंग्स → बिल्ड, एक्ज़ीक्यूशन, परिनियोजन → इंस्टेंट रन और अनचेक करें इंस्टेंट रन सक्षम करें

अपडेट करें:

लेटेस्ट एंड्रॉयड स्टूडियो 3.5+ में इंस्टेंट रन का कोई विकल्प उपलब्ध नहीं है। यह केवल पुराने संस्करणों के लिए लागू होना चाहिए।


8
मेरे लिए भी वैसा ही। यह समस्या का कारण था - मल्टीडेक्स या अन्य उत्तरों में से कोई भी नहीं।
user3562927

3
लगता है कि यह एंड्रॉइड स्टूडियो 2.3 के साथ एक मुद्दा है। तत्काल रन को अक्षम करने से मेरे लिए भी काम किया गया, लेकिन यह आदर्श समाधान नहीं है :(
थरका देविंदा

1
मुझे एक और फर्म से दो प्रोजेक्ट विरासत में मिले। कोड बेस, मैनिफ़ेस्ट और ग्रेडल कॉन्फ़िगरेशन व्यावहारिक रूप से एक-दो मामूली वस्तुओं के लिए समान है। एक परियोजना बनाता है और ठीक चलता है, दूसरा नहीं है। इंस्टेंट रन बंद कर दिया और वे दोनों अब भाग गए। अजीब। यह एंड्रॉइड स्टूडियो उपयोग कर रहा है। 2.3।
joeblow23

3
मुझे एएस 3.1 के साथ यह बहुत ही समस्या का सामना करना पड़ा और एपीआई 26 को चलाने वाला एक एमुलेटर। इससे पहले कि मुझे एपीआई 19-25 के साथ कोई समस्या नहीं हुई। तत्काल चलाने को अक्षम करने से मुझे ऐप चलाने की सुविधा मिलती है। धन्यवाद।
मार्सिन जेदिनक

1
इंस्टेंट रन को डिसेबल करने से मेरे लिए यह समस्या हल नहीं होती है।
एल्योशक

49

बिल्ड.ग्रेडल (मॉड्यूल: ऐप) फ़ाइल में, डिफ़ॉल्ट कोड नीचे दिए गए कोड को डालें:

  defaultConfig {
        applicationId "com.***.****"
minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }

और निर्भरता में डालें:

implementation 'com.android.support:multidex:2.0.1'

फिर कोड को प्रकट करने के लिए जोड़ें:

<application 
    android:name="android.support.multidex.MultiDexApplication"

1
मैं, यह कोशिश कर रहा हूं, अगर यह काम करेगा तो मैं वोट करूंगा और टिप्पणी करूंगा
कामिल इबादोव

45

मेरे (YouTube प्लेयर प्रोजेक्ट) में भी मुझे यही समस्या थी ... और निम्नलिखित ने मेरे लिए समस्या हल की:

  1. इस कोड को अपने build.gradleमॉड्यूल (मॉड्यूल: ऐप) में जोड़ें defaultConfing:

    defaultConfig {
        ....
        ....
        multiDexEnabled = true
    }
  2. इस कोड को अपने build.gradleमॉड्यूल (मॉड्यूल: ऐप) में जोड़ें dependencies:

    dependencies {
        compile 'com.android.support:multidex:1.0.1'
        .....
        .....
    }
  3. खुला AndroidManifest.xmlऔर भीतर application:

    <application
        android:name="android.support.multidex.MultiDexApplication"
        .....
        .....
    </application>

    या यदि आपके पास अपना ऐप वर्ग है, तो इसे मल्टीडेक्स एप्लाइंसे से बढ़ाएं:

    public class MyApp extends MultiDexApplication {
    .....

और अंत में, मुझे लगता है कि आपके पास एसडीके प्रबंधक में एक्स्ट्रा में एंड्रॉइड सपोर्ट रिपॉजिटरी डाउनलोड होनी चाहिए ।


1
मैंने "MultiDex.install (यह);" लेकिन यह काम नहीं किया। MultiDexApplication के साथ आवेदन वर्ग का विस्तार किया।
तिजोरी

33

बस अपने आवेदन वर्ग में निम्नलिखित विधि को ओवरराइड करें।

public class YourApplication extends Application {

    @Override
    protected void attachBaseContext(Context context) {
        super.attachBaseContext(context);
        MultiDex.install(this);
    }
    @Override
    public void onCreate() {
        super.onCreate();
        Realm.init(this); //initialize other plugins 

    }
}

android:nameमैनिफेस्ट में सामान के लिए नहीं गिरने के लिए एक
चिसको

सबसे सरल और सबसे अच्छा जवाब
kader kabore

यदि आप एक कस्टम एप्लिकेशन क्लास का उपयोग कर रहे हैं तो यह उत्तर है। अन्य उत्तर समस्या को ठीक नहीं करेंगे।
मक्खई गुरुंग

25

जब आपका ऐप और लाइब्रेरीज़ यह संदर्भ 65,536 से अधिक हो जाते हैं, तो आप एक बिल्ड त्रुटि का सामना करते हैं जो इंगित करता है कि आपका ऐप एंड्रॉइड आर्किटेक्चर की सीमा तक पहुंच गया है

इस सीमा से बचने के लिए आपको मल्टीडेक्स के लिए अपने ऐप को कॉन्फ़िगर करना होगा

यदि आपका minSdkVersion 21 या अधिक पर सेट है , तो आपको बस इतना करना होगा कि आपके मॉड्यूल-स्तर build.gradle फ़ाइल में सत्य के लिए मल्टीडेक्सिबल सेट किया जाए, जैसा कि यहाँ दिखाया गया है:

android {
    defaultConfig {
        ...
        minSdkVersion 21 
        multiDexEnabled true
    }
    ...   
}

इसके अलावा , यदि आपका minSdkVersion 20 या उससे कम पर सेट है, तो आपको मल्टीडेक्स सपोर्ट लाइब्रेरी का उपयोग इस प्रकार करना होगा:

1। मल्टीडेक्स को सक्षम करने के लिए मॉड्यूल-लेवल बिल्ड.ग्रेड फ़ाइल को संशोधित करें और एक निर्भरता के रूप में मल्टीडेक्स लाइब्रेरी को जोड़ने के लिए, जैसा कि यहां दिखाया गया है:

android {
    defaultConfig {
        ...
        minSdkVersion 15 
        multiDexEnabled true
    }
    ...
 }

dependencies {
        implementation 'com.android.support:multidex:1.0.3'
}

2। इस पर निर्भर करते हुए कि क्या आप अनुप्रयोग वर्ग को ओवरराइड करते हैं, निम्न में से कोई एक कार्य करें:

  • यदि आप एप्लिकेशन क्लास को ओवरराइड नहीं करते हैं, तो एंड्रॉइड सेट करने के लिए अपनी मैनिफ़ेस्ट फ़ाइल संपादित करें: टैग में नाम निम्नानुसार है:

    <application
        android:name="android.support.multidex.MultiDexApplication" >
        ...
    </application>
  • यदि आप अनुप्रयोग वर्ग को ओवरराइड करते हैं, तो इसे मल्टीडेक्स्पेक्सेशन (यदि संभव हो तो) के विस्तार के लिए निम्नानुसार बदलें:

   public class MyApplication extends MultiDexApplication { ... }
  • और यदि आप एप्लिकेशन क्लास को ओवरराइड करते हैं, लेकिन बेस क्लास को बदलना संभव नहीं है, तो आप इसके बजाय संलग्नक को बंद कर सकते हैं () विधि और मल्टीडेक्स को सक्षम करने के लिए MultiDex.install (यह) कॉल करें:

   public class MyApplication extends SomeOtherApplication {
     @Override
     protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
     }
   }

एप्लिकेशन को MultiDexApplication का विस्तार करने की आवश्यकता क्यों है?
जेसन

1
MultiDexApplication सहायक पुस्तकालय वर्ग है। यह अनुप्रयोग वर्ग को लागू करता है और मल्टीडेक्स पंजीकरण के लिए कार्य करने के लिए एक विधि का नाम संलग्न करता है। यदि आप अनुलग्नकबेस विधि से आगे निकल जाते हैं, तो आपको इस वर्ग को विस्तारित करने की आवश्यकता नहीं है।
सोकमैन पोन

1
इसने इसे मेरे लिए 2019 में रिएक्ट नेटिव के साथ तय किया, लेकिन मेनएप्लिसिएशन.जावा में 2 आयात गायब है: import android.content.Context;औरimport android.support.multidex.MultiDex;
xaphod

1
आपके उत्तर ने मुझे मेरे ऐप को वापस कॉम्पिटिटर बनाने में मदद की।
आलोक विश्वकर्मा

18

सक्षम multidexकरना एक अच्छा समाधान नहीं है क्योंकि multidexएंड्रॉइड में एक और उपयोग है यह उत्तर देखें कि मल्टीडेक्स क्या है

समाधान @Shylendra Madda ने कहा कि तुरंत चलाने को अक्षम कर रहा है

सेटिंग्स → बिल्ड, एक्ज़ीक्यूशन, परिनियोजन → इंस्टेंट रन और अनचेक करें इंस्टेंट रन सक्षम करें

मुझे लगता है कि इस समस्या का कारण यह है कि जब तत्काल रन सक्षम किया जाता है, तो एंड्रॉइड स्टूडियो लाइब्रेरियों firebaseको उत्पन्न नहीं करता है जैसे कि एपीके को कम करना परियोजना निर्माण समय को कम करना क्योंकि firebase पुस्तकालय और अन्य पुस्तकालय जैसे कि mapsऔर अन्य प्ले सेवाओं में मौजूद हैं और प्ले सेवाएं स्थापित हैं एंड्रॉइड डिवाइस पर अगर तत्काल रन सक्षम है तो उन्हें बिल्ड टाइम तेज करने के लिए जेनरेट किए गए एपीके में डालने की जरूरत नहीं है।

इसलिए जब आप एपीके निकालें और इसे किसी अन्य डिवाइस पर स्थापित करें तो आपको यह अपवाद दिखाई देगा


1
यह सही समाधान है
घनश्याम बागुल

इंस्टेंट रन को डिसेबल करने से मेरे लिए समस्या हल नहीं होती है।
एल्योशक

एंड्रॉइड स्टूडियो 3.5.1 में, बिल्ड, निष्पादन, परिनियोजन अनुभाग में कोई इंस्टेंट रन आइटम नहीं है।
वर्गीज

@Vergiliy उन्होंने इसे लागू किए गए परिवर्तनों के साथ बदल दिया , अधिक जानकारी के लिए रिलीज़ ब्लॉग पोस्ट android-developers.googleblog.com/2019/08/… देखें और डॉक्स डेवलपर. android.com/studio/run#apply-changes के बारे में अधिक जानकारी के लिए आवेदन करें परिवर्तन
एडलाट फीजी

14

नीचे दिए गए समाधान को खोजने के लिए मैंने सभी समाधानों की कोशिश करने के बाद एक ही मुद्दे का सामना किया है।

यदि आपने प्रोलगार्ड नियम लागू किया है, तो प्रोगार्ड नियमों में नीचे की पंक्ति जोड़ें

-keep class com.google.firebase.provider.FirebaseInitProvider

और इसकी समस्या का समाधान।


@gunavant patel भाई कृपया मुझे बताएं कि प्रोग्रेस में कैसे जोड़ें
गोवतमन एम।

1
@gunavant patel मुझे लगता है कि यह मेरी समस्या को हल कर देगा ... क्या आप नमूना कोड पोस्ट कर सकते हैं जहां इस लाइन को रखने के लिए-keep class com.google.firebase.provider.FirebaseInitProvider
गोथमन एम

@ GowthamanM सबसे पहले आप ऐप / बिल्ड.ग्रेड फ़ाइल में प्रोगार्ड को सक्षम करें। यदि सक्षम है तो आप ऐप / प्रोगार्ड-rules.pro में प्रोगार्ड-रूल्स फ़ाइल खोजें। यदि आप प्रोगार्ड को सक्षम नहीं करते हैं, तो इसकी आपको नहीं है।
गुनवंत पटेल

buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }कृपया सक्षम करने के लिए मुझे बताएं सर
गोवर्थमान एम

यदि आपने प्रोगार्ड को सक्षम नहीं किया है तो समस्या अलग है। लेकिन मैं आपको दिखाता हूं कि कैसे सक्षम है। रिलीज़ में "minifyEnabled true" जोड़ें या यदि आप डिबग के लिए सक्षम करना चाहते हैं तो डिबग प्रकार में भी जोड़ें।
गुनवंत पटेल

8

1: ग्रेड पर जाएं मल्टीडेक्नेबल को सक्षम करें और निर्भरता में मल्टीडेक्स लाइब्रेरी जोड़ें।

android {
   ...
   defaultConfig {
      multiDexEnabled true
      ...
   }
}

dependencies {
  // add dependency 
  implementation 'com.android.support:multidex:1.0.1'
}

2: मेनिफेस्ट फ़ाइल पर जाएँ और android लिखें: name = "। MyApplication" (वर्ग नाम (MyApplication) वैकल्पिक है आप जो चाहें लिख सकते हैं)।

    <application
        android:name=".MyApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        .
        .
        .
        .
        .
    </application>

3: जैसा कि आपने android: name = "लिखा है। MyApplication" मैनिफ़ेस्ट फ़ाइल में इनसाइड एप्लीकेशन। यह आपको एक त्रुटि देगा क्योंकि आपने MyApplication class नहीं बनाई थी। MyApplication Class बनाएं, इसे "एप्लिकेशन" क्लास द्वारा विस्तारित करें या बस पर क्लिक करें। माइनेप्लिकेशन, एक सिंटैक्स के बाईं ओर एक छोटा लाल गुब्बारा दिखाई देता है, उस पर आप मेनू में (MyApplication class बनाएँ) देखेंगे, उस पर क्लिक करें और शामिल करें नीचे विधि उस वर्ग के अंदर।

    public class MyApplication extends Application {

    @Override 
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this);
    } 

यदि आप अधिक जानकारी प्राप्त करना चाहते हैं तो इस लिंक पर क्लिक करें: [ https://developer.android.com/studio/build/multanx.html]

उम्मीद है, यह आपके लिए काम करता है।


7

सबसे पहले build.gradle (मॉड्यूल: एप्लिकेशन) में निम्नलिखित जोड़ें ---->

defaultConfig{
..
multiDexEnabled true
..
}

फिर उसी फ़ाइल में निम्नलिखित जोड़ें

dependencies{
...
compile 'com.android.support:multidex:1.0.1'
...
}

फिर AndroidManifest.xml में निम्नलिखित लिखें

<application
    android:name="android.support.multidex.MultiDexApplication"
    .....
    .....
</application>

बस। यह निश्चित रूप से काम करेगा


6

यदि आप अपने ऐप ग्रैडल में मल्टीडेक्स का उपयोग कर रहे हैं, तो अपने एप्लीकेशन क्लास में मल्टीडेक्स एपिलेशन को बढ़ाने के लिए एप्लिकेशन का विस्तार करें। यह रक्षात्मक रूप से काम करेगा


4

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

  @Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
}

और MultiDex.install (यह) जोड़ें; उस विधि में इसका मतलब है

  @Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

नोट : - उपरोक्त चरणों का पालन करना न भूलें


2

यह मल्टीडेक्स के कारण है।

हल करने के लिए कदम:

  1. Gradle-> निर्भरता में -> (compile'com.android.support: multidex: 1.0.1 ') निर्भरता में इसे जोड़ें

  2. आपके प्रोजेक्ट अनुप्रयोग में क्लास इस तरह MultiDexApplication बढ़ाता है (सार्वजनिक वर्ग MyApplication MultiDexApplication बढ़ाता है)

  3. भागो और जांच करो


2

इसमें आने वालों के लिए थोड़ा देर हो चुकी है, लेकिन अपने सुरक्षा नियमों की जांच करें! मैंने इस पर बहुत समय बर्बाद किया। आपके प्रूफ़ नियम महत्वपूर्ण फायरबेस फ़ाइलों में नाम बदल सकते हैं। यह वास्तव में केवल उत्पादन और तुरंत चलाने में एक समस्या साबित होता है :)

proguard-rules.pro

-keep class com.google.firebase.** { *; }
-keep class com.firebase.** { *; }
-keep class org.apache.** { *; }
-keepnames class com.fasterxml.jackson.** { *; }
-keepnames class javax.servlet.** { *; }
-keepnames class org.ietf.jgss.** { *; }
-dontwarn org.apache.**
-dontwarn org.w3c.dom.**

यह चाल चली, मल्टीडेक्स को सक्षम करने से समय बर्बाद करने के अलावा कुछ नहीं किया!
मैग्नस डब्ल्यू

2

जैसा कि पहले उल्लेख किया गया है, यह एक समस्या है multidex: आपको अपने build.gradleऔर पर कार्यान्वयन जोड़ना चाहिए MainApplication.java। लेकिन जो आप जोड़ते हैं वह वास्तव में इस बात पर निर्भर करता है कि आप AndroidX का समर्थन करते हैं या नहीं। यहाँ आपको इस समस्या को हल करने की आवश्यकता है:

  1. अगर आप AndroidX को सपोर्ट करते हैं

कोड की इन पंक्तियों को अपने build.gradleAndroid में रखें (android / app / build.gradle):

defaultConfig {
  applicationId "com.your.application"
  versionCode 1
  versionName "1.0"
  ...
  multiDexEnabled true // <-- THIS LINE
}
...
...
dependencies {
  ...
  implementation "androidx.multidex:multidex:2.0.1" // <-- THIS LINE
  ...
}

इन पंक्तियों को अपने MainApplication.javaAndroid में रखें (android / app / src / main / java /... / MainApplication.java):

package com.your.package;

import androidx.multidex.MultiDexApplication; // <-- THIS LINE
...
...
public class MainApplication extends MultiDexApplication { ... } // <-- THIS LINE
  1. यदि आप AndroidX का समर्थन नहीं करते हैं

कोड की इन पंक्तियों को अपने build.gradleAndroid में रखें (android / app / build.gradle):

defaultConfig {
  applicationId "com.your.application"
  versionCode 1
  versionName "1.0"
  ...
  multiDexEnabled true // <-- THIS LINE
}
...
...
dependencies {
  ...
  implementation "com.android.support:multidex:1.0.3" // <-- THIS LINE
  ...
}

इन पंक्तियों को अपने MainApplication.javaAndroid में रखें (android / app / src / main / java /... / MainApplication.java):

package com.your.package;

import android.support.multidex.MultiDex;; // <-- THIS LINE
...
...
public class MainApplication extends MultiDexApplication { ... } // <-- THIS LINE

1

आपको MultiDexApplicationइसके बजाय अपने एप्लिकेशन वर्ग का विस्तार करना चाहिए Application


0

यह समस्या तब आई जब मैं एंड्रॉइड ग्रैडल प्लगइन 3.4.0 के साथ एंड्रॉइड स्टूडियो 3.4 पर स्विच किया गया। जो R8 कंपाइलर के साथ काम करता है।

एंड्रॉइड ग्रैडल प्लगइन में अतिरिक्त पूर्वनिर्धारित ProGuard नियम फाइलें शामिल हैं, लेकिन यह अनुशंसा की जाती है कि आप proguard-android-optim.txt का उपयोग करें । अधिक जानकारी यहाँ

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile(
          'proguard-android-optimize.txt'),
          // List additional ProGuard rules for the given build type here. By default,
          // Android Studio creates and includes an empty rules file for you (located
          // at the root directory of each module).
          'proguard-rules.pro'
    }
}

0

मैं एक ही समस्या का सामना कर रहा था और मैंने इस मुद्दे को फायरबेस डेटाबेस संस्करण के रूप में फायरबैसेस्टोरेज संस्करण को बदलकर हल किया

 implementation 'com.google.firebase:firebase-core:16.0.8'
 implementation 'com.google.firebase:firebase-database:16.0.1'
 implementation 'com.google.firebase:firebase-storage:17.0.0'

सेवा

 implementation 'com.google.firebase:firebase-core:16.0.8'
 implementation 'com.google.firebase:firebase-database:16.0.1'
 implementation 'com.google.firebase:firebase-storage:16.0.1'

0

यदि आपके पास> 20 minsdkversion है, तो आपको नवीनतम Firebase Auth संस्करण का उपयोग करने की आवश्यकता है

कार्यान्वयन 'com.google.firebase: firebase-schem: 18.1.0'

और अगर आपको वास्तव में इसकी आवश्यकता नहीं है तो मल्टी-डेक्स को सेटअप करने की आवश्यकता नहीं है

मैं इस मुद्दे का सामना करना पड़ा जब मैंने फायरबेस हेल्पर से 16.0.5 का उपयोग किया है, लेकिन 18.1.0 में अपडेट होने पर इसे ठीक करने में सक्षम था।


0

यदि आप Xamarin.Form का उपयोग कर रहे हैं, तो आप "com.google.firebase.provider.FirebaseInitProvider" वर्ग नहीं खोज सकते हैं? चूंकि यह स्टार्टअप पर Google फायरबेस के साथ डीएक्स त्रुटि के साथ समस्या को कैप्चर करता है (इस समय अनसुलझे)।

मैं अल्पावधि में कोई सिकुड़ने का उपयोग करने के लिए वापस लौटा हूं और R8 अधिक स्थिर होने तक ProGuard का उपयोग करने की योजना बना रहा हूं।


-6

प्रोजेक्ट रूट पथ में जोड़ें google-services.json

dependencies {
compile 'com.android.support:support-v4:25.0.1'
**compile 'com.google.firebase:firebase-ads:9.0.2'**
compile files('libs/StartAppInApp-3.5.0.jar')
compile 'com.android.support:multidex:1.0.1'
  }
apply plugin: 'com.google.gms.google-services'

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