সরবরাহকারী com.google.firebase.provider.FirebaseInitProvider পাওয়া যায়নি


160

আমি নতুন ক্র্যাশ সরঞ্জামটি পরীক্ষা করছি: https://firebase.google.com/docs/crash/

পদক্ষেপগুলি অতিক্রম করার পরে, অ্যাপ্লিকেশনটি চালু হয় এবং এটি ক্র্যাশ করে বলে:

05-18 17:28:18.870 28743 28743 E AndroidRuntime: java.lang.RuntimeException: Unable to get provider com.google.firebase.provider.FirebaseInitProvider: java.lang.IllegalStateException: Incorrect provider authority in manifest. Most likely due to a missing applicationId variable in application's build.gradle.
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at android.app.ActivityThread.installProvider(ActivityThread.java:5156)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at android.app.ActivityThread.installContentProviders(ActivityThread.java:4748)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4688)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at android.app.ActivityThread.-wrap1(ActivityThread.java)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1405)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at android.os.Handler.dispatchMessage(Handler.java:102)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at android.os.Looper.loop(Looper.java:148)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at android.app.ActivityThread.main(ActivityThread.java:5417)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at java.lang.reflect.Method.invoke(Native Method)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
05-18 17:28:18.870 28743 28743 E AndroidRuntime: Caused by: java.lang.IllegalStateException: Incorrect provider authority in manifest. Most likely due to a missing applicationId variable in application's build.gradle.
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at com.google.firebase.provider.FirebaseInitProvider.zza(Unknown Source)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at com.google.firebase.provider.FirebaseInitProvider.attachInfo(Unknown Source)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    at android.app.ActivityThread.installProvider(ActivityThread.java:5153)
05-18 17:28:18.870 28743 28743 E AndroidRuntime:    ... 10 more

1
আপনার বিল্ডড্র্যাডলে কি আপনার অ্যাপ্লিকেশনআইডি রয়েছে?
আয়ান নাপিত

1
@ ইয়ানবার্বার: ওহ, বাহ বিল্ড অ্যাড্রেডল সম্পাদনার সময় আমি এটিকে সরিয়ে দিয়েছি। আমার খারাপ।
ম্যাকার্সে


8
ব্যবহার করে দেখুন Android studio> Build>Clean Project
উজ্জ্বল সিং

অ্যাপ্লিকেশনটির গ্রেডডল ডিফল্টকনফিগে যখন মাল্টিডেক্সএইনেবলড সত্য হয় তখন আমি আমার অ্যাপ্লিকেশন ক্লাসটি মাল্টিডেক্সএক্সপ্লিকেশন বাড়িয়ে এটি স্থির করেছি।
হারমান

উত্তর:


145

1।

যোগ applicationId অ্যাপ্লিকেশানের build.gradle করুন:

android {
    ...
    defaultConfig {
        applicationId "com.example.my.app"
        ...
    }
}

এবং ক্লিন প্রকল্পের চেয়ে>> বিল্ড বা পুনর্নির্মাণ প্রকল্প


