Question

Je suis en train d'installer un système d'application à partir de mon code java, et jusqu'à présent, je n'ai pas eu de succès.

Voici ce que j'ai fait jusqu'à présent:

  1. Mon appareil est enracinée.
  2. Mon "programme d'installation" app est installé comme une application système.(copié manuellement dans /system/app)
  3. J'ai signé le programme d'installation de l'apk avec plate-forme de clé, et j'ai android:sharedUserId="android.uid.system" dans le Manifeste.
  4. J'ai essayé (et d'essayer, et puis un peu plus) pour Runtime.getRuntime.exec("su").J'ai l'intention de monter la partition système comme rw, faire un cat pour l'apk, et puis faire de la partition système ro.Voici la liste des commandes:

    mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system<br>
    cat /sdcard/application.apk > /system/app/application.apk<br>
    mount -o remount,ro -t yaffs2 /dev/block/mtdblock3 /system<br><br>The application.apk here is the app being installed from the installer app. This app is also signed with platform key, and has the sharedUserId configured.
    
  5. J'ai demandé pour la INSTALL_PACKAGES autorisation dans le manifeste.

J'ai essayé un certain nombre de variations de l'exec("") format, y compris à l'aide de 'su -c' avec chaque commande.J'ai obtenu le bris de Tuyau d'exception et l'exception de Sécurité.Parfois, je ne suis pas une exception, mais le fichier n'est pas copié.


S'il vous plaît laissez-moi savoir ce que je suis en manque ici.Quelqu'un a eu ce travail?

Merci!

Était-ce utile?

La solution

J'ai continué à creuser, et voici les résultats:

  • Android a cette case dans la ligue.c:["racine de source android"/system/extras/su/su.c]
/* Until we have something better, only root and the shell can use su.*/
myuid = getuid();
if (myuid != AID_ROOT && myuid != AID_SHELL) {
    fprintf(stderr,"su: uid %d not allowed to su\n", myuid);
    return 1;
}

ChainsDD (super-Utilisateur) et cyanogen mod contourner ce problème par la mise en œuvre de leur propre ligue.c: https://github.com/CyanogenMod/android_system_su/blob/master/su.c

Je suis de l'acceptation de cette réponse pour l'instant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top