Ошибка Crashlytics. Это приложение основано на Crashlytics. Пожалуйста, зарегистрируйтесь для доступа
У меня есть два варианта сборки в gradle, но по какой-то причине, когда я изменяю следующий флаг на 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 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 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 в моем подклассе Application:
Fabric.with(this, new Crashlytics());
то, что я пытаюсь сделать, - это контролировать, могут ли крахлитики работать или нет. скажем, я хочу, чтобы flavor1 не запускал crashlytics, я думал, что могу использовать этот флаг gradle и установить его в false. я что-то пропустил?
Ответы
Ответ 1
Дополнение к Todd Burner
Будьте осторожны с BuildConfig.DEBUG
. IDE может автоматически импортировать его из
com.crashlytics.android.BuildConfig (= false)
вместо конфигурации вашего приложения
${app_package}.BuildConfig
ОБНОВЛЕНИЕ
Предоставление примера по запросу 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
имя пакета моего приложения
Ответ 2
Может быть, не хватает применить плагин ткань
Я добавил эту строку поверх файла app/build.gradle
решить мои проблемы!
применить плагин: 'io.fabric'
Ответ 3
Всякий раз, когда я устанавливаю
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 organization.
Мне кажется, что мне нужно отключить автоматическую инициализацию Crashlytics, добавив эту строку в AndroidManifest.xml
<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
Затем я вручную инициализирую Crashlytics в методе onCreate() моего подкласса Application, используйте BuildConfig.DEBUG, чтобы решить, следует ли отключить CrashlyticsCore и вызвать Fabric.with(). Фактически, я больше не устанавливал
ext.enableCrashlytics = false
. Кажется, все это работает для меня.
Ответ 4
Тодд из ткани. Вы получите эту ошибку, если вы также не отключите 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
Ответ 5
Для Android Xamarin
Вы должны иметь следующее, чтобы не получить вышеуказанную ошибку:
- Включите пакеты NuGet:
- Xamarin.Android.Crashlytics [от Microsoft]
- Xamarin.Android.Crashlytics.Core [от Microsoft]
- Xamarin.Android.Crashlytics.Beta [от Microsoft]
- Xamarin.Android.Crashlytics.Answers [от Microsoft]
-
Добавьте эту строку в свой файл AndroidManifest.xml
в <application>
:
<meta-data android:name="io.fabric.ApiKey" android:value="<FABRIC_API_KEY>"/>
-
Добавьте эту строку в файл Resources/values/Strings.xml
:
<string name="com.crashlytics.android.build_id">15</string>
-
Добавьте эту строку в MainApplication.cs
или YourActivity.cs
в OnCreate()
:
Fabric.Fabric.With(this, new Crashlytics.Crashlytics());
Ваше приложение должно собираться и запускаться после строки инициализации без каких-либо проблем. Единственная проблема, с которой я столкнулся, заключается в том, что есть еще одно место, в котором вам нужно обновлять версию Build вашего приложения при каждом выпуске.
РЕДАКТИРОВАТЬ :
Насколько я понимаю, одно значение является обязательным, но не используется вообще. На самом деле вам не нужно увеличивать номер сборки в Strings.xml
, он автоматически выбирает номер сборки из приложения, поэтому вам следует просто оставить значение по адресу: <string name="com.crashlytics.android.build_id">1</string>
Если вы испытываете по-другому для Xamarin, пожалуйста, прокомментируйте ниже.
Ответ 6
Убедитесь, что вы добавили в
app.gradle
apply plugin: 'io.fabric'
у меня тоже есть
classpath 'io.fabric.tools:gradle:1.26.1'
в
Зависимости проекта
и добавьте API Crashlytics в строки, зарегистрируйтесь на сайте Crashlytics
Ответ 7
В моем случае это сработало.
Итак, это проект верхнего уровня 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:[email protected]') {
transitive = true;
}
}
и наконец "чистая сборка" и все было для меня установлено.