২. যদি আপনার minSdkVersion <= 20 ( https://developer.android.com/studio/build/m Multidex )

মাল্টিডেক্স সঠিকভাবে ব্যবহার করুন।

অ্যাপ্লিকেশন এর build.gradle

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

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

manifest.xml

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

3।

আপনি যদি কাস্টম অ্যাপ্লিকেশন ক্লাস ব্যবহার করেন

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

manifest.xml

<application
    ...
    android:name="com.example.my.app.MyApplication" >
    ...

1
আমি একই ত্রুটি পেয়েছি এবং এটি সমাধান দ্বারা স্থির করা হয়েছে। আমি জানি না কেন, তবে এটি কাজ করে।
ফুজি গোরো

এটি আমার জন্য দিনটি বাঁচিয়েছিল। আমি কোনও অ্যান্ড্রয়েড ডিভাইসে কর্ডোভা অ্যাপ্লিকেশন চালানোর চেষ্টা করার সময় ত্রুটি পেয়েছি।
মানসিম

1
আমার বিল্ড.gradle এ আমার একই সমস্যা এবং অ্যাপ্লিকেশনটি রয়েছে। এক্ষেত্রে আমি কী করতে পারি?
মারিয়া মার্সিডিজ ওয়াইস আলভারেজ

@ekonstantinidis আপনি আপনার কর্ডোভা অ্যাপ্লিকেশনটির জন্য এটি কীভাবে ঠিক করেছেন? এটি কি এমন কোনও কনফিগারেশনে যুক্ত করা যেতে পারে যা build.gradle উত্পন্ন হওয়ার সময় এটি সঠিকভাবে যুক্ত করে? (চলাকালীন cordova platform add android)?
Zach

@ Zach আমি এটি মনে করি না। আমি দৌড়ানোর পরে এটি যুক্ত করেছি cordova platform add android। আমার ধারণা, কর্ডোভা আপডেট হয়ে গেলে এটি ঠিক হয়ে যাবে? পুনশ্চ. আমি মোটেই ফায়ারবেস ব্যবহার করছি না।
মানসিম

93

আমি এসডিকে <22 এর সাথে ডিভাইসে একই সমস্যাটি নিয়ে ছিলাম, তবে আমার জন্য কারণটি মাল্টিডেক্স, পদ্ধতিতে MultiDex.installঅবশ্যই হওয়া উচিত attachBaseContext

আপনি যদি মাল্টিডেক্স ব্যবহার করছেন তবে এটি ব্যবহার করে দেখুন:

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 

    }
}

অ্যাপ্লিকেশন / build.gradle:

android {

    compileSdkVersion 24
    buildToolsVersion "24.0.2"

    defaultConfig {
        applicationId "com.test.app"
        minSdkVersion 16
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
        multiDexEnabled true

    }

    dexOptions {
        javaMaxHeapSize "4g"
    }

....
}

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

        compile 'com.android.support:appcompat-v7:24.2.1'
        ...
        compile 'com.google.firebase:firebase-messaging:9.6.1'
        compile 'com.google.android.gms:play-services:9.6.1'
        compile 'com.android.support:multidex:1.0.1'

    }
...

4
এটি কাজ করে, কিন্তু করতে পরিবর্তে এক ফাংশন অগ্রাহ্য একটি বিশেষ শ্রেণী এবং এটা MultiDexApplication বলা হচ্ছে, নীচের উত্তর দেখার stackoverflow.com/questions/37312103/...
GregoryK

হ্যাঁ এটি আমার পক্ষেও কাজ করেছে, আমি সর্বদা অনক্রিট () পদ্ধতির ভিতরে মাল্টিডিএক্স.ইনস্টল (এটি) লিখি ধন্যবাদ বন্ধু
দারা


এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। আমি অন্যান্য সমস্ত উত্তর চেষ্টা করেছিলাম এবং গুগল এবং ফায়ারবেস গাইড অনুসরণ করছিলাম তবে এটি সঠিক, আপনি দুর্দান্ত মানুষ!
ব্লুওয়্যার

ধন্যবাদ, আপনি এটি কিভাবে খুঁজে পেতে পারেন? তবে আমার প্রশ্নটি হল আমার কোড লাইন অ্যাপ্লিকেশন 65000 এর চেয়ে বেশি নয় কেন আমি এটি মাল্টুডেক্স ব্যবহার করব এবং কেন আমি এসডিকে> 22 এ কাজ করি এবং এটি এসডিকে <22
মিলাদ সালিমি

75

গৃহীত উত্তর আমার সমস্যার সমাধান করেনি।

আপনি যদি মাল্টিডেক্স ব্যবহার করছেন তবে আপনার অ্যাপ্লিকেশনটির MultiDexApplicationপরিবর্তে প্রসারিত হওয়া উচিত Application

MyApplication.java

public class MyApplication extends MultiDexApplication{
     ...
}

Andro আইডি

<application
      android:name="your.package.name.MyApplication"
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      ...
      />

আশা করি এটা সাহায্য করবে.


নিখুঁতভাবে কাজ করেছেন! অনেক ধন্যবাদ :)
সমাধান স্পিরিট

