Tengo un OnePlus 5 en el que he instalado LineageOS 18.1 con Google Apps.
Mi intención es que sea el teléfono de mi hijo, que es menor de edad y cuya cuenta está limitada por Google Family Link. (No estoy particularmente enamorado de Family Link; sólo viene automáticamente con la honestidad al registrar la cuenta de Google del niño, es decir, no mentir sobre su edad. La limitación del tiempo de pantalla es la única característica que realmente encuentro útil).
También instalé Magisk v23 para rootear el teléfono. Me doy cuenta de que con suficiente determinación mi hijo podría potencialmente eludir Family Link usando Root y, por ejemplo, adb, y no me importa.
Utilicé mi propia cuenta de Google para la configuración inicial, pero eventualmente me gustaría transferir las aplicaciones y los datos de mi hijo desde un dispositivo anterior.
Lo primero que pensé fue en utilizar la función de "varios usuarios". Creé una cuenta para el niño en el teléfono, e iba a utilizar Titanium Backup para restaurar las copias de seguridad de las aplicaciones y los datos del teléfono anterior.
Sin embargo, estoy empezando a tener dudas. ¿Es esta una buena manera de enfocar esto? Por ejemplo, si sigo siendo el "propietario del dispositivo", ¿no contaminará este dispositivo mi historial de localización/compartición?
¿Entiendo correctamente que no hay manera de cambiar quién es el propietario (es decir, promover al niño de "usuario" a "propietario" y simultáneamente degradarme a mí mismo de "propietario" a "usuario")?
¿Sería mejor idea, en cambio, en el entorno del propietario del dispositivo, eliminar mi cuenta de Google y añadir la del niño?
Me gustaría evitar los experimentos largos si es posible, pero responderé a mi propia pregunta si se da el caso.
Mi principal pregunta concreta es: ¿cuáles serían las consecuencias de estos dos enfoques?
- el niño continúa como usuario; yo soy el propietario
- añadir la cuenta de google del niño al perfil del propietario del dispositivo; eliminar la mía
Actualización: añadir a kid como usuario no es sencillo; aparentemente (y lógicamente) hay todo un nuevo espacio de nombres de montaje por lo que el directorio de TitaniumBackup que copié al directorio /sdcard de la cuenta principal no es visible, e incluso un shell adb elevado no tiene acceso a /storage/emulated/10
(que deduzco que es donde vive el nuevo espacio de almacenamiento). No pude molestarme en solucionar esto, así que eliminé el usuario del niño.
Luego intenté añadir la cuenta del niño junto a la mía, pero eso no funciona porque está gestionada por el enlace familiar; primero tengo que eliminar mi cuenta. Hice eso, y al tratar de añadir la cuenta del niño entro en un bucle interminable en el que dice que instalará el gestor de enlace familiar, hago clic en siguiente, y me informa de que este paso es necesario; repite hasta la saciedad. I piense en el problema puede ser que no pase la comprobación de SafetyNet, porque logcat
tiene líneas como
06-16 15:49:05.915 11187 11187 I BaseTask: ScheduleSafetyNetJobTask started. [CONTEXT service_id=42 ]
06-16 15:49:05.916 11187 12931 I KidsJobScheduler: schedule job DEVICE_SETUP_SAFETY_NET [CONTEXT service_id=42 ]
06-16 15:49:05.918 1444 3734 E EdXposed-Bridge: java.lang.ClassCastException: java.lang.String cannot be cast to android.content.Intent
06-16 15:49:05.918 1444 3734 E EdXposed-Bridge: at com.aviraxp.adblocker.continued.hook.h$a.beforeHookedMethod(ShortcutHook.java:2)
06-16 15:49:05.918 1444 3734 E EdXposed-Bridge: at de.robv.android.xposed.MethodHooker.handleHookedMethod(MethodHooker.java:61)
06-16 15:49:05.918 1444 3734 E EdXposed-Bridge: at EdHooker_d6cb3615b07510db932c119335b0668763709397.hook(Unknown Source:171)
06-16 15:49:05.918 1444 3734 E EdXposed-Bridge: at com.android.server.am.ActivityManagerService.broadcastIntentWithFeature(ActivityManagerService.java:16728)
06-16 15:49:05.918 1444 3734 E EdXposed-Bridge: at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2283)
06-16 15:49:05.918 1444 3734 E EdXposed-Bridge: at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2867)
06-16 15:49:05.918 1444 3734 E EdXposed-Bridge: at android.os.Binder.execTransactInternal(Binder.java:1154)
06-16 15:49:05.918 1444 3734 E EdXposed-Bridge: at android.os.Binder.execTransact(Binder.java:1123)
06-16 15:49:05.919 1444 3734 E EdXposed-Bridge: java.lang.ClassCastException: java.lang.String cannot be cast to android.content.Intent
06-16 15:49:05.919 1444 3734 E EdXposed-Bridge: at com.aviraxp.adblocker.continued.hook.h$a.beforeHookedMethod(ShortcutHook.java:2)
06-16 15:49:05.919 1444 3734 E EdXposed-Bridge: at de.robv.android.xposed.MethodHooker.handleHookedMethod(MethodHooker.java:61)
06-16 15:49:05.919 1444 3734 E EdXposed-Bridge: at EdHooker_1d32fd428893610d3914110116abed3745926464.hook(Unknown Source:185)
06-16 15:49:05.919 1444 3734 E EdXposed-Bridge: at com.android.server.am.ActivityManagerService.broadcastIntentLocked(ActivityManagerService.java:15914)
06-16 15:49:05.919 1444 3734 E EdXposed-Bridge: at java.lang.reflect.Method.invoke(Native Method)
06-16 15:49:05.919 1444 3734 E EdXposed-Bridge: at de.robv.android.xposed.MethodHooker.handleHookedMethod(MethodHooker.java:81)
06-16 15:49:05.919 1444 3734 E EdXposed-Bridge: at EdHooker_d6cb3615b07510db932c119335b0668763709397.hook(Unknown Source:171)
06-16 15:49:05.919 1444 3734 E EdXposed-Bridge: at com.android.server.am.ActivityManagerService.broadcastIntentWithFeature(ActivityManagerService.java:16728)
06-16 15:49:05.919 1444 3734 E EdXposed-Bridge: at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2283)
06-16 15:49:05.919 1444 3734 E EdXposed-Bridge: at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2867)
06-16 15:49:05.919 1444 3734 E EdXposed-Bridge: at android.os.Binder.execTransactInternal(Binder.java:1154)
06-16 15:49:05.919 1444 3734 E EdXposed-Bridge: at android.os.Binder.execTransact(Binder.java:1123)
06-16 15:49:05.921 11187 12930 I BaseTask: ScheduleSafetyNetJobTask finished (5 ms). [CONTEXT service_id=42 ]
06-16 15:49:05.928 1444 3734 W ActivityTaskManager: Tried to set launchTime (0) < mLastActivityLaunchTime (1954917)
06-16 15:49:05.938 10959 10959 W DeviceAdminAdd: Unable to set profile owner post-setup, no default supervisorprofile owner defined
06-16 15:49:05.993 11187 11187 I BaseTask: ScheduleSafetyNetJobTask started. [CONTEXT service_id=42 ]
06-16 15:49:05.994 11187 12931 I KidsJobScheduler: schedule job DEVICE_SETUP_SAFETY_NET [CONTEXT service_id=42 ]
06-16 15:49:05.996 11187 11187 W System.err: java.lang.Exception: Result is true
06-16 15:49:05.996 11187 11187 W System.err: at m.cqr.c(:com.google.android.gms.policy_kids@211980404@211980404057.377187554.377187554:6)
06-16 15:49:05.996 11187 11187 W System.err: at m.cqv.j(:com.google.android.gms.policy_kids@211980404@211980404057.377187554.377187554:0)
06-16 15:49:05.996 11187 11187 W System.err: at com.google.android.gms.kids.setup.fragment.KidSetupFragment.cm(:com.google.android.gms.policy_kids@211980404@211980404057.377187554.377187554:0)
06-16 15:49:05.996 11187 11187 W System.err: at com.google.android.gms.kids.setup.fragment.ActivateProfileOwnerFragment.onActivityResult(:com.google.android.gms.policy_kids@211980404@211980404057.377187554.377187554:6)
06-16 15:49:05.996 11187 11187 W System.err: at com.google.android.chimera.FragmentProxy.onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:49:05.996 11187 11187 W System.err: at fd.ht(:com.google.android.gms@212116046@21.21.16 (150400-378233385):6)
06-16 15:49:05.996 11187 11187 W System.err: at aes.g(:com.google.android.gms@212116046@21.21.16 (150400-378233385):6)
06-16 15:49:05.996 11187 11187 W System.err: at eic.onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:49:05.996 11187 11187 W System.err: at eih.onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:49:05.996 11187 11187 W System.err: at edb.support_onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:49:05.996 11187 11187 W System.err: at edg.onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:49:05.996 11187 11187 W System.err: at edg.public_onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:49:05.997 11187 11187 W System.err: at rie.onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):4)
06-16 15:49:05.997 11187 11187 W System.err: at android.app.Activity.dispatchActivityResult(Activity.java:8310)
06-16 15:49:05.997 11187 11187 W System.err: at android.app.ActivityThread.deliverResults(ActivityThread.java:5002)
06-16 15:49:05.997 11187 11187 W System.err: at android.app.ActivityThread.handleSendResult(ActivityThread.java:5050)
06-16 15:49:05.997 11187 11187 W System.err: at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
06-16 15:49:05.997 11187 11187 W System.err: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
06-16 15:49:05.997 11187 11187 W System.err: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
06-16 15:49:05.997 11187 11187 W System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
06-16 15:49:05.997 11187 11187 W System.err: at android.os.Handler.dispatchMessage(Handler.java:106)
06-16 15:49:05.997 11187 11187 W System.err: at android.os.Looper.loop(Looper.java:223)
06-16 15:49:05.997 11187 11187 W System.err: at android.app.ActivityThread.main(ActivityThread.java:7660)
06-16 15:49:05.997 11187 11187 W System.err: at java.lang.reflect.Method.invoke(Native Method)
06-16 15:49:05.997 11187 11187 W System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
06-16 15:49:05.997 11187 11187 W System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: java.lang.ClassCastException: java.lang.String cannot be cast to android.content.Intent
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: at com.aviraxp.adblocker.continued.hook.h$a.beforeHookedMethod(ShortcutHook.java:2)
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: at de.robv.android.xposed.MethodHooker.handleHookedMethod(MethodHooker.java:61)
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: at EdHooker_d6cb3615b07510db932c119335b0668763709397.hook(Unknown Source:171)
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: at com.android.server.am.ActivityManagerService.broadcastIntentWithFeature(ActivityManagerService.java:16728)
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2283)
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2867)
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: at android.os.Binder.execTransactInternal(Binder.java:1154)
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: at android.os.Binder.execTransact(Binder.java:1123)
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: java.lang.ClassCastException: java.lang.String cannot be cast to android.content.Intent
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: at com.aviraxp.adblocker.continued.hook.h$a.beforeHookedMethod(ShortcutHook.java:2)
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: at de.robv.android.xposed.MethodHooker.handleHookedMethod(MethodHooker.java:61)
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: at EdHooker_1d32fd428893610d3914110116abed3745926464.hook(Unknown Source:185)
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: at com.android.server.am.ActivityManagerService.broadcastIntentLocked(ActivityManagerService.java:15914)
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: at java.lang.reflect.Method.invoke(Native Method)
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: at de.robv.android.xposed.MethodHooker.handleHookedMethod(MethodHooker.java:81)
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: at EdHooker_d6cb3615b07510db932c119335b0668763709397.hook(Unknown Source:171)
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: at com.android.server.am.ActivityManagerService.broadcastIntentWithFeature(ActivityManagerService.java:16728)
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: at android.app.IActivityManager$Stub.onTransact(IActivityManager.java:2283)
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2867)
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: at android.os.Binder.execTransactInternal(Binder.java:1154)
06-16 15:49:05.999 1444 4198 E EdXposed-Bridge: at android.os.Binder.execTransact(Binder.java:1123)
06-16 15:49:06.003 11187 12930 I BaseTask: ScheduleSafetyNetJobTask finished (9 ms). [CONTEXT service_id=42 ]
He desactivado EdXposed, dejándome con
06-16 15:58:55.797 6486 6486 W DeviceAdminAdd: Unable to set profile owner post-setup, no default supervisorprofile owner defined
06-16 15:58:55.852 6269 6269 I BaseTask: ScheduleSafetyNetJobTask started. [CONTEXT service_id=42 ]
06-16 15:58:55.853 6269 6634 I KidsJobScheduler: schedule job DEVICE_SETUP_SAFETY_NET [CONTEXT service_id=42 ]
06-16 15:58:55.855 6269 6269 W System.err: java.lang.Exception: Result is true
06-16 15:58:55.855 6269 6269 W System.err: at m.cqr.c(:com.google.android.gms.policy_kids@211980404@211980404057.377187554.377187554:6)
06-16 15:58:55.855 6269 6269 W System.err: at m.cqv.j(:com.google.android.gms.policy_kids@211980404@211980404057.377187554.377187554:0)
06-16 15:58:55.855 6269 6269 W System.err: at com.google.android.gms.kids.setup.fragment.KidSetupFragment.cm(:com.google.android.gms.policy_kids@211980404@211980404057.377187554.377187554:0)
06-16 15:58:55.855 6269 6269 W System.err: at com.google.android.gms.kids.setup.fragment.ActivateProfileOwnerFragment.onActivityResult(:com.google.android.gms.policy_kids@211980404@211980404057.377187554.377187554:6)
06-16 15:58:55.855 6269 6269 W System.err: at com.google.android.chimera.FragmentProxy.onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:58:55.855 6269 6269 W System.err: at fd.ht(:com.google.android.gms@212116046@21.21.16 (150400-378233385):6)
06-16 15:58:55.855 6269 6269 W System.err: at aes.g(:com.google.android.gms@212116046@21.21.16 (150400-378233385):6)
06-16 15:58:55.855 6269 6269 W System.err: at eic.onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:58:55.855 6269 6269 W System.err: at eih.onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:58:55.855 6269 6269 W System.err: at edb.support_onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:58:55.855 6269 6269 W System.err: at edg.onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:58:55.856 6269 6269 W System.err: at edg.public_onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):0)
06-16 15:58:55.856 6269 6269 W System.err: at rie.onActivityResult(:com.google.android.gms@212116046@21.21.16 (150400-378233385):4)
06-16 15:58:55.856 6269 6269 W System.err: at android.app.Activity.dispatchActivityResult(Activity.java:8310)
06-16 15:58:55.856 6269 6269 W System.err: at android.app.ActivityThread.deliverResults(ActivityThread.java:5002)
06-16 15:58:55.856 6269 6269 W System.err: at android.app.ActivityThread.handleSendResult(ActivityThread.java:5050)
06-16 15:58:55.856 6269 6269 W System.err: at android.app.servertransaction.ActivityResultItem.execute(ActivityResultItem.java:51)
06-16 15:58:55.856 6269 6269 W System.err: at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
06-16 15:58:55.856 6269 6269 W System.err: at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
06-16 15:58:55.856 6269 6269 W System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
06-16 15:58:55.856 6269 6269 W System.err: at android.os.Handler.dispatchMessage(Handler.java:106)
06-16 15:58:55.856 6269 6269 W System.err: at android.os.Looper.loop(Looper.java:223)
06-16 15:58:55.856 6269 6269 W System.err: at android.app.ActivityThread.main(ActivityThread.java:7660)
06-16 15:58:55.856 6269 6269 W System.err: at java.lang.reflect.Method.invoke(Native Method)
06-16 15:58:55.856 6269 6269 W System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
06-16 15:58:55.856 6269 6269 W System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
06-16 15:58:55.858 6269 6618 I BaseTask: ScheduleSafetyNetJobTask finished (6 ms). [CONTEXT service_id=42 ]
06-16 15:58:55.952 1395 2506 I system_server: oneway function results will be dropped but finished with status OK and parcel size 4
Ahora voy a desactivar todos los módulos de Magisk uno por uno para ver si finalmente puedo superar este paso.
Actualización 2: el problema del bucle "activar el gestor de enlaces familiares" podría no estar relacionado con Magisk en absoluto. Ha sido reportado a Google, por ejemplo, en https://support.google.com/googleplay/thread/15850322/activation-family-link-manager-error-message-loop?hl=en y https://support.google.com/googleplay/forum/AAAA8CVOtD88XvbDIUaPF0/?hl=en&gpf=%23!topic%2Fplay%2F8XvbDIUaPF0 . Para al menos una persona, hacks como hacer manualmente la aplicación de enlace familiar un administrador del dispositivo en " Ajustes -> Seguridad -> Administrador del dispositivo", así como "Ajustes -> Administrador de aplicaciones -> Restablecer las preferencias de la aplicación" ayudó, pero "parece que el Family Link Manager espera ser capaz de abrir la aplicación de configuración en una página específica, que no parece existir en todos los dispositivos. Esto también ocurre en la Xiaomi MiPad... https://xiaomi.eu/community/threads/first-xiaomi-eu-rom-released-for-mipad-4.46337/
La configuración manual de la aplicación como administrador del dispositivo no permite superar esta comprobación", lo que puedo confirmar.
Actualización 3: He superado el bucle "A continuación, activará el Family Link" convirtiendo manualmente com.google.android.apps.kids.familylinkhelper
y com.google.android.apps.kids.familylinkmanager
en las aplicaciones del sistema. Con Magisk, /system/app
es un tmpfs escribible (es decir, no persistente); he vuelto a montar / (que el verdadero /system/app
está encendido) rw
utilizando mount -n / -o rw,remount
y luego bind lo montó bajo un directorio: mkdir /mnt/root; mount --bind / /mnt/root
. He copiado los dos APKs de mis copias de seguridad de Titanium a /mnt/root/system/app
Luego se reinició y la configuración de Family Link pudo completarse.
Ahora vamos a ver cómo restaurar todas las aplicaciones desde la copia de seguridad.
1 votos
Logcat muestra claramente que el módulo Xposed
com.aviraxp.adblocker.continued
tiene un error. Usted debe presentar un problema en su Proyecto Github .0 votos
Gracias; lo he notificado.
0 votos
En problema notificado en GitHub sigue abierto. El desarrollo parece estancado. Me pregunto si alguien ha bifurcado AdBlocker Reborn y reanudado el desarrollo.