3 votos

La aplicación instalada en /system/priv-app no se ejecutará

Requisitos previos :

  • un dispositivo de tablet de China basado en Rockchip con Android 6, parcheado para deshabilitar SystemUI

  • de desarrollo propio que declara la categoría de Lanzador y está destinado a tomar el control total del dispositivo

¿Qué estoy tratando de lograr?

instalar la aplicación como una aplicación de sistema para evitar manejar los permisos del SDK 23+.

¿Qué he hecho hasta ahora?

  • instalaba la aplicación regularmente a través de Android Studio
  • movió la aplicación a /system/priv-app:

(root)

ls /data/app/my.package.name-1
 base.apk
 lib
 oat
mount -o rw,remount /system
mv /data/app/my.package.name-1 /system/priv-app/AppName
ls -la /system/priv-app/AppName
 -rw-r--r-- system   system    2464934 2017-12-08 11:32 base.apk
 drwxr-xr-x system   system            2017-12-08 11:32 lib
 drwxrwx--x system   install           2017-12-08 11:32 oat
reboot

¿Cuál es el problema?

Parece que el sistema no es consciente de que la aplicación existe: no se ejecuta en el arranque (lo que hace perfectamente cuando se instala como una aplicación normal) y no puedo lanzarla manualmente:

root@rk312x:/ # am start -n my.package.name/.ui.MainActivity
Starting: Intent { cmp=my.package.name/.ui.MainActivity }
Error type 3
Error: Activity class {my.package.name/my.package.name.ui.MainActivity} does not exist.

¿Qué me estoy perdiendo?

0 votos

Gracias, esto solucionó el problema de iniciar la aplicación. Todavía no se le conceden los permisos automáticamente, supongo que debido a que no es la firma del sistema. Sin embargo, la pregunta se refería a la ejecución de la aplicación, así que por favor publique sus comentarios como respuesta

1 votos

¿Intentas que los permisos de ejecución se concedan automáticamente? Estar en ese directorio no lo concederá automáticamente. Tendrías que estar en la lista blanca del gestor de paquetes firmado por Google. Podrías apuntar a la API 22o inferior y obtendrías los permisos que quisieras con solo instalar el APK.

4voto

Thally Ace Puntos 193

Mover una aplicación de un espacio a otro en Marshmallow y más superior casi siempre resultará en eso. La mejor manera de usar el cp Después de eso, borra la fuente. Una aplicación en datos tiene sus propios permisos establecidos que persisten en el sistema y aunque los cambie, como no hay una nueva instancia de creación de archivos, el sistema no se ocupa de activar la preparación de la aplicación. La mejor manera es

cp /data/app/[package.name]-1/app-name.apk /system/app/[app-folder-name]/app-name.apk

Repite esto para las liberaciones en la carpeta de aplicaciones a la carpeta de aplicaciones. La carpeta debería tener el mismo aspecto:

APELLIDO que contiene la carpeta .apk y LIB La carpeta LIB que contiene el tipo de lib como la carpeta ARM Carpeta ARM con todas las bibliotecas, por ejemplo libexample.so

establecer el permiso de todas las carpetas para chmod 0755 y todos los archivos con permiso chmod 0644

Funcionarán. Para hacer la vida más fácil, deja de usar los comandos de shell. Busca un gestor de archivos para simplificar tu trabajo, pero recuerda siempre que estás usando TWRP o Terminal en un dispositivo de arranque, siempre copia y borra el código fuente. Moverse por muchas ROMs en realidad llevará a que

NOTA: El avena en esa carpeta en /datos/app/paquete.nombre/ no sirve para nada. Dalvik creará su nuevo clases.dex en /data/dalvik-cache en la instalación como aplicación del sistema

3voto

beeshyams Puntos 82

Cambiar los permisos para -rw-r--r-- y propietario como root seguido de un reinicio debería arreglar

Pero como señaló OP, las cuestiones de firma deben ser resueltas

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X