Я больше недели пытаюсь интегрировать Crashlytics в один из моих проектов.Я пробовал следующие вещи ..
Если я попытался реализовать во вновь созданном проекте, не содержащем ни одну из зависимостей и их использование тоже, что я покажу вам ниже, Crashlytics настраиваетсяавтоматически после следования официальным документам Firebase.
Если я попытался внедрить его в проект, содержащий следующие зависимости и их использование в проекте, он выдаст 3 вида ошибок.
Must initialize Fabric before using singleton.
Когда я инициализирую Fabric в одном из моих классов Application, то после компиляции он показывает следующую ошибку ..
Fabric Api key is missing from manifest, Please add it in manifest
или что-то типа того.Когда я решил это тоже, скопировав ключ api из моей консоли в fabric.io и вставив его в манифест соответствующим образом, то после компиляции он показал следующую ошибку:
The Crashlytics build ID is missing.
И этоошибка, которая никогда не исчезнет, даже если я попробую различные решения, связанные с этим.Это просто никогда не идет.
Но стоит отметить, что все эти дополнительные вещи не требуются, когда я добавил Crashlytics в простой проект NOT содержит следующие зависимости и их использование в проекте.
Вот эти зависимости
implementation project(':library')
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.annotation:annotation:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.sothree.slidinguppanel:library:3.4.0'
implementation 'de.hdodenhof:circleimageview:3.0.0'
implementation 'com.facebook.fresco:fresco:1.13.0'
implementation 'com.jakewharton:butterknife:10.1.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'
/* dagger dependency for DI*/
implementation "com.google.dagger:dagger:2.23.2"
annotationProcessor "com.google.dagger:dagger-compiler:2.23.2"
compileOnly 'javax.annotation:jsr250-api:1.0'
implementation 'javax.inject:javax.inject:1'
/*Retrofit lib*/
implementation 'com.squareup.retrofit2:retrofit:2.6.0'
implementation 'com.squareup.retrofit2:converter-gson:2.6.0'
/*RxJava lib*/
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation "io.reactivex.rxjava2:rxjava:2.2.9"
implementation 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
/* LiveData lib*/
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
implementation 'androidx.lifecycle:lifecycle-runtime:2.1.0'
annotationProcessor 'androidx.lifecycle:lifecycle-common-java8:2.1.0'
/* Crashlytics */
implementation 'com.google.firebase:firebase-analytics:17.2.0'
implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
/* Necessary library for handling permission callbacks easily */
implementation 'pub.devrel:easypermissions:3.0.0'
/* Better logging */
implementation 'com.jakewharton.timber:timber:4.7.1'
А также это проект, созданный мной и моим другом, и я не знаю, почему ондобавил еще один проект в виде модуля с именем «библиотека», поэтому вы можете увидеть строку implementation project(':library')
в начале.Но я тоже пытался удалить его и скопировать файлы этого проекта в проект, а не добавлять его как отдельный модуль, но это ничего не изменило в появившейся ошибке.
Если кто-то из вас, ребята, знает обходной путь или какое-либо решение этого странного поведения Crashlytics в двух разных сценариях, ответьте.
РЕДАКТИРОВАТЬ:
Вотфайл манифеста без ключа по запросу
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="fibamlscan.app">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<application
android:name=".App"
android:usesCleartextTraffic="true"
android:icon="@android:drawable/ic_menu_today"
android:supportsRtl="true"
android:label="@string/app_name"
android:theme="@style/AppTheme"
tools:ignore="AllowBackup,GoogleAppIndexingWarning"
tools:targetApi="m">
<activity android:name=".s2s_transfer.S2STransferScanner" />
<activity android:name=".s2s_transfer.S2STransferActivity" />
<activity android:name=".stock_transfer_received.StockTransferReceivedActivity" />
<activity android:name=".damaged_goods.DamagedGoodsActivity" />
<activity android:name=".dispatch.CreateNewDispatchActivity" />
<activity
android:name=".dispatch.DispatchOrder"
android:label="@string/title_activity_dispatch_order"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".menu.MenuActivity"
android:label="@string/title_activity_menu"
android:theme="@style/AppTheme.NoActionBar" />
<activity android:name=".ui.login.LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".grn.PreviewActivity" />
<activity
android:name=".grn.GrnOrder"
android:label="@string/title_activity_grn"
android:theme="@style/AppTheme.NoActionBar" />
<activity android:name=".dispatch.PreviewActivity" />
<activity android:name=".metro.dispatch.PreviewActivity" />
<activity android:name=".goodsreturn.CreateNewDispatchActivity" />
<activity android:name=".goodsreturn.PreviewActivity" />
<activity android:name=".goodsreturn.DispatchOrder" />
<activity android:name=".metro.dispatch.DispatchOrder" />
<activity android:name=".warehouseAudit.PreviewActivity" />
<activity android:name=".audit.PreviewActivity" />
<activity android:name=".damaged_goods.DamagedGoodsScanner" />
<activity android:name=".warehouseAudit.WarehouseSelectionActivity" />
<meta-data
android:name="com.google.firebase.ml.vision.DEPENDENCIES"
android:value="barcode" />
</application>
</manifest>
РЕДАКТИРОВАТЬ:
Это уровень приложения build.gradle
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
android {
compileSdkVersion rootProject.ext.compileSdkVersion
defaultConfig {
applicationId "co.behtarinternal.app"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode rootProject.ext.versionCode
versionName "${rootProject.ext.versionName}"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
useProguard false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
// signingConfig signingConfigs.debug
useProguard false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation project(':library')
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.annotation:annotation:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.sothree.slidinguppanel:library:3.4.0'
implementation 'de.hdodenhof:circleimageview:3.0.0'
implementation 'com.facebook.fresco:fresco:1.13.0'
implementation 'com.jakewharton:butterknife:10.1.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'
/* dagger dependency for DI*/
implementation "com.google.dagger:dagger:2.23.2"
annotationProcessor "com.google.dagger:dagger-compiler:2.23.2"
compileOnly 'javax.annotation:jsr250-api:1.0'
implementation 'javax.inject:javax.inject:1'
/*Retrofit lib*/
implementation 'com.squareup.retrofit2:retrofit:2.6.0'
implementation 'com.squareup.retrofit2:converter-gson:2.6.0'
/*RxJava lib*/
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation "io.reactivex.rxjava2:rxjava:2.2.9"
implementation 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
/* LiveData lib*/
implementation 'androidx.lifecycle:lifecycle-extensions:2.1.0'
implementation 'androidx.lifecycle:lifecycle-runtime:2.1.0'
annotationProcessor 'androidx.lifecycle:lifecycle-common-java8:2.1.0'
/* Crashlytics */
implementation 'com.google.firebase:firebase-core:17.2.0'
implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1'
/* Necessary library for handling permission callbacks easily */
implementation 'pub.devrel:easypermissions:3.0.0'
/* Better logging */
implementation 'com.jakewharton.timber:timber:4.7.1'
}
apply plugin: 'com.google.gms.google-services'