1 votes

Récupération TWRP : "pm install /chemin/vers.apk" ne fonctionne pas

Je suis en train de créer un zip flashable pour TWRP afin de débarrasser mon téléphone des applications préinstallées. Je veux également installer des applications dans le même script.

Cependant, lorsque je fais "pm install /chemin/vers.apk" (que ce soit dans un script ou via le terminal), je reçois l'erreur suivante :

Erreur : java.lang.NullPointerException: Tentative d'invoquer la méthode de l'interface 'android.os.IBinder android.os.IServericeManager.getService(java.lang.String)' sur une référence d'objet nulle

Je reçois la même erreur lorsque j'essaie d'autres commandes pm, mais lorsque je saisis seulement "pm", je reçois le message d'aide.

N'est-il pas possible d'installer des .apks de cette manière ou est-ce que quelque chose d'autre ne va pas?

Merci!

1voto

Zulgrib Points 381

Utilisez un script pour placer le fichier APK au bon endroit dans /data/app.

mkdir, mv, chown et chmod doivent être utilisés.

Alors que le binaire pm est là, il ne peut pas faire son travail depuis le mode de récupération qui est un système complètement différent. Considérez cela comme quelqu'un qui tente d'installer un jeu sur son système Windows tout en étant démarré sur Ubuntu.

0voto

Andy Yan Points 9360

Alors que @Zulgrib a déjà expliqué pourquoi pm ne fonctionnerait pas, je vais fournir un peu plus d'informations sur l'intégration des applications dans le zip flashable.

Fondamentalement, vous placez les APK des applications à l'emplacement correct dans le zip, et avez le updater-script l'extraire à sa place. Le script le fait généralement en exécutant :

package_extract_dir("data", "/data");

Ainsi, pour un APK avec le nom de package com.abc, il devrait normalement être placé dans /data/app/com.abc-1/base.apk pour s'installer correctement. Contrairement à ce qu'a dit @Zulgrib, aucune commande shell n'est nécessaire - le script d'extraction fait tout pour vous.

Notez que :

  • Si vous avez déjà installé cette application et ensuite mis à jour, il peut y avoir un dossier comme com.abc-2 que votre zip flashable ne peut pas écraser, et l'installation échouera. Ma suggestion est d'utiliser de tels zips flashables uniquement pour mettre à jour les applications qu'ils contiennent, de sorte que les noms de dossiers auront toujours un -1 derrière et seront mis à jour correctement.
  • Certaines applications nécessitent plus que l'APK dans le répertoire pour pouvoir s'exécuter. Dans mon cas, j'ai remarqué que l'émulateur de terminal de Jackpal nécessite que ses bibliothèques soient extraites, mais je n'ai jamais compris comment le faire correctement, donc à la fin j'ai fini par l'installer manuellement.

0 votes

Extraire des bibliothèques est aussi simple que d'exécuter une commande unzip. Ensuite, il suffit de faire chmod & chown correctement et ça fonctionnera.

0 votes

@iBug Le problème est que j'ai à la fois des appareils ARM et ARM64 qui ont besoin de différents ensembles de bibliothèques, mais d'après la sortie du journal de l'application, il semble rechercher les bibliothèques dans le même dossier indépendamment de l'architecture. Je ne peux pas prendre la peine de déterminer à l'avance l'architecture simplement pour installer une si petite application. Si vous avez des détails fiables sur la manière de le faire, modifiez-le simplement, je suis ouvert à l'expérimentation.

0 votes

Extraire lib/armeabi et lib/armeabi-v8a pour les appareils ARM et ARM64, respectivement.

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