Запуск приложений из эмулятора терминала [закрыто]

8

У меня есть рутированный планшет Nexus 7 Jelly Bean, и всякий раз, когда я пытаюсь запустить приложение из приложения эмулятора терминала после запуска chmod 777 и использования синтаксиса ("./applicationName"), он настаивает на том, что у меня нет разрешения на выполнение, хотя я предоставил моей собственной привилегии пользователя superUser ("su"). После этого я провел небольшое исследование и узнал, что если вы скопируете файл в каталог (/ data / local / temp /), вы сможете выполнить приложение. Поэтому, когда я попытался, он сказал, что файл не существует, даже если он отображается при выводе содержимого каталога с помощью ("ls")

Я понятия не имею, какие шаги предпринять, если это помогает, меня пытаются запустить (scp) в качестве теста, но я хочу иметь возможность запускать специально скомпилированную версию dns2tcp. Я знаю, что мог бы использовать лучшие приложения, такие как hello world, скомпилированные изначально на устройстве, но я не смог достать компилятор C для Android, такой как gcc.

Спасибо за любой совет

Andrei0427
источник
2
Можете ли вы добавить небольшую расшифровку того, что вы сделали? / sdcard монтируется с функцией noexec, которая, между прочим, предотвращает запуск исполняемых файлов. Вы указали полный путь со второй попытки (/ data / local / tmp / yourprogram)?
ce4
@ ce4 Я попробовал то, что вы упомянули во второй части вашего комментария. Вот расшифровка: pastebin.com/RkuMHuBj РЕДАКТИРОВАТЬ: Да, я забыл нажать Shift + Enter :) мой плохой хе-хе
Andrei0427
Вы пытались указать полный путь для выполнения - например /data/local/tmp/scp? И убедитесь, что ваш scpфайл не имеет расширения при вызове без каких-либо?
Иззи
@ Изя, да. Может кто-нибудь здесь запускать пользовательские приложения C с самого терминала на устройстве Android?
Andrei0427
Если приложение не скомпилировано для Android, оно не будет работать.
Мэтью Прочитал

Ответы:

3

попробуйте поставить shперед вашей командой, например:

sh ./scp

или

sh -c ./scp
EsOsO
источник
Я получил синтаксическую ошибку при запуске приложения, полагаю, это произошло из-за того, что оно не было скомпилировано для самого планшета, потому что я сорвал его с телефона. Увы, это должно означать, что это сработало .. верно?
Andrei0427
какую ошибку вы получили?
EsOsO
первая команда определенно не будет работать (./scp не в формате, который может интерпретироваться оболочкой), вторая - излишняя (она просто запускает ./scp в подоболочке). Оба не исправят несоответствующие разрешения на выполнение и / или другие несовместимости.
ce4
2

Приложение эмулятора должно иметь возможность запускать другое приложение из своего собственного каталога. Этот каталог называется что-то вроде /data/data/com.super.emulator. Попробуйте указать полный путь к нужному приложению в эмуляторе.

Если вы хотите получить компилятор для Android, вы можете использовать NDK . Легко получить, бесплатно использовать.

Не могли бы вы также отправить свой файл /system/binчерез ADB ? Я не знаю, получишь ли ты это разрешение, когда рутируешь свое устройство. Но если это так, это должно сделать вашу жизнь намного проще.

auselen
источник
1

Скорее всего, вы не можете запустить программу из-за того, что библиотеки на устройстве, которое вы скопировали, отсутствуют на устройстве, на которое вы скопировали ее.

Поскольку ваша конечная цель - скомпилировать программу и запустить ее на телефоне, могу ли я предложить вам использовать Android NDK ? В документации NDK содержится STANDALONE-TOOLCHAIN.HTMLописание кросс-компиляции нативной программы для запуска на вашем устройстве Android.

Майкл Хэмптон
источник
0

Если вы root (я вижу, вы есть), используйте suкоманду, а затем запустите свой оригинальный скрипт. Если проблема с разрешениями, это должно исправить. И если вы используете сценарий оболочки, вы можете просто добавить эту строку вверху. вам, возможно, придется проверить настройки SuperSu (или любое приложение суперпользователя, которое у вас есть с root) и убедиться, что ваш эмулятор терминала имеет права root.

Если вы не root (или по какой-то причине не можете работать от имени root), я советую посмотреть, как это делает XBMC, поскольку я считаю, что он может запускать приложения в пользовательском режиме.

Удачи.

Кристофер
источник