Bearbeitungen und Logcats unten.
Was ist passiert:
Vor ein paar Tagen ließ es mein Telefon (Mediatek-Chipsatz) über Nacht aufladen. Was ich nicht bemerkte war, dass das Ladegerät locker war und die Ladung bei etwa 2% lag. Am nächsten Morgen wachte ich auf und stellte fest, dass der Akku meines Telefons vollständig entladen war.
Als ich versuchte, es zu starten (nach dem Aufladen), dauerte es etwas zu lange und das Telefon heizte sich auf. Der Startvorgang wurde jedoch nicht abgeschlossen, und das Telefon wurde nicht neu gestartet (wie ein Bootloop).
Was ich getan habe:
Ich ging zur Wiederherstellung, machte Backups und löschte die /data
Partition und brachte das Telefon zum Starten. Ich benötige jedoch die Anwendungsdaten (mehr als das Telefon) und nur das Formatieren der Partition schien mich meinem Ziel nicht näher zu bringen, und daher habe ich die Sicherungen wiederhergestellt.
Ich habe dann die Daten mehrerer Programme gelöscht, die das Problem verursacht haben könnten:
rm -rf com.android.captiveportallogin com.android.carrierconfig com.android.cellbroadcastreceiver com.android.certinstaller com.android.defcontainer com.android.development com.android.documentsui com.android.externalstorage com.android.frameworks.telresources com.android.keychain com.android.managedprovisioning com.android.mms.service com.android.noisefield com.android.pacprocessor com.android.printspooler com.android.proxyhandler com.android.server.telecom com.android.statementservice com.android.stk com.android.vpndialogs com.android.webview com.gametion.ludo com.google.android.configupdater com.grarak.kerneladiutor com.jrummy.app.managerfree com.lexa.fakegps com.makeinfo.androididchanger com.one24.deviceid com.ores.hash com.phoneinfo.changer com.resurrection.otacom.sanctuaire.netswisstool com.unique.mobilefaker com.zimperium.zanti cyanogenmod.platform de.robv.android.xposed.installer it.evilsocket.dsploit net.fidanov.landroid org.cyanogenmod.livelockscreen.service org.cyanogenmod.providers.datausage
rm -rf org.cyanogenmod.snap org.cyanogenmod.theme.chooser org.cyanogenmod.themes.provider org.cyanogenmod.wallpapers.photophase org.cyanogenmod.weather.provider org.omnirom.omniswitch tursky.jan.settings
rm -rf com.android.settings com.android.systemui
Hat nicht geholfen...
Also habe ich auf logcat
einige der möglicherweise saftigen Bits zugegriffen und sie extrahiert (in zufälliger Reihenfolge):
page record for 0xb6e4301c was not found
AndroidRuntime: at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:1873)
ServiceManager: service 'batterystats' died
01-01 07:33:29.583 8300 8300 D AndroidRuntime: Shutting down VM
01-01 07:33:29.584 8300 8300 E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: main
01-01 07:37:16.064 15437 15437 E AndroidRuntime: Error reporting crash
01-01 07:37:16.064 15437 15437 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke interface method 'void android.app.IActivityManager.handleApplicationCrash(android.os.IBinder, android.app.ApplicationErrorReport$CrashInfo)' on a null object reference
01-01 07:37:16.064 15437 15437 I Process : Sending signal. PID: 15437 SIG: 9
01-01 07:37:16.088 189 189 I ServiceManager: service 'batterystats' died
01-01 07:37:16.088 189 189 I ServiceManager: service 'appops' died
01-01 07:37:16.088 189 189 I ServiceManager: service 'power' died
01-01 07:37:16.088 189 189 I ServiceManager: service 'display' died
01-01 07:37:16.093 217 217 E installd: eof
01-01 07:37:16.093 217 217 E installd: failed to read size
01-01 07:37:16.093 217 217 I installd: closing connection
01-01 07:37:16.404 12127 12127 I Zygote : Process 12239 exited cleanly (13)
01-01 07:37:16.405 12127 12127 E Zygote : Exit zygote because system server (15437) has terminated
01-01 07:37:16.446 189 189 I ServiceManager: service 'user.xposed.app' died
01-01 07:37:16.453 189 189 I ServiceManager: service 'media.audio_flinger' died
01-01 07:37:16.453 189 189 I ServiceManager: service 'media.player' died
01-01 07:37:16.453 189 189 I ServiceManager: service 'media.resource_manager' died
01-01 07:37:35.780 17500 17500 E cutils-trace: Error opening trace file: No such file or directory (2)
01-01 07:32:20.048 3896 3896 E AndroidRuntime: Error reporting WTF
01-01 07:32:20.048 3896 3896 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.app.IActivityManager.handleApplicationWtf(android.os.IBinder, java.lang.String, boolean, android.app.ApplicationErrorReport$CrashInfo)' on a null object reference
01-01 07:32:20.048 3896 3896 E AndroidRuntime: at com.android.internal.os.RuntimeInit.wtf(RuntimeInit.java:353)
01-01 07:32:20.048 3896 3896 E AndroidRuntime: at android.util.Log$1.onTerribleFailure(Log.java:104)
01-01 07:32:20.048 3896 3896 E AndroidRuntime: at android.util.Log.wtf(Log.java:297)
01-01 07:32:20.048 3896 3896 E AndroidRuntime: at android.util.Slog.wtf(Slog.java:82)
01-01 07:32:41.126 5786 5786 E AndroidRuntime: android.util.Log$TerribleFailure: No start tag found in package manager settings
01-01 07:32:41.161 5786 5786 W PackageManager: Library not found: /system/framework/org.apache.http.legacy.jar
01-01 07:32:41.247 5786 5786 E System : ******************************************
01-01 07:32:41.249 5786 5786 E System : ************ Failure starting system services
01-01 07:32:41.249 5786 5786 E System : java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.android.server.pm.Settings$VersionInfo.fingerprint' on a null object reference
Dann kam mir eine Idee und tat rm -rf /data/data
und mkdir /data/data
. Hat nicht geholfen, aber gezeigt, dass das Problem nicht auf App-Daten zurückzuführen ist, sondern auf etwas anderes in der Datenpartition.
Bald bemerkte ich ein sich wiederholendes Muster in logcat
, das anzeigte, dass mein Telefon in einer Schleife (nicht Bootloop) steckte und kein blockierender Aufruf an einen Prozess oder Thread war.
Die Schleife logcat
:
01-01 07:32:53.191 6368 6368 E System : ******************************************
01-01 07:32:53.191 6368 6368 E System : ************ Failure starting system services
01-01 07:32:53.191 6368 6368 E System : java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.android.server.pm.Settings$VersionInfo.fingerprint' on a null object reference
01-01 07:32:53.191 6368 6368 E System : at com.android.server.pm.PackageManagerService.<init>(PackageManagerService.java:2170)
01-01 07:32:53.191 6368 6368 E System : at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:1873)
01-01 07:32:53.191 6368 6368 E System : at com.android.server.SystemServer.startBootstrapServices(SystemServer.java:387)
01-01 07:32:53.191 6368 6368 E System : at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
01-01 07:32:53.191 6368 6368 E System : at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:334)
01-01 07:32:53.191 6368 6368 E System : at com.android.server.SystemServer.startBootstrapServices(<Xposed>)
01-01 07:32:53.191 6368 6368 E System : at com.android.server.SystemServer.run(SystemServer.java:289)
01-01 07:32:53.191 6368 6368 E System : at com.android.server.SystemServer.main(SystemServer.java:176)
01-01 07:32:53.191 6368 6368 E System : at java.lang.reflect.Method.invoke(Native Method)
01-01 07:32:53.191 6368 6368 E System : at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
01-01 07:32:53.191 6368 6368 E System : at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-01 07:32:53.191 6368 6368 E System : at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:102)
01-01 07:32:53.192 6368 6368 E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: main
01-01 07:32:53.192 6368 6368 E AndroidRuntime: java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.android.server.pm.Settings$VersionInfo.fingerprint' on a null object reference
01-01 07:32:53.192 6368 6368 E AndroidRuntime: at com.android.server.pm.PackageManagerService.<init>(PackageManagerService.java:2170)
01-01 07:32:53.192 6368 6368 E AndroidRuntime: at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:1873)
01-01 07:32:53.192 6368 6368 E AndroidRuntime: at com.android.server.SystemServer.startBootstrapServices(SystemServer.java:387)
01-01 07:32:53.192 6368 6368 E AndroidRuntime: at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
01-01 07:32:53.192 6368 6368 E AndroidRuntime: at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:334)
01-01 07:32:53.192 6368 6368 E AndroidRuntime: at com.android.server.SystemServer.startBootstrapServices(<Xposed>)
01-01 07:32:53.192 6368 6368 E AndroidRuntime: at com.android.server.SystemServer.run(SystemServer.java:289)
01-01 07:32:53.192 6368 6368 E AndroidRuntime: at com.android.server.SystemServer.main(SystemServer.java:176)
01-01 07:32:53.192 6368 6368 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
01-01 07:32:53.192 6368 6368 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
01-01 07:32:53.192 6368 6368 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-01 07:32:53.192 6368 6368 E AndroidRuntime: at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:102)
01-01 07:32:53.193 6368 6368 E AndroidRuntime: Error reporting crash
01-01 07:32:53.193 6368 6368 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke interface method 'void android.app.IActivityManager.handleApplicationCrash(android.os.IBinder, android.app.ApplicationErrorReport$CrashInfo)' on a null object reference
01-01 07:32:53.193 6368 6368 E AndroidRuntime: at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:95)
01-01 07:32:53.193 6368 6368 E AndroidRuntime: at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
01-01 07:32:53.193 6368 6368 E AndroidRuntime: at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
01-01 07:32:53.411 6438 6438 F libc : page record for 0xb6d8301c was not found (block_size=16)
01-01 07:32:57.925 6682 6682 F libc : page record for 0xb6e5b01c was not found (block_size=16)
01-01 07:33:03.304 6930 6930 F libc : page record for 0xb6de901c was not found (block_size=16)
01-01 07:33:05.758 7050 7050 I InstallerConnection: connecting...
01-01 07:33:05.772 7050 7050 I InstallerConnection: disconnecting...
01-01 07:33:05.790 7050 7050 I SystemServer: Entered the Android system server!
01-01 07:33:05.896 7050 7050 I SystemServiceManager: Starting com.android.server.pm.Installer
01-01 07:33:05.897 7050 7050 I Installer: Waiting for installd to be ready.
01-01 07:33:05.897 7050 7050 I InstallerConnection: connecting...
01-01 07:33:05.897 7050 7050 I SystemServiceManager: Starting com.android.server.am.ActivityManagerService$Lifecycle
01-01 07:33:05.908 7050 7050 I XXXXXX : choosing minFree values for 32 Bit
01-01 07:33:05.908 7050 7050 I XXXXXX : choosing minFree values for 32 Bit
01-01 07:33:05.908 7050 7050 I XXXXXX : choosing minFree values for 32 Bit
01-01 07:33:05.908 7050 7050 I XXXXXX : choosing minFree values for 32 Bit
01-01 07:33:05.908 7050 7050 I XXXXXX : choosing minFree values for 32 Bit
01-01 07:33:05.908 7050 7050 I XXXXXX : choosing minFree values for 32 Bit
01-01 07:33:06.027 7050 7050 I ActivityManager: Memory class: 96
01-01 07:33:06.101 7050 7050 D BatteryStatsImpl: Reading daily items from /data/system/batterystats-daily.xml
01-01 07:33:06.254 7050 7050 W ProcessCpuTracker: Skipping unknown process pid 7075
01-01 07:33:06.265 7050 7050 I IntentFirewall: Read new rules (A:0 B:0 S:0)
01-01 07:33:06.279 7050 7050 D AppOps : AppOpsService published
01-01 07:33:06.279 7050 7050 I SystemServiceManager: Starting com.android.server.power.PowerManagerService
01-01 07:33:06.287 7050 7050 I SystemServiceManager: Starting com.android.server.lights.LightsService
01-01 07:33:06.290 7050 7050 I SystemServiceManager: Starting com.android.server.display.DisplayManagerService
01-01 07:33:06.293 7050 7050 I SystemServiceManager: Starting phase 100
01-01 07:33:06.301 7050 7094 I DisplayManagerService: Display device added: DisplayDeviceInfo{"Built-in Screen": uniqueId="local:0", 720 x 1280, modeId 1, defaultModeId 1, supportedModes [{id=1, width=720, height=1280, fps=55.9}], colorTransformId 1, defaultColorTransformId 1, supportedColorTransforms [{id=1, colorTransform=0}], density 320, 294.967 x 295.563 dpi, appVsyncOff 0, presDeadline 18889087, touch INTERNAL, rotation 0, type BUILT_IN, state UNKNOWN, FLAG_DEFAULT_DISPLAY, FLAG_ROTATES_WITH_CONTENT, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS}
01-01 07:33:06.304 7050 7050 I SystemServer: Package Manager
01-01 07:33:06.309 7050 7094 I DisplayManagerService: Display device changed state: "Built-in Screen", ON
01-01 07:33:08.137 7201 7201 F libc : page record for 0xb6e5701c was not found (block_size=16)
01-01 07:33:13.103 7467 7467 F libc : page record for 0xb6de801c was not found (block_size=16)
01-01 07:33:17.544 7700 7700 I InstallerConnection: connecting...
01-01 07:33:17.552 7700 7700 I InstallerConnection: disconnecting...
01-01 07:33:17.579 7700 7700 I SystemServer: Entered the Android system server!
01-01 07:33:17.750 7700 7700 I SystemServiceManager: Starting com.android.server.pm.Installer
01-01 07:33:17.750 7700 7700 I Installer: Waiting for installd to be ready.
01-01 07:33:17.750 7700 7700 I InstallerConnection: connecting...
01-01 07:33:17.751 7700 7700 I SystemServiceManager: Starting com.android.server.am.ActivityManagerService$Lifecycle
01-01 07:33:17.760 7700 7700 I XXXXXX : choosing minFree values for 32 Bit
01-01 07:33:17.760 7700 7700 I XXXXXX : choosing minFree values for 32 Bit
01-01 07:33:17.760 7700 7700 I XXXXXX : choosing minFree values for 32 Bit
01-01 07:33:17.760 7700 7700 I XXXXXX : choosing minFree values for 32 Bit
01-01 07:33:17.760 7700 7700 I XXXXXX : choosing minFree values for 32 Bit
01-01 07:33:17.760 7700 7700 I XXXXXX : choosing minFree values for 32 Bit
01-01 07:33:17.836 7700 7700 I ActivityManager: Memory class: 96
01-01 07:33:17.914 7700 7700 D BatteryStatsImpl: Reading daily items from /data/system/batterystats-daily.xml
01-01 07:33:18.187 7700 7700 W ProcessCpuTracker: Skipping unknown process pid 7732
01-01 07:33:18.196 7700 7700 I IntentFirewall: Read new rules (A:0 B:0 S:0)
01-01 07:33:18.333 7700 7700 D AppOps : AppOpsService published
01-01 07:33:18.334 7700 7700 I SystemServiceManager: Starting com.android.server.power.PowerManagerService
01-01 07:33:18.353 7700 7700 I SystemServiceManager: Starting com.android.server.lights.LightsService
01-01 07:33:18.356 7700 7700 I SystemServiceManager: Starting com.android.server.display.DisplayManagerService
01-01 07:33:18.370 7700 7761 I DisplayManagerService: Display device added: DisplayDeviceInfo{"Built-in Screen": uniqueId="local:0", 720 x 1280, modeId 1, defaultModeId 1, supportedModes [{id=1, width=720, height=1280, fps=55.9}], colorTransformId 1, defaultColorTransformId 1, supportedColorTransforms [{id=1, colorTransform=0}], density 320, 294.967 x 295.563 dpi, appVsyncOff 0, presDeadline 18889087, touch INTERNAL, rotation 0, type BUILT_IN, state UNKNOWN, FLAG_DEFAULT_DISPLAY, FLAG_ROTATES_WITH_CONTENT, FLAG_SECURE, FLAG_SUPPORTS_PROTECTED_BUFFERS}
01-01 07:33:18.373 7700 7700 I SystemServiceManager: Starting phase 100
01-01 07:33:18.374 7700 7761 I DisplayManagerService: Display device changed state: "Built-in Screen", ON
01-01 07:33:18.375 7700 7700 I SystemServer: Package Manager
01-01 07:33:18.496 7700 7700 D SELinuxMMAC: Using policy file /system/etc/security/mac_permissions.xml
01-01 07:33:18.504 7700 7700 W PackageManager: No start tag found in package manager settings
01-01 07:33:18.507 7700 7700 E PackageManager: No start tag found in package manager settings
01-01 07:33:18.509 7700 7700 E AndroidRuntime: Error reporting WTF
01-01 07:33:18.509 7700 7700 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke interface method 'boolean android.app.IActivityManager.handleApplicationWtf(android.os.IBinder, java.lang.String, boolean, android.app.ApplicationErrorReport$CrashInfo)' on a null object reference
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at com.android.internal.os.RuntimeInit.wtf(RuntimeInit.java:353)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at android.util.Log$1.onTerribleFailure(Log.java:104)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at android.util.Log.wtf(Log.java:297)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at android.util.Slog.wtf(Slog.java:82)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at com.android.server.pm.Settings.readLPw(Settings.java:2829)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at com.android.server.pm.PackageManagerService.<init>(PackageManagerService.java:2030)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:1873)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at com.android.server.SystemServer.startBootstrapServices(SystemServer.java:387)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:334)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at com.android.server.SystemServer.startBootstrapServices(<Xposed>)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at com.android.server.SystemServer.run(SystemServer.java:289)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at com.android.server.SystemServer.main(SystemServer.java:176)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:102)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: Original WTF:
01-01 07:33:18.509 7700 7700 E AndroidRuntime: android.util.Log$TerribleFailure: No start tag found in package manager settings
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at android.util.Log.wtf(Log.java:291)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at android.util.Slog.wtf(Slog.java:82)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at com.android.server.pm.Settings.readLPw(Settings.java:2829)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at com.android.server.pm.PackageManagerService.<init>(PackageManagerService.java:2030)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at com.android.server.pm.PackageManagerService.main(PackageManagerService.java:1873)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at com.android.server.SystemServer.startBootstrapServices(SystemServer.java:387)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(Native Method)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:334)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at com.android.server.SystemServer.startBootstrapServices(<Xposed>)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at com.android.server.SystemServer.run(SystemServer.java:289)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at com.android.server.SystemServer.main(SystemServer.java:176)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
01-01 07:33:18.509 7700 7700 E AndroidRuntime: at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:102)
01-01 07:33:18.527 7700 7700 W PackageManager: Library not found: /system/framework/org.apache.http.legacy.jar
01-01 07:33:18.580 7700 7700 E System : ******************************************
01-01 07:33:18.581 7700 7700 E System : ************ Failure starting system services
Beachten Sie, dass die ersten und letzten beiden Zeilen gleich sind, was auf eine Schleife hinweist.
Edit:
/data/system # rm -rf *
hilft beim Starten des Telefons, also ist das Problem da. Das Ausführen des Befehls führt jedoch zu einem teilweisen Verlust der Anwendungsdaten (also habe ich die Sicherungen der fehlerhaften /data
Partition wiederhergestellt).
Ich bin gerade selbst auf dieses Problem auf meinem Nexus 5 mit Android 6 gestoßen, und nachdem ich ein paar Tage daran herumgebastelt hatte, konnte ich es lösen, ohne alle meine Daten zu löschen, also wollte ich teilen, was ich getan habe, falls jemand anderes jemals darauf stößt ein ähnliches Problem und stellt sich der Herausforderung, das Problem zu debuggen, anstatt das Telefon zu löschen.
Meine Probleme schienen alle dieselbe Ursache zu haben: leere XML-Dateien. Ich hatte mit dem Deaktivieren von fsync in meinem Kernel herumgespielt, um den Leistungsunterschied auszuprobieren, und dies verursachte wahrscheinlich einen Datenverlust.
Beobachtung: /data/system/packages.xml
, /data/system/packages.list
und /data/system/job/jobs.xml
waren leer.
Unten sind die Schritte, die ich ausgeführt habe. Beachten Sie, dass dies das Ergebnis von Experimenten ist und Sie diese Befehle nicht blindlings ausführen sollten, ohne sie vorher verstanden zu haben. ;)
/data
Partition./data/system
Verzeichnis und starten Sie es neu, um es neu zu generieren./data/system
Verzeichnis irgendwohin (in meinem Fall: /sdcard/system-good
)./data
Partition wieder her und stellen Sie gelöschte App-Daten wieder her.rm /data/system/job/jobs.xml
cat /sdcard/system-good/packages.list > /data/system/packages.list
cat /sdcard/system-good/packages.xml > /data/system/packages.xml
grep "has changed from uid" /sdcard/system-good/uiderrors.txt | while read -r LINE; do sed -i "s/\(^$(echo "$LINE" | awk '{ printf "%s\\) %d/\\1 %d", $6, $13, $11 }')/" /data/system/packages.list ; done
grep "has changed from uid" /sdcard/system-good/uiderrors.txt | while read -r LINE; do sed -i "s/\(^ <package name=\"$(echo "$LINE" | awk '{ printf "%s\" .\\+ userId=\"\\)%d\">/\\1%d\">", $6, $13, $11 }')/" /data/system/packages.xml ; done
Für mich wurde dies zu einem Nebenprojekt, und ich lernte ein bisschen mehr über die Interna von Android. :) Nicht alle meine Schritte sind möglicherweise relevant, um Ihr Szenario zu lösen.
Das Leerzeichen jobs.xml
verursachte eine NullPointerException im JobStore: java.lang.RuntimeException: Failed to create service com.android.server.job.JobSchedulerService: service constructor threw an exception
. Es wurde bereits im Upstream behoben , aber dieser Fix ist noch nicht in Android 6 enthalten. Durch einfaches Löschen /data/system/job/jobs.xml
wird der gesamte Codeabschnitt mit dem Fehler übersprungen, wodurch das Problem behoben wird.
Die leeren Paketmanagerdateien sollten beim Löschen neu generiert werden, aber das führte leider zu einem weiteren Bootloop für mich, für den ich keine Protokolle sammeln konnte, um das Problem weiter einzuschätzen. Also habe ich das System wiederhergestellt, indem ich die gesamte /data/system
, dann eine Kopie davon erstellt und mein Backup von wiederhergestellt /data
und dann die alte und die neue Version von verglichen, /data/system
um herauszufinden, was den Absturz verursachen könnte.
In meinem Fall bestand der Hauptunterschied darin, dass sich die UIDs für alle meine Apps in den neu generierten package.xml
und package.list
Dateien geändert hatten, was dazu führte, dass der Paketmanager alle Daten für diese Apps löschte, wenn er den Paketinhalt während des Bootens überprüfte. Ich löste dies, indem ich die neu generierten Versionen kopierte und sie so änderte, dass sie mit den alten UIDs übereinstimmten, wobei ich die Protokolldatei verwendete, die alle nicht übereinstimmenden UIDs aufzeichnete. Nicht schön, und im Nachhinein wäre es vielleicht besser gewesen, einfach die UIDs aus den /data/data
Verzeichnissen zu lesen oder zu schauen, wie Android diese Regeneration überhaupt macht und das zu optimieren, aber das hat auch funktioniert.
Als Ergänzung zur obigen Antwort können Sie mit dem folgenden Shell-Skript eine Sicherung der drei Dateien ( jobs.xml
, packages.xml
und ) durchführen:packages.list
#!/system/bin/sh
dir=/data/system
watch -n60 "cat $dir/packages.list > $dir/packages.list.bak" > /dev/null &
watch -n60 "cat $dir/packages.xml > $dir/packages.xml.bak" > /dev/null &
watch -n60 "cat $dir/job/jobs.xml > $dir/jobs.xml.bak" > /dev/null &
echo "Now periodically performing backup of packages' (APKs') databases..."
watch
erstellt regelmäßig alle 60 Sekunden eine Sicherungskopie der drei Dateien. Speichern Sie das Shell-Skript im /system/xbin
Verzeichnis, wenden Sie es chmod 0755
an chown root.shell
und führen Sie es manuell aus.
Beachten Sie jedoch, dass es nicht empfohlen wird, das Shell-Skript zu hinzuzufügen init.d
, da dies eine fehlerhafte Sicherung der drei Dateien schreiben könnte.
Notieren Sie sich die Berechtigungen, den Besitzer und die Gruppe der Originaldateien, um sie später auf die wiederhergestellten Backups anzuwenden.
ls -l data/system/job/jobs.*
-rw------- 1 system system 1401 2021-04-06 11:42 data/system/job/jobs.xml
ls -l data/system/packages.*
-rw-r----- 1 system package_info 10289 2021-04-06 11:42 data/system/packages.list
-rw-rw---- 1 system system 477016 2021-04-06 11:42 data/system/packages.xml
Andy Jan
sbrm1
sbrm1