8 votes

Exécution d'applications à partir d'un émulateur de terminal

J'ai une tablette Nexus 7 Jelly Bean enracinée et chaque fois que j'essaie d'exécuter une application à partir d'un émulateur de terminal après l'avoir chmodé 777 et utilisé la syntaxe ("./applicationName"), il insiste sur le fait que je n'ai pas la permission d'exécuter même si je me suis accordé les privilèges de superutilisateur en utilisant ("su"). Après cela, j'ai fait quelques recherches et j'ai appris que si vous copiez le fichier dans le répertoire (/data/local/temp/), vous devriez pouvoir exécuter l'application. Lorsque j'ai essayé, le système m'a dit que le fichier n'existait pas, bien qu'il apparaisse dans la liste du contenu du répertoire avec ("ls").

Je n'ai aucune idée de la marche à suivre, si cela peut aider j'ai essayé d'exécuter (scp) comme un test mais je souhaite être en mesure d'exécuter une version compilée personnalisée de dns2tcp. Je sais que j'aurais pu utiliser de meilleures applications telles qu'un hello world compilé nativement sur l'appareil mais je n'ai pas pu mettre la main sur un compilateur C pour Android tel que gcc.

Merci pour tout conseil

2 votes

Pouvez-vous ajouter une petite transcription de ce que vous avez fait ? /sdcard est monté avec la fonction 'noexec' qui empêche les exécutables d'être exécutés, d'ailleurs. Avez-vous spécifié le chemin complet lors du deuxième essai (/data/local/tmp/yourprogram) ?

0 votes

@ce4 J'ai essayé ce que vous avez mentionné dans la deuxième partie de votre commentaire. Voici la transcription : pastebin.com/RkuMHuBj EDIT : Oui j'ai oublié d'appuyer sur shift+enter :) ma faute hehe

0 votes

Avez-vous essayé de spécifier le chemin complet pour l'exécution -- par ex. /data/local/tmp/scp ? Et je me suis assuré que votre scp Le fichier n'a pas d'extension lorsqu'il est appelé sans aucune extension ?

3voto

EsOsO Points 204

Essayez de mettre sh devant votre commande, par exemple.. :

sh ./scp

ou

sh -c ./scp

0 votes

J'ai reçu une erreur de syntaxe lors de l'exécution de l'application, je suppose que c'est arrivé parce qu'il n'a pas été compilé pour la tablette elle-même parce que je l'ai arraché de mon téléphone. Hélas, cela doit vouloir dire que ça a marché non ?

0 votes

Quelle erreur avez-vous reçue ?

0 votes

La première commande ne fonctionnera certainement pas (./scp n'est pas dans un format qui peut être interprété par le shell), la seconde est exagérée (elle exécute juste ./scp dans un sous-shell). Les deux ne corrigeront pas les permissions d'exécution inappropriées et/ou d'autres incompatibilités.

2voto

auselen Points 141

L'application émulatrice doit être capable d'exécuter une autre application à partir de son propre répertoire. Ce répertoire s'appelle par exemple /data/data/com.super.emulator . Essayez de donner le chemin complet de l'application que vous voulez dans l'émulateur.

Si vous voulez obtenir un compilateur pour Android, vous pouvez utiliser NDK . Facile à obtenir, gratuit à utiliser.

Ne pouvez-vous pas également pousser votre fichier vers /system/bin via adb ? Je ne sais pas si vous obtenez cette permission lorsque vous Root votre appareil. Mais si c'est le cas, cela devrait vous faciliter la vie.

1voto

Michael Hampton Points 2100

Il est fort probable que vous ne puissiez pas exécuter le programme parce que les bibliothèques de l'appareil d'où vous l'avez extrait sont absentes de l'appareil sur lequel vous l'avez copié.

Puisque votre objectif final est de compiler un programme et de l'exécuter en mode natif sur le téléphone, je vous suggère d'utiliser la fonction NDK Android ? La documentation du NDK comprend STANDALONE-TOOLCHAIN.HTML qui explique comment faire une compilation croisée d'un programme natif pour l'exécuter sur votre appareil Android.

0voto

Christopher Points 1

Si vous êtes enraciné (je vois que vous l'êtes), utilisez la fonction su puis exécutez votre script original. Si le problème vient des permissions, cela devrait le résoudre. Si vous utilisez un script shell, vous pouvez simplement y ajouter cette ligne en haut. Il se peut que vous deviez vérifier vos paramètres superSu (ou n'importe quelle application superutilisateur que vous avez avec Root), et vous assurer que votre émulateur de terminal a les permissions Root.

Si vous n'êtes pas enraciné (ou si vous ne pouvez pas fonctionner en tant que Root pour une raison quelconque), je suggère de regarder comment XBMC le fait, car je crois qu'il peut exécuter des applications en mode utilisateur.

Bonne chance.

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