web-dev-qa-db-ja.com

Crashlyticsエラー-このアプリはCrashlyticsに依存しています。アクセスにサインアップしてください

私はgradleに2つのビルドフレーバーを持っていますが、何らかの理由で次のフラグをfalseに変更するたびにタイトルのエラーメッセージが表示されます:

ext.enableCrashlytics = false

エラー自体は以下のとおりです。

Process: com.mobile.myapp.staging, PID: 5439
Java.lang.RuntimeException: Unable to create application com.mobile.myapp.UI.myappApplication: io.fabric.sdk.Android.services.concurrency.UnmetDependencyException: This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up,
install an Android build tool and ask a team member to invite you to this app's organization.
at Android.app.ActivityThread.handleBindApplication(ActivityThread.Java:4710)
at Android.app.ActivityThread.-wrap1(ActivityThread.Java)
at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1405)
at Android.os.Handler.dispatchMessage(Handler.Java:102)
at Android.os.Looper.loop(Looper.Java:148)
at Android.app.ActivityThread.main(ActivityThread.Java:5417)
at Java.lang.reflect.Method.invoke(Native Method)
at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:726)
at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:616)
Caused by: io.fabric.sdk.Android.services.concurrency.UnmetDependencyException: This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up,
install an Android build tool and ask a team member to invite you to this app's organization.
at com.crashlytics.Android.core.CrashlyticsCore.onPreExecute(CrashlyticsCore.Java:234)
at com.crashlytics.Android.core.CrashlyticsCore.onPreExecute(CrashlyticsCore.Java:207)
at io.fabric.sdk.Android.InitializationTask.onPreExecute(InitializationTask.Java:44)
at io.fabric.sdk.Android.services.concurrency.AsyncTask.executeOnExecutor(AsyncTask.Java:611)
at io.fabric.sdk.Android.services.concurrency.PriorityAsyncTask.executeOnExecutor(PriorityAsyncTask.Java:43)
at io.fabric.sdk.Android.Kit.initialize(Kit.Java:69)
at io.fabric.sdk.Android.Fabric.initializeKits(Fabric.Java:440)
at io.fabric.sdk.Android.Fabric.init(Fabric.Java:384)
at io.fabric.sdk.Android.Fabric.setFabric(Fabric.Java:342)
at io.fabric.sdk.Android.Fabric.with(Fabric.Java:313)
at com.mobile.myapp.UI.base.BaseApplication.setupExceptionHandling(BaseApplication.Java:51)
at com.mobile.myapp.UI.myappApplication.onCreate(myappApplication.Java:45)
at Android.app.Instrumentation.callApplicationOnCreate(Instrumentation.Java:1013)
at Android.app.ActivityThread.handleBindApplication(ActivityThread.Java:4707)

これが、アプリケーションサブクラスでcrashlyticsを初期化する方法です。

Fabric.with(this, new Crashlytics());

私がやろうとしているのは、フレーバーごとにcrashlyticsを実行できるかどうかを制御することです。そのgradleフラグを使用してfalseに設定できると思ったので、flavor1にcrashlyticsを実行させたくないと言えます。私は何かが欠けていますか?

33
j2emanue

Todd Burner の回答に追加

BuildConfig.DEBUGに注意してください。 IDEから自動インポートできます

com.crashlytics.Android.BuildConfig (= false)

アプリの設定の代わりに

${app_package}.BuildConfig

UPDATE

J2emanueのリクエストに関する例を提供する

    ...
    import com.fiot.ot.BuildConfig             <- should be
    import com.crashlytics.Android.BuildConfig <- my IDE automatically imported 

    fun initFabric(context: Context) {
        val core = CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()
        val kit = Crashlytics.Builder().core(core).build()
        Fabric.with(context, kit)
    }

どこcom.fiot.ot私のアプリのパッケージ名

27
aruy

たぶん適用プラグインファブリックが見つからない

ファイルapp/build.gradleの上にこの行を追加すると、問題が解決しました!

プラグインの適用:「io.fabric」

75
DaoLQ

設定するたびに

ext.enableCrashlytics = false

アプリがクラッシュする

io.fabric.sdk.Android.services.concurrency.UnmetDependencyException