3
আপনি এই জিনিসগুলি কিভাবে জানেন? কে তোমাকে বলছে??? অ্যান্ড্রয়েড স্টুডিও 3 এ আপডেট করার পরে এবং "ডিবাগ" অ্যাপ্লিকেশন ইনস্টল করার পরে আমি এই সমস্যাটি শুরু করেছি। "রিলিজ" সংস্করণটি ভালভাবে কাজ করেছে। এখন, আপনার সমাধানের সাথে "ডিবাগ" সংস্করণও কাজ করে। আমি আপনার মত খুশি মানুষ উপস্থিত !!
টন

এটি নিখুঁত উত্তর
androidXP

এই সমস্ত উত্তরে, মাল্টিডেক্স যুক্ত করার ফলে সমস্যাটি সমাধান করার জন্য আসলে কী বোঝায় না (এই জাতীয় সমস্যার মুখোমুখি হয়ে যাওয়া বিস্মিতকর এলোমেলো জিনিস)
আদিত্য আনন্দ

36

আপনি যদি একই সমস্যাটি পান তবে ইতিমধ্যে applicationIdসেট আপ রয়েছে তবে build.gradleআপনি নিম্নলিখিতটিও দেখতে পারেন:

  • অ্যান্ড্রয়েড স্টুডিওতে: Build>Clean Project
  • অন্যান্য আইডিইতে: পরিষ্কার, পুনর্নির্মাণ, যাই হোক না কেন ...

3
এবং যদি আপনার এখনও সমস্যা থাকে তবে বিল্ড ডিরেক্টরিটি মুছুন এবং আবার চেষ্টা করুন। আমি এটি না করা পর্যন্ত আটকে ছিলাম :)
লরেন্স মরনি

কেবল মুছে ফেলা buildডিরেক্টরি আমার জন্য কাজ করেছিল। দেখে মনে হচ্ছে রেপো থেকে আমার শেষ টানটি এলোমেলো হয়ে গেছে।
সেবাদাস্তন সাবন্যুক

17

প্রি ললিপপ ডিভাইসে আমার একই সমস্যা ছিল। যে সমাধান করার জন্য আমি নিম্নলিখিত হিসাবে। ইতিমধ্যে আমি প্রকল্পে মাল্টিডেক্স ব্যবহার করছিলাম।

1. মডিউলে বিল্ডড্রেডল এর ​​জন্য এটি যুক্ত করুন: অ্যাপ্লিকেশন

multiDexEnabled = true

dexOptions {
    javaMaxHeapSize "4g"
}

2. এই নির্ভরতা যুক্ত করুন

compile 'com.android.support:multidex:1.0.1'

3.পরে মেইন অ্যাপ্লিকেশন

public class MainApplication extends MultiDexApplication {

private static MainApplication mainApplication;

@Override
public void onCreate() {
    super.onCreate();
    mainApplication = this;
}

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


public static synchronized MainApplication getInstance() {
    return mainApplication;
}
}

4. ম্যানিফাইস্ট ফাইল মধ্যে

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

এটি আমার পক্ষে কাজ করে। আশা করি এটি আপনাকেও সহায়তা করবে :)


4
মাল্টিডেক্স সক্ষম করার জন্য আপনার কেবলমাত্র তিনটি কাজই করা উচিত নয় (মাল্টিডেক্স অ্যাপ্লিকেশন প্রসারিত করুন, AttheBaseContext বাস্তবায়ন করুন এবং মেনিফেস্ট ফাইলটি পরিবর্তন করুন) কেবলমাত্র একটি যথেষ্ট: ডি। বিকাশকারী.অ্যান্ড্রয়েড / স্টুডিও
বিল্ড / মাল্টেডিএক্স html

যদি আপনার minSdk 21 বা তত বেশি হয় তবে ডকস বলছেন যে এটি ইতিমধ্যে ডিফল্টরূপে সক্ষম হয়েছে you এবং তবুও, এই সমস্যাটি আমার জন্য minSdk = 21 নিয়ে আসছে, এর কোনও সমাধান আছে?
আদিত্য আনন্দ

15

আপনার নিশ্চিত হওয়া উচিত

আপনার ম্যানিফেস্টে এই লাইনটি যুক্ত করতে

https://developer.android.com/studio/run/index.html#instant-run

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android.multidex.myapplication">
    <application
        ...
        android:name="android.support.multidex.MultiDexApplication">
        ...
    </application>
