Laden von Android .so schlägt manchmal fehl (selten)

Wir haben ein seltsames Problem mit unserer Android-App. Bei Fabric kommt es sehr selten zu Abstürzen. Es handelt sich um einen Standard-UnsatisfiedLinkError, der bedeutet, dass die .so-Bibliothek im statischen Initialisierer der Java-Klasse nicht geladen werden kann. Folgendes haben wir bisher herausgefunden:

Das Problem ist sehr selten. Es passiert in ein paar hundert Geräten von Hunderttausenden oder Installationen.

Wenn es passiert, scheint es, als ob ein Neustart oder sogar eine Neuinstallation das Problem nicht löst.

Es passiert über verschiedene Marken wie Sony, Samsung, Huawei.

Es passiert in allen Android-Versionen von 2.3 bis 5.x.

Wir haben es geschafft, es einmal im Büro auf einem Nexus 1-Gerät zu fangen. Als es passierte, schlug der LoadLibrary-Aufruf immer fehl, obwohl dasselbe Apk auf anderen Geräten einwandfrei funktionierte.

Wenn das Problem auftrat, entfernte ich die Versionen armv7a und x86 der lib und ließ nur die armeabi, um auszuschließen, dass die falsche lib geladen wurde. Es ist immer noch fehlgeschlagen. Das wiederholte Ausführen der App über Android Studio und das Hinzufügen von Protokollen verursachten den Fehler immer noch an derselben Stelle.

Dann begann es plötzlich, ohne erkennbare Änderung, im Nexus 1 zu funktionieren, und selbst nach Dutzenden von Wiederholungsversuchen können wir das Problem nicht mehr reproduzieren. Das einzige, was passiert ist, bevor es funktioniert hat, war, dass ich versucht habe, ein beschädigtes apk mit adb install manuell zu installieren, was fehlgeschlagen ist und das nächste Mal, als ich die App über Android Studio geladen habe, hat es funktioniert und funktioniert sogar seitdem. Ich bin mir nicht sicher, ob die fehlgeschlagene Installation des korrupten apk irgendwie etwas bereinigt hat oder ob es nur ein Zufall war.

Das, was ich versäumt habe, war zu überprüfen, ob die armeabi .so-Datei tatsächlich im lib-Ordner auf dem Gerät vorhanden war, als der Fehler auftrat. Ich habe erst darüber nachgedacht, nachdem es bereits funktioniert hatte.

Also, um es zusammenzufassen. Das apk ist vollkommen in Ordnung, aber und es installiert sich in Ordnung aus dem Android Studio, dem Play Store, auf 99,9% der Geräte, aber unter bestimmten Bedingungen (die sehr selten sind) schlägt die LoadLibrary fehl, und wenn dies der Fall ist, scheint es keine offensichtliche Lösung zu geben , nicht einmal eine Neuinstallation hat es gelöst, aber wie ich erklärte, hat sich etwas geändert und als es auf dem Nexus 1 zu funktionieren begann, hat es seitdem weiter funktioniert.

Dieses Problem ist sehr knifflig, da wir derzeit keine Möglichkeit haben, es zu reproduzieren, und wir wissen, dass es zumindest eine kleine Gruppe unserer Benutzer betrifft.

Vorschläge, wie dies eingegrenzt werden kann, sind willkommen.

Antworten auf die Frage(0)

Ihre Antwort auf die Frage