Запуск власного виконуваного файлу на оболонці Android


14

Мені потрібен певний інструмент командного рядка, і я зробив програму C у своїй оболонці Linux. Я склав програму з крос-компілятором ARM. Потім я перемістив програму у файлову систему Android і спробував її запустити.

У вихідному дозволі відмовлено.

Що мені робити, щоб запускати власні складені програми у файловій системі Android?


Пробували, chmod +x pgmа потім ./pgmтакож?
ott--

8
Можливо, ви розмістили його на своїй картці, яка встановлена ​​разом із noexecпрапором. Вам або потрібно перенести його у внутрішню пам’ять телефону або запустити його через оболонку (наприклад, sh /path/to/myexecutable).
Іззі

Відповіді:


14

Я припускаю, що ви використовували adb push для завантаження виконуваного файлу на sd-карту. На жаль, sd-карта завжди змонтована з "noexec", що означає, що ви не можете нічого тут виконати.

Тому ви повинні скопіювати виконуваний файл у локальну файлову систему, наприклад, в / data / local. Якщо пристрій не вкоренився або у вас не встановлено BusyBox, не буде команди "cp". Ви можете просто використовувати cat : cat /sdcard/myprog > /data/local/myprog.

Тоді вам слід встановити дозволений файл на виконуваний файл. Chmod на android зазвичай не підтримує синтаксис "u + x". Тому вам потрібно зателефонувати chmod 555 /data/local/myprog.

Після цього ви можете виконати свій виконуваний файл: /data/local/myprog.


Thx для вашої відповіді. Фактично проблема полягала у поколінні двійкових. Це не створювалося коректно! ;)
Нуно Сантос

На своєму пристрої у мене є зайнята скринька, але ця команда: shell @ n200C: / $ busybox cp / storage / external_storage / sda1 / ffmpeg / data / ------ show error = cp: не вдається створити '/ data / ffmpeg ': В дозволі відмовлено
Dr.jacky

tmp-mksh: /data/local/workspace/clang+llvm-5.0.0-aarch64-linux-gnu/bin/clang++: No such file or directoryхоча файл присутній
Necktwi

/ data / local вимагає кореневого доступу на моєму пристрої. Використовуйте / data / local / tmp замість цього
Chan Tzish

10

По-перше, ви повинні засунути його в каталог, наприклад, як /data/local/tmp. Потім вам потрібно встановити дозвіл на це використання chmod 755 executable. Після цього ви можете запустити його як ./executable.

Виконайте наступні дії:

adb push виконуваний файл / дані / локальний / tmp
оболонка adb
cd / data / local / tmp
chmod 755 виконуваний файл
./виконання

Якщо ви хочете запустити його з папки активів, вам потрібно скопіювати файл у папку даних /data/data/packagename/. Потім, використовуючи Fileклас, встановіть setExecutableпрапор trueдля файлу та запустіть його класом Process або сторонніми пакетами, такими як Root Tools .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.