Marshmallow no arranca, pero no arranca

Ediciones y logcats a continuación.

Que pasa:

Hace unos días dejó mi teléfono (chipset Mediatek) para cargar durante la noche. Lo que no noté fue que el cargador estaba suelto y la carga rondaba el 2%. A la mañana siguiente me desperté y encontré que la batería de mi teléfono se había agotado por completo.

Cuando traté de iniciarlo (después de cargarlo), estaba tardando demasiado y el teléfono se estaba calentando. Sin embargo, el arranque no se completó ni el teléfono se reinició (como un bucle de arranque).

Lo que hice:

Fui a la recuperación, hice copias de seguridad, borré la /datapartición y encendí el teléfono. Sin embargo, necesito los datos de la aplicación (más que el teléfono) y simplemente formatear la partición no pareció acercarme a mi objetivo y, por lo tanto, restauré las copias de seguridad.

Luego borré los datos de varios programas que podrían haber causado el problema:

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

no ayudó...

Así que accedí logcaty extraje algunos de los bits posiblemente jugosos (en orden aleatorio):

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

Entonces tuve una idea e hice rm -rf /data/datay mkdir /data/data. No ayudó, pero mostró que el problema no se debía a los datos de la aplicación, sino a otra cosa en la partición de datos.

Pronto, noté un patrón repetitivo en logcat, lo que indica que mi teléfono estaba atascado en un bucle (no en un bucle de arranque) y no en una llamada de bloqueo a un proceso o hilo.

El bucle 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

Tenga en cuenta que la primera y las últimas 2 líneas son iguales, lo que indica un bucle.

Editar:
/data/system # rm -rf * ayuda a iniciar el teléfono, por lo que el problema está ahí. Pero ejecutar el comando da como resultado una pérdida parcial de los datos de la aplicación (así que restauré las copias de seguridad de la /datapartición defectuosa).

Ambos hacen referencia a Xposed: intente deshabilitarlo temporalmente presionando los botones de volumen cuando se inicia por primera vez. Además, intente actualizar su ROM original nuevamente sobre la instalación existente; suena estúpido, pero en realidad funcionó para mí en una situación similar.
Listo, no ayuda...
Y probaré lo de la ROM esta noche.

Respuestas (2)

Acabo de encontrarme con este problema en mi Nexus 5 con Android 6 y después de jugar con él durante unos días pude resolverlo sin borrar todos mis datos, así que quería compartir lo que hice en caso de que alguien más lo encuentre. un problema similar y está preparado para el desafío de depurar el problema en lugar de borrar el teléfono.

Todos mis problemas parecían tener la misma causa raíz: archivos XML vacíos. Había jugado un poco con la desactivación de fsync en mi kernel para probar la diferencia de rendimiento, y esto probablemente causó alguna pérdida de datos.

Observación: /data/system/packages.xml, /data/system/packages.listy /data/system/job/jobs.xmlestaban vacíos.

A continuación se muestran los pasos que ejecuté. Tenga en cuenta que este es el resultado de la experimentación y no debe ejecutar ciegamente estos comandos sin comprenderlos primero. ;)

  • Haga una copia de seguridad de toda la /datapartición.
  • Elimine el /data/systemdirectorio y reinicie para regenerarlo.
  • Copie el /data/systemdirectorio en algún lugar (en mi caso:) /sdcard/system-good.
  • Restaure la copia de seguridad de la /datapartición, restaurando los datos de la aplicación borrados.
  • Elimine el archivo JobStore:rm /data/system/job/jobs.xml
  • Copie los archivos regenerados:
    cat /sdcard/system-good/packages.list > /data/system/packages.list
    cat /sdcard/system-good/packages.xml > /data/system/packages.xml
  • Repare los UID del paquete en función de los registros de errores:
    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
  • Caché borrado y dalvik por si acaso.
  • ¡Se reinició y mi Android, incluidas todas mis aplicaciones, se revivió!

Para mí, esto se convirtió en un proyecto paralelo y aprendí un poco más sobre las funciones internas de Android. :) No todos mis pasos pueden ser relevantes para resolver su escenario.

El vacío jobs.xmlprovocó una NullPointerException en JobStore: java.lang.RuntimeException: Failed to create service com.android.server.job.JobSchedulerService: service constructor threw an exception. Ya se ha solucionado en sentido ascendente , pero esa solución aún no está incluida en Android 6. Simplemente al eliminar /data/system/job/jobs.xmlse omite toda la sección de código con el error, lo que resuelve el problema.

Los archivos del administrador de paquetes vacíos deberían regenerarse al eliminarlos, sin embargo, eso desafortunadamente resultó en otro reinicio para mí, por lo que no pude recopilar registros para evaluar más a fondo el problema. Así que recuperé el sistema eliminando todo el archivo /data/system, luego hice una copia y restauré mi copia de seguridad de /data, y luego comparé la versión anterior y la nueva /data/systempara descubrir qué podría estar causando el bloqueo.

En mi caso, la principal diferencia fue que los UID de todas mis aplicaciones habían cambiado en los archivos regenerados package.xmly package.list, lo que provocó que el administrador de paquetes eliminara todos los datos de esas aplicaciones al verificar el contenido del paquete durante el arranque. Resolví esto copiando las versiones regeneradas y cambiándolas para que coincidieran con los UID anteriores, usando el archivo de registro que registró todos los UID que no coincidían. No es bonito, y en retrospectiva, podría haber sido mejor simplemente leer los UID de los /data/datadirectorios o ver cómo Android hace esta regeneración en primer lugar y modificar eso, pero esto también funcionó.

Gracias por publicar su solución. Los apagados no limpios harán que los archivos /data/system/packges se restablezcan a archivos vacíos. Si Android tuviera una copia de seguridad o un diario para esos archivos, sería genial.

Como complemento a la respuesta anterior, puede realizar una copia de seguridad de los tres archivos ( jobs.xml, packages.xmly packages.list) con el siguiente script de shell:

#!/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..."

watchperiódicamente, cada 60 segundos, realizará una copia de seguridad de los tres archivos. Guarde el script de shell en el /system/xbindirectorio, aplíquelo chmod 0755y chown root.shellejecútelo manualmente.

Sin embargo, tenga en cuenta que no se recomienda agregar el script de shell a init.d, ya que eso podría escribir una copia de seguridad rota de los tres archivos.

Tome nota de los permisos, propietario y grupo de los archivos originales para, posteriormente, aplicarlos a las copias de seguridad restauradas.

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