</manifest>

মাল্টিডেক্সএইনবেলড ট্রু সহ আমার জন্যও কাজ করেছেন
ashishdhiman2007

7

পুরো প্লে পরিষেবা লাইব্রেরি অন্তর্ভুক্ত করবেন না তবে আপনার যা প্রয়োজন তা ব্যবহার করুন your আপনার বিল্ড.gradle এ রেখাটি প্রতিস্থাপন করুন :

compile 'com.google.android.gms:play-services:9.6.1'

গুগল প্লে পরিষেবাদি এপিআই থেকে উপযুক্ত একটি সহ , উদাহরণস্বরূপ:

compile 'com.google.android.gms:play-services-gcm:9.6.1'

7

এটি আপনার মডিউল স্তরের বিল্ড.gradle এ যুক্ত করুন:

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

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

আপনি যদি ক্লাসটিকে ওভাররাইড করেন Applicationতবে এর থেকে প্রসারিত করুন MultiDexApplication:

YourApplicationClass extends MultiDexApplication

আপনি যদি MultiDexApplicationশ্রেণি থেকে এটি প্রসারিত করতে না পারেন তবে attachBaseContext()নিম্নলিখিত পদ্ধতিতে ওভাররাইড পদ্ধতি:

protected void attachBaseContext(Context base) {
     super.attachBaseContext(context);
     Multidex.install(this);
  }

MultiDex.install(this)মৃত্যুদন্ড কার্যকর হওয়ার আগে কোনও কিছু চালানো যাবে না ।

আপনি যদি ক্লাসটিকে ওভাররাইড না করেন তবে Applicationকেবল নিজের মেনিফেস্ট ফাইলটি নিম্নলিখিত হিসাবে সম্পাদনা করুন:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    .......>
     <application
         ......
            android:name="android.support.multidex.MultiDexApplication" >
        ...
    </application>
    ......
</manifest>

3

এটি কাজ করা উচিত:

ধাপ 1:

defaultConfig {
    applicationId "service.ingreens.com.gpsautoon"
    minSdkVersion 17
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

ধাপ ২:

compile 'com.android.support:multidex:1.0.1'

পদক্ষেপ 3: অন্য ক্লাস নিন

public class MyApplication extends MultiDexApplication {
}

পদক্ষেপ 4: ম্যানিফেস্টে এই লাইনটি যুক্ত করুন

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

2

আমার ক্ষেত্রে, বিল্ড.gradle মডিউলটিতে এই লাইনটি যুক্ত করে সমস্যার সমাধান করা হয়েছিল:

// এই নীচে যোগ করুন

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

উৎস


আমি "আইডির সাথে প্লাগইন পেয়েছি 'com.google.gms.play-Services' পাওয়া যায় নি।"
কালেমসাগার্ড

@ ক্যালেমসাগার্ড এটি আপনার প্রকল্পে রেখেছেনbuild.gradle dependencies { classpath 'com.google.gms:google-services:3.0.0' }
বোরজা

1

আমার ক্ষেত্রে সমস্যাটি হয়েছিল আমরা অ্যান্ড্রয়েডএক্সে স্থানান্তরিত হওয়ার পরে। কোনও কারণে, অ্যাপ্লিকেশনটি প্রতিচ্ছবি সহ মাল্টিডেক্স.ইন.স্টল () কল করছে:

    final Class<?> clazz = Class.forName("android.support.multidex.MultiDex");
    final Method method = clazz.getDeclaredMethod("install", Context.class);
    method.invoke(null, this);

আমি থেকে প্যাকেজ পরিবর্তন android.support.multidex.MultiDexকরতে androidx.multidex.MultiDex। এটা কাজ করেছে.


0

ম্যানুয়ালি প্যাকেজের নাম যুক্ত করার পরিবর্তে build.gradle আপনি এটি এভাবে করতে পারেন:

প্রথমে ভিক্ষার সময় এই লাইনটি যুক্ত করুন

import java.util.regex.Pattern

তারপরে এটি ডিফল্ট কনফিগ এ যুক্ত করুন

android {
    ...
    defaultConfig {
        ...
        applicationId = doExtractStringFromManifest("package")
        ...
    }
    ...
}

এবং অবশেষে doExtractStringFromManLive পদ্ধতিটি যুক্ত করুন

def doExtractStringFromManifest(name) {
     def manifestFile = file(android.sourceSets.main.manifest.srcFile)
     def pattern = Pattern.compile(name + "=\"(\\S+)\"")
     def matcher = pattern.matcher(manifestFile.getText())
     matcher.find()
     return matcher.group(1)
}

যেহেতু উত্তরটিতে কর্ডোভার প্রচুর মন্তব্য রয়েছে, আপনি যদি কর্ডোভার সাথে কাজ করছেন, আপনার নিজেরটি সত্যই সম্পাদনা করা উচিত নয় build.gradle, এটি ভিক্ষার বিষয়ে একটি মন্তব্য রয়েছে যা বলে

// জেনারেটেড ফাইল! সম্পাদনা করবেন না!

সুতরাং, আপনি যদি কর্ডোভা ব্যবহার করছেন, তবে কর্ডোভা-অ্যান্ড্রয়েড 5.1.0 বা তার চেয়েও বড় যেখানে আপনি এই পরিবর্তনগুলি ইতিমধ্যে উপস্থিত আছেন তা আপডেট করা সবচেয়ে ভাল কাজ।


0

আমার কারণ গ্রেডল ফাইলের ফায়ারবেস এসডিকে একটি ভুল নম্বর সংস্করণে সেট করা হয়েছিল।

আমি গ্র্যাডল থেকে ফায়ারবেস দেবগুলি সরিয়েছি এবং তাদের ব্যবহার করে আবার ইনস্টল করেছি Firebase Assistant


0

অ্যান্ড্রয়েড স্টুডিও সেটিংয়ে যান ( Ctrl+Alt+Sউইন্ডো টিপে টিপুন ), অনুসন্ধান করুন Instant Runএবং আনচেক করুন Enable Instant Run

Instant Runআপনার অ্যাপ্লিকেশনটি অক্ষম করে এবং আবার চালানোর মাধ্যমে, সমস্যার সমাধান হবে।


0

নেটিভ অ্যাপ্লিকেশনটির প্রতিক্রিয়া জানানোর জন্য, ত্রুটিটি ছিল java.lang.RuntimeException: Unable to get provider com.google.firebase.provider.FirebaseInitProvider: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider" এটি কেবল অ্যান্ড্রয়েড সংস্করণ <~ 4.4 সহ ডিভাইসগুলির জন্য পেয়েছিল

শুধু প্রতিস্থাপন এটি মীমাংসিত Applicationমধ্যে MainApplication.javaদিয়েMultiDexApplication

বিঃদ্রঃ: import android.support.multidex.MultiDexApplication;


0

আমি প্রগর্ড ফাইলটিতে নিম্নলিখিত কোড যুক্ত করেছি।

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application

এবং এটি আমার ক্ষেত্রে কাজ করেছিল।


0

আমার ক্ষেত্রে, আমি বিল্ড গ্রেডে ফায়ারবেস কোর যুক্ত করতে (বা ঘটনাক্রমে মুছে ফেলা) ভুলে গেছি

implementation 'com.google.firebase:firebase-core:xx.x.x'

1
3 মাস কেটে গেছে এবং এটি এখন অবচয় করা হয়েছে: এটি যুক্ত করবেন না! উত্স = firebase.google.com/support/release-notes/android (বাধ্যবাধকতা: গুগল ধন্যবাদ)
আদিত্য আনন্দ

0

আমি এপিআই-র ঠিক কম 21 ডিভাইসগুলিতে এই ত্রুটিটি পেয়েছি my আমার ক্ষেত্রে, আমাকে এমন একটি প্রকল্পের সাথে কাজ করতে হয়েছে যেখানে multiDexEnabledবিকল্পটি build.gradleইতিমধ্যে সেট করা ছিল true। আমি APK থেকে Dex ফাইল চেক করা এবং রেফারেন্সড পদ্ধতি সংখ্যা 64K কম ছিল, তাই প্রকল্পের একটি multidex এক হতে হবে না, তাই আমি সেট multiDexEnabledকরতে false। এই সমাধানটি আমার পক্ষে কাজ করেছিল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.