私は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を実行させたくないと言えます。私は何かが欠けていますか?
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
私のアプリのパッケージ名
たぶん適用プラグインファブリックが見つからない
ファイルapp/build.gradle
の上にこの行を追加すると、問題が解決しました!
プラグインの適用:「io.fabric」
設定するたびに
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
まったく。すべてうまくいくようです。
ファブリックのトッド。実行時に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
必ず追加してください
app.gradle
apply plugin: 'io.fabric'
私も持っています
classpath 'io.fabric.tools:gradle:1.26.1'
の中に
プロジェクトgradle依存関係
文字列にCrashlytics apiを追加し、 Crashlytics Site にサインアップします
上記のエラーが表示されないようにするには、次のものが必要です。
AndroidManifest.xml
内の<application>
ファイルに次の行を追加します。
<meta-data Android:name="io.fabric.ApiKey" Android:value="<FABRIC_API_KEY>" />
( https://fabric.io/onboard )でオンボーディングを行うと、キーを取得できます
または、サインイン後に https://fabric.io/kits/ios/crashlytics/install にアクセスすると、チュートリアルでキーが表示されます。
Resources/values/Strings.xml
リソースファイルに次の行を追加します。
<string name="com.crashlytics.Android.build_id">15</string>
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で異なる体験をする場合は、以下にコメントしてください。
私の場合、これはうまくいきました。
したがって、これはトップレベルのプロジェクト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;
}
}
そして、ついに「クリーンビルド」とすべてが私のために設定されました。