3 votes

l'application installée dans /system/priv-app ne fonctionne pas

Conditions préalables :

  • une tablette chinoise rootée, basée sur Rockchip et fonctionnant sous Android 6, patchée pour désactiver SystemUI

  • application développée en propre qui déclare la catégorie LAUNCHER et qui est destinée à prendre le contrôle total de l'appareil

Qu'est-ce que j'essaie de faire ?

installer l'application en tant qu'application système pour éviter de gérer les autorisations du SDK 23+.

Qu'ai-je fait jusqu'à présent ?

  • installation régulière de l'application via Android Studio
  • déplacé l'application dans /system/priv-app :

(Racine)

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

Quel est le problème ?

Il semble que le système ne sache pas que l'application existe : elle ne s'exécute pas au démarrage (ce qu'elle fait parfaitement lorsqu'elle est installée comme une application normale) et je ne parviens pas à la lancer manuellement :

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'est-ce que je manque ?

4voto

Thally Ace Points 729

Déplacer une application d'un espace à l'autre sur Marshmallow et plus supérieur aboutira presque toujours à cela. Le meilleur moyen est d'utiliser la fonction cp puis supprimer la source. Une application au niveau des données a ses propres autorisations qui persistent dans le système et même si vous les changez, puisqu'il n'y a pas de nouvelle instance de création de fichier, le système ne prend pas soin de déclencher la préparation de l'application. La meilleure façon de procéder est de

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

Répétez cette opération pour les librairies du dossier app vers le dossier app. Le dossier devrait ressembler à ceci :

APPNAME contenant les dossiers .apk et LIB Dossier LIB contenant le type de librairie comme le dossier ARM Dossier ARM contenant toutes les bibliothèques, par exemple libexample.so

définir l'autorisation de tous les dossiers à chmod 0755 et tous les fichiers à l'autorisation chmod 0644

Ils fonctionneront. Pour vous faciliter la vie, n'utilisez plus les commandes du shell. Cherchez un gestionnaire de fichiers pour simplifier votre travail, mais rappelez-vous toujours que si vous utilisez TWRP ou Terminal sur un périphérique de démarrage, vous devez toujours copier et supprimer les sources. Pour de nombreuses ROMs, le déplacement conduira en fait à cela.

REMARQUE : Le avoine dans ce dossier à l'adresse /data/app/package.name/ n'est d'aucune utilité. Dalvik créera son nouveau classes.dex à /data/dalvik-cache lors de l'installation en tant qu'application système

3voto

beeshyams Points 37355

Modifier les autorisations pour -rw-r--r-- et propriétaire en tant que root suivi d'un redémarrage devrait corriger

Mais comme l'a souligné l'OP, les questions relatives à la signature doivent être réglées.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X