Digamos que tengo "FunnyApp" instalada desde Playstore, ahora aparece en F-Droid, y quiero reemplazar la versión de Playstore por la de F-Droid (el mismo problema viceversa). El problema es que no puedo simplemente actualizar la aplicación desde la nueva fuente porque la firma no coincide (F-Droid firma con su propia clave). FunnyApp no ofrece ninguna funcionalidad de "exportación", pero no quiero perder sus datos.
¿Cuáles serían los posibles enfoques para realizar un cambio adecuado?
Trampas:
adb backup
no ayuda, ya que la restauración fallará por la misma razónTengo algunas ideas vagas sobre soluciones basadas en la raíz que aún no he probado (por ejemplo, Titanium Backup podría restaurar datos a pesar de la firma modificada, y también hay algún módulo XPosed (¿InstallerOpts?) que ofrece "suprimir la advertencia de firma "). Pero antes de "estropearlo todo", pensé en preguntar aquí si alguien ya podría haber intentado alguna solución con éxito.
Se prefieren las soluciones no root (para que más personas puedan beneficiarse), las soluciones basadas en root son aceptables, XPosed como requisito también está bien.
Algunas razones por las que uno podría querer "cambiar de fuente" (también conocido como "actualización cruzada"): Deshacerse de las dependencias propietarias, la aplicación ya no se actualiza en la fuente original...
Lo siento, pero AFAIK no es posible :( ¡Nunca he visto ninguna aplicación/herramienta/utilidad que modifique con éxito los datos de otras aplicaciones, ni siquiera leer!
Alternativamente, podría hacer eso en una recuperación personalizada, pero ¿quién usa una recuperación personalizada sin rootear? Entonces Lee abajo.
No te lo tomes demasiado a pecho. Simplemente retire sus datos originales, desinstale la aplicación original e instale la nueva, luego vuelva a mover los datos y chown
. Los comandos de shell de muestra se encuentran a continuación.
# mv /data/data/com.example.foo /data/media
* UNINSTALL_ORIGINAL_APP
* INSTALL_NEW_APP
# ls -ld /data/data/com.example.foo
* take note of the user (e.g. u0_a123)
# mv /data/media/com.example.foo /data/data
# chown -R 10123.10123 /data/data/com.example.foo
Explicaciones para cada paso:
/data/media
lo que se elige.Una pequeña nota: el chown
comando incorporado no acepta la opción -R
(recursiva) de forma predeterminada en Android L o inferior. Necesitas BusyBox en ese caso. En Android M y versiones posteriores, funciona bien.
Con TiBu, puede hacer una copia de seguridad de los datos existentes fácilmente, luego eliminar de forma segura la aplicación anterior e instalar la nueva. Luego, siempre que ambos paquetes tengan el mismo nombre de paquete, puede restaurar los datos de la aplicación con TiBu, ¡intactos!
Sin embargo, esta solución es esencialmente una copia de seguridad de datos, por lo que no se mantendrá aquí. Si desea obtener más información sobre cómo realizar copias de seguridad y restaurar datos, consulte nuestra etiqueta wiki para copias de seguridad , en la sección Copias de seguridad basadas en aplicaciones .
XInstaller y su sucesor, InstallerOpt , pueden enlazar Package Installer para permitir la instalación de paquetes con firmas que no coinciden (omitiendo la verificación de firmas). Luego, todos sus datos se conservan y puede cambiar fácilmente a diferentes versiones. Este es el método que estoy usando actualmente y ha estado funcionando bien. Lamentablemente, Xposed no está oficialmente disponible para Android N (hasta ahora), por lo que esta solución es solo para Android M y versiones anteriores.
Teóricamente, no deberían causar nada malo porque todo lo que hacen es enganchar la función de verificación de firma y cambiar su valor de retorno a un valor real, sin pasar por la verificación. Si el paquete de reemplazo tiene otros defectos además de la firma que no coincide, la instalación seguirá fallando, por lo que no se pueden instalar paquetes defectuosos incluso si omite la verificación de la firma.
Aviso importante
No se recomienda dejar esa opción (omitir verificación de firma) habilitada todo el tiempo. Dejarlo habilitado creará una gran falla de seguridad ya que también se pueden instalar aplicaciones pirateadas (casi siempre usan una firma diferente). Personalmente, lo habilito solo cuando es necesario y lo deshabilito tan pronto como terminé de reemplazar mi paquete.
izzy
iBug