This app relies on Crashlytics. Please sign up for access at https://fabric.io/sign_up, install an Android build tool and ask a team member to invite you to this app's organization.

私にとってうまくいくと思われるのは、この行をAndroidManifest.xmlに追加することでCrashlyticsの自動初期化を無効にする必要があることです。

<meta-data Android:name="firebase_crashlytics_collection_enabled" Android:value="false" />

次に、ApplicationサブクラスのonCreate()メソッドでCrashlyticsを手動で初期化し、BuildConfig.DEBUGを使用してCrashlyticsCoreを無効にするかどうかを決定し、Fabric.with()を呼び出します。実際、私はもう設定していません

ext.enableCrashlytics = false

まったく。すべてうまくいくようです。

33
KGBird

ファブリックのトッド。実行時にFabricも無効にしない限り、このエラーが発生します。

    // Set up Crashlytics, disabled for debug builds
Crashlytics crashlyticsKit = new Crashlytics.Builder()
    .core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
    .build();

// Initialize Fabric with the debug-disabled crashlytics.
Fabric.with(this, crashlyticsKit);

詳細については、このリンクをご覧ください。 https://docs.fabric.io/Android/crashlytics/build-tools.html#disable-crashlytics-for-debug-builds

12
Todd Burner

必ず追加してください

app.gradle

apply plugin: 'io.fabric'

私も持っています

classpath 'io.fabric.tools:gradle:1.26.1'

の中に

プロジェクトgradle依存関係

文字列にCrashlytics apiを追加し、 Crashlytics Site にサインアップします

9

Xamarin Androidの場合

上記のエラーが表示されないようにするには、次のものが必要です。

  1. NuGetパッケージを含めます:
    • Xamarin.Android.Crashlytics[by Microsoft]
    • Xamarin.Android.Crashlytics.Core[Microsoftによる]
    • Xamarin.Android.Crashlytics.Beta[by Microsoft]
    • Xamarin.Android.Crashlytics.Answers[by Microsoft]
  2. AndroidManifest.xml内の<application>ファイルに次の行を追加します。

    <meta-data Android:name="io.fabric.ApiKey" Android:value="<FABRIC_API_KEY>" />

  3. Resources/values/Strings.xmlリソースファイルに次の行を追加します。

    <string name="com.crashlytics.Android.build_id">15</string>

  4. OnCreate()MainApplication.csまたはYourActivity.csに次の行を追加します。

    Fabric.Fabric.With(this, new Crashlytics.Crashlytics());

アプリは問題なく初期化ラインを超えてビルドおよび実行されるはずです。唯一の問題は、リリースのたびにアプリのビルドバージョンを更新する必要がある場所がもう1つあるという事実です。


編集:

私が経験している限りでは、1つの値が必要ですが、まったく使用されていません。実際にStrings.xmlのビルド番号を増やす必要はありません。アプリから自動的にビルド番号を取得するので、値を<string name="com.crashlytics.Android.build_id">1</string>のままにしておいてかまいません。

Xamarinで異なる体験をする場合は、以下にコメントしてください。

4
Pierre

私の場合、これはうまくいきました。

したがって、これはトップレベルのプロジェクトbuild.gradleです

buildscript {
    repositories {
        jcenter()
        maven { url 'https://maven.fabric.io/public' }
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:1.2.3'
        classpath 'io.fabric.tools:gradle:1.+'
    }
}
apply plugin: 'Java'
allprojects {
    repositories {
        jcenter()
        maven { url 'https://maven.fabric.io/public' }
    }
}

これはアプリモジュールのbuild.gradleです

apply plugin: 'com.Android.application'
apply plugin: 'io.fabric'

Android {
compileSdkVersion 22
buildToolsVersion "22.0.1"

defaultConfig {
    applicationId "your application package name"
    minSdkVersion 10
    targetSdkVersion 22
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.txt'
    }
}
}

dependencies {
compile 'com.google.code.gson:gson:2.3'
compile 'com.Android.support:support-v4:22.0.0'
testCompile 'junit:junit:4.12'
testCompile "org.mockito:mockito-core:1.9.5"
compile('com.crashlytics.sdk.Android:crashlytics:2.5.2@aar') {
    transitive = true;
}
}

そして、ついに「クリーンビルド」とすべてが私のために設定されました。

0
user3509903