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

8

J'ai une tablette Nexus 7 Jelly Bean enracinée et chaque fois que j'essaie d'exécuter une application à partir d'une application d'émulation de terminal après l'avoir chmod 777 et en utilisant la syntaxe ("./applicationName"), je tiens à dire que je n'ai pas la permission d'exécuter même si je accordé mes privilèges d'auto-utilisateur 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. Donc, quand j'ai essayé, il a dit que le fichier n'existe pas même s'il apparaît lors de la liste du contenu du répertoire en utilisant ("ls")

Je n'ai aucune idée des étapes à suivre, si cela aide, j'essaie d'exécuter (scp) en tant que test, mais je souhaite pouvoir exécuter une version compilée personnalisée de dns2tcp. Je sais que j'aurais pu utiliser de meilleures applications, comme un monde bonjour 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

Andrei0427
la source
2
pouvez-vous ajouter une petite transcription de ce que vous avez fait? / sdcard est monté avec la fonctionnalité 'noexec' qui empêche les exécutables d'être exécutés, soit dit en passant. Avez-vous spécifié le chemin complet lors du deuxième essai (/ data / local / tmp / yourprogram)?
ce4
@ 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 Maj + Entrée :) mon mauvais hehe
Andrei0427
Avez-vous essayé de spécifier le chemin complet d'exécution - par exemple /data/local/tmp/scp? Et vous êtes-vous assuré que votre scpfichier n'a pas d'extension de fichier lorsqu'il est appelé sans?
Izzy
@Izzy, oui. Quelqu'un peut-il exécuter des applications C personnalisées à partir du terminal lui-même sur un appareil Android?
Andrei0427
Si l'application n'est pas compilée pour Android, elle ne fonctionnera pas.
Matthew Read

Réponses:

3

essayez de mettre shdevant votre commande, par exemple:

sh ./scp

ou

sh -c ./scp
EsOsO
la source
J'ai reçu une erreur de syntaxe lors de l'exécution de l'application, je suppose que cela s'est produit car il n'a pas été compilé pour la tablette elle-même car je l'ai arrachée de mon téléphone. Hélas, cela doit signifier que cela a fonctionné .. non?
Andrei0427
quelle erreur avez-vous reçue?
EsOsO
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 excessive (elle exécute simplement ./scp dans un sous-shell). Les deux ne corrigeront pas les autorisations d'exécution inappropriées et / ou d'autres incompatibilités.
ce4
2

L'application émulateur doit pouvoir exécuter une autre application à partir de son propre répertoire. Ce répertoire s'appelle quelque chose comme /data/data/com.super.emulator. Essayez de donner le chemin d'accès complet à l'application que vous souhaitez dans l'émulateur.

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

Vous ne pouvez pas également pousser votre fichier /system/binvia adb ? Je ne sais pas si vous obtenez cette autorisation lorsque vous rootez votre appareil. Mais si c'est le cas, cela devrait vous faciliter la vie.

auselen
la source
1

Il est très probable que vous ne puissiez pas exécuter le programme en raison des bibliothèques présentes sur le périphérique sur lequel vous l'avez extrait, manquant sur le périphérique sur lequel vous l'avez copié.

Étant donné que votre objectif final est de compiler un programme et de l'exécuter en mode natif sur le téléphone, puis-je vous suggérer d'utiliser le NDK Android ? La documentation NDK comprend des STANDALONE-TOOLCHAIN.HTMLexplications sur la compilation croisée d'un programme natif à exécuter sur votre appareil Android.

Michael Hampton
la source
0

Si vous êtes rooté (je vois que vous l'êtes), utilisez la sucommande, puis exécutez votre script d'origine. Si le problème concerne les autorisations, cela devrait le résoudre. Et si vous utilisez un script shell, vous pouvez simplement y ajouter cette ligne en haut. vous devrez peut-être vérifier vos paramètres superSu (ou l'application de super-utilisateur que vous avez avec root) et vous assurer que votre émulateur de terminal dispose des autorisations root.

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

Bonne chance.

Christophe
la source