2015-06-30 3 views
1

Я знаю, что это задано раньше, чем, возможно, много раз; но я не смог найти правильный ответ. В любом случае,Android - программа командной строки, скомпилированная с CCTools

На моем телефоне Android я установил CCTools. Я могу скомпилировать программы C/C++ и запускать их с помощью пунктов меню CCTools. Но когда я пытаюсь запустить программу из терминала, я получаю «разрешение отклонено». Я использую стиль Linux ./a.out 'для запуска.

ответ

0

tl.dr .: Android не является хорошей платформой для разработки приложений командной строки.

Из соображений безопасности Android не поддерживает выполнение файлов из пользовательского хранилища. Это делается с помощью флага монтирования noexec. Это невозможно изменить, поскольку базовая файловая система не поддерживает исполняемые файлы. (По крайней мере, на моем Nexus 5 с леденцом. Вы можете попробовать (если у вас есть корень) с mount -o remount,exec /storage/[your sdcard path]. Путь может быть найден в выводе mount)

Как взломать, если у вас есть корень, вы можете скопировать файл в/mnt/obb /. Это временная файловая система. Там вы должны сделать chmod 0755 /mnt/obb/[filename], чтобы пометить файл как исполняемый файл. Затем вы можете выполнить его.

+0

спасибо. Но как CCTools запускает приложение командной строки? – Strongman

+0

CCTools копирует файл в директорию кэша, которая позволяет исполняемые файлы. Там файл помечен как исполняемый файл, а затем выполнен. Это то же самое, что и мой хак, но с другим каталогом. Вы можете увидеть реализацию в ['LauncherConsoleActivity.java'] (https://code.google.com/p/cctools/source/browse/trunk/cctools/src/com/pdaxrom/cctools/LauncherConsoleActivity.java) в OnCreate –

+0

Я вижу. Знаете ли вы способ C++? – Strongman

Смежные вопросы