Od jakiegoś czasu korzystam z najnowszej wersji Crashlytics (integracja Fabric). Ale ostatnio napotkałem następujący błąd awarii spowodowany brakiem zależności, chociaż nie zmieniłem niczego w konfiguracjach Crashlytics.
dowolny pomysł?
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ .
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . | |
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . | |
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . | |
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . \ | | /
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . \ /
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . \ /
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . \/
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ .
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ 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.
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ .
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . /\
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . / \
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . / \
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . / | | \
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . | |
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . | |
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ . | |
02-08 22:18:00.935 18887-18887/? E/Fabric﹕ .
02-08 22:18:00.935 18887-18887/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.android.staging, PID: 18887
java.lang.RuntimeException: Unable to create application com.example.android.App: io.fabric.sdk.android.services.concurrency.UnmetDependencyException: com.crashlytics.android.CrashlyticsMissingDependencyException:
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:4734)
at android.app.ActivityThread.access$1600(ActivityThread.java:171)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1357)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5506)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)
android
crashlytics
twitter-fabric
xialin
źródło
źródło
Odpowiedzi:
Jedynym obejściem na razie, jeśli naprawdę potrzebujesz opublikować swoją aplikację (tak jak ja), jest zmiana dynamicznych numerów wersji na statyczne:
EDYTOWAĆ:
opublikowano zaktualizowaną wersję Fabric SDK; możesz to uzyskać, zmieniając wiersz na ten:
źródło
https://maven.fabric.io/repo
https://maven.fabric.io/public
Dodałem następujące kody, zanim faktycznie zainstalowałem Fabric / Crashlytics:
Usunięcie go przed pierwszym uruchomieniem z Crashlytics rozwiązało problem. Po pierwszym uruchomieniu problem już nie występuje.
źródło
com.crashlytics.sdk.android:crashlytics:2.6.8@aar
Skomentowałem to w gradle
trzeba go odkomentować
A jeśli go nie masz, dodaj!
źródło
Wygląda na to, że określając wersję wtyczki jako:
odbiera wersję 1.15.1, która ma problem.
Określanie głównych i mniejszych niż poprzednie
1.14
wydaje się być stabilne:źródło
Miałem ten sam problem po aktualizacji wtyczki. aby rozwiązać, należy usunąć z AndroidManifest.xml:
i dodaj do tkaniny. właściwości:
AKTUALIZACJA:
Teraz musisz użyć:
źródło
<meta-data android:name="io.fabric.ApiKey" android:value="YOUR_API_KEY"/>
w pliku AM. Nazwa została zmieniona z „com.crashlytics.ApiKey” na „io.fabric.ApiKey”.Jeśli używasz funkcji wyłączania podczas debugowania, jak pokazano
To, co się dzieje, gdy aktualizujesz wersję crashlytics, jest takie
jest zwrócony do
Więc pamiętaj, aby zmienić to z powrotem na crashlyticskit. Jeśli robisz to poprawnie, a błąd nadal się pojawia, upewnij się, że tak
pod Androidem {buildtypes {}}
źródło
Mike z Crashlytics tutaj. Wcześniej udostępniliśmy zaktualizowaną wersję - 1.15.2 - zawierającą poprawkę dotyczącą tego zachowania. Jeśli biegasz:
który ściągnie najnowszą wersję. Możesz również zobaczyć więcej szczegółów na temat poprawki tutaj.
źródło
Napraw dla mnie Z oficjalnego źródła
Wyłącz Crashlytics dla kompilacji debugowania
Jeśli nie potrzebujesz raportowania awarii Crashlytics lub dystrybucji wersji beta dla kompilacji do debugowania, możesz bezpiecznie przyspieszyć kompilacje do debugowania, wyłączając wtyczkę całkowicie, wykonując te dwa kroki:
Najpierw dodaj to do pliku build.gradle swojej aplikacji:
Następnie wyłącz zestaw Crashlytics w czasie wykonywania. W przeciwnym razie zestaw Crashlytics zgłosi następujący błąd:
Możesz wyłączyć zestaw w czasie wykonywania dla kompilacji debugowania tylko za pomocą następującego kodu:
źródło
Ten problem występuje również, jeśli przypadkowo dołączysz Crashlytics BuildConfig - bardzo łatwe do wykonania dzięki automatycznemu importowi Android Studio / IntelliJ.
Sprowadziłem
import com.crashlytics.android.core.BuildConfig;
Zamiast własnego
import <package_name>.BuildConfig;
źródło
Dla mnie to z powodu
dataBinding = true
. Aktualizacja wtyczki Fabric Gradle do 1.21.0 rozwiązała problem: https://twittercommunity.com/t/fabric-gradle-plugin-1-21-0-add-support-for-android-databinding-true/57474źródło
W moim przypadku używałem tkaniny w module „CommonLib”, który został dodany jako zależność we wszystkich innych modułach (w tym aplikacji). Więc dodałem
apply plugin: 'io.fabric'
pobuildscript {}
bloku. Więc umieściłem razem dwie wtyczki:I problem został rozwiązany!
źródło
Pamiętaj, aby dodać
apply plugin: 'io.fabric'
do projektu aplikacjibuild.gradle
. W moim przypadku miałem coś wspólnegobuild.gradle
zapply plugin: 'io.fabric'
. Przeniesienie go do projektu aplikacji rozwiązało problem.źródło
Jeśli to pomoże komuś innemu, miałem podobny problem podczas uaktualniania Crashlytics do Fabric. W moim przypadku wtyczka pozostawiła 2 linie z Crashlytics, które musiałem ręcznie usunąć, zanim zadziała.
W pliku gradle, pod zależnościami buildscript, musiałem ręcznie usunąć:
Poza tym w zależnościach musiałem ręcznie usunąć:
źródło
Sprawdź, czy crashlytics jest wyłączony w pliku build.gradle
Zamiast tego użyj
źródło
Może spóźnię się na odpowiedź. Ale może się to zdarzyć z jeszcze jednego powodu oprócz wszystkich powyższych odpowiedzi
Jeśli przegapisz dodanie
Może się to wydawać dziwne, ale spowoduje to ten sam problem
Jest to domyślnie dodawane przez tkaninę, kiedy rejestrujemy się i dodajemy kod z okna Fabric przy użyciu IDE, ale przypadkowo można go usunąć.
źródło
Usunięcie ikony aplikacji naprawiono Crashylitics, co?
Zrobiłem wszystko w oparciu o samouczek wprowadzający, używając najnowszych wersji itp.
Właśnie zmarnowałem godzinę, próbując to rozgryźć. Okazuje się, że ktoś pomyślał, że dobrym pomysłem jest przeczytanie nazwy pakietu ikony aplikacji, zamiast
context.packageName
pobierania zasobów aplikacji w kontekście. Robi się to tą metodą:io.fabric.sdk.android.services.common.CommonUtils#getResourcePackageName
To oczywiście wysadza jeśli zdarzy ci się użyć ikonę, która nie jest w środku APK, na przykład:
android:icon="@android:drawable/sym_def_app_icon"
. Wtedy to prawdopodobnie był dobry pomysł, zastanawiam się, jaki dziwny błąd próbowali obejść ?!źródło
Dodaj to do
AndroidManifest.xml
.źródło