Как выполнить NDK/Clang в Android 11 с использованием Java для компиляции кода C++ в среде приложения?Android

Форум для тех, кто программирует под Android
Anonymous
Как выполнить NDK/Clang в Android 11 с использованием Java для компиляции кода C++ в среде приложения?

Сообщение Anonymous »

Я работаю над приложением для Android, которому необходимо скомпилировать код C++ с использованием NDK и Clang (linux). В Android 11 я не могу запустить Clang непосредственно из внутренней памяти из-за ограничений хранения и выполнения. Несмотря на то, что двоичные файлы NDK и Clang размещены во внутренней памяти, при попытке их выполнения я получаю ошибки разрешений.
Сейчас я пытаюсь использовать ProcessBuilder для выполнения Clang следующим образом:

Код: Выделить всё

ProcessBuilder processBuilder = new ProcessBuilder("/data/data//files/clang", ".cpp", "-o", "");
processBuilder.directory(new File("/data/data//files/"));
processBuilder.start();
Однако я продолжаю сталкиваться с проблемами с разрешениями.
Каждый раз ошибка выглядит следующим образом:

Код: Выделить всё

/system/bin/sh: ./clang++: can't execute: Permission denied
Я хотел бы знать:
  • Как я могу создать собственную среду с использованием Java в своем приложении выполнять Clang и компилировать файлы C++?
  • Есть ли способ обойти ограничения на выполнение двоичных файлов во внутренней памяти на Android 11?
  • Поможет ли использование chroot или аналогичной среды внутри моего приложения решить эту проблему, и как я могу настроить ее, не требуя root-доступа?
  • Существуют ли какие-либо API-интерфейсы Android или обходные пути для безопасного вызова Clang или других собственных двоичных файлов в частном каталоге приложения (/data/data//files/)?< /p>
Есть предложения или альтернативные подходы для достижения этой цели в Android 11+?

Подробнее здесь: https://stackoverflow.com/questions/790 ... within-app

Вернуться в «Android»