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 /data
partició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í logcat
y 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/data
y 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 /data
partición defectuosa).
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.list
y /data/system/job/jobs.xml
estaban 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. ;)
/data
partición./data/system
directorio y reinicie para regenerarlo./data/system
directorio en algún lugar (en mi caso:) /sdcard/system-good
./data
partición, restaurando los datos de la aplicación borrados.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
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.xml
provocó 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.xml
se 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/system
para 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.xml
y 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/data
directorios o ver cómo Android hace esta regeneración en primer lugar y modificar eso, pero esto también funcionó.
Como complemento a la respuesta anterior, puede realizar una copia de seguridad de los tres archivos ( jobs.xml
, packages.xml
y 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..."
watch
periódicamente, cada 60 segundos, realizará una copia de seguridad de los tres archivos. Guarde el script de shell en el /system/xbin
directorio, aplíquelo chmod 0755
y chown root.shell
ejecú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
andy yan
sbrm1
sbrm1