Как получить доступ к каталогу приложения на Android?

У меня в приложении есть скрипт (my_script), который я копирую в каталог с приложением и затем вызываю через терминал, например, Process pr = Runtime.getRuntime().exec("/data/user/0/my.package.app/files/my_script --version");

Это работает на приставке с Android 7, но на Сбербокс с Андроид 9 и на смартфоне с Андроид 11 не работает. Если вызвать эту команду на смартфоне с Андроид 11, то будет ошибка "inaccessible or not found", а на Сбербоксе просто "not found"

Подскажите пожалуйста, в чем дело? Может можно как-то проще запускать скрипт?


Ответы (1 шт):

Автор решения: Дмитрий Чубаров

Переименовать файл в lib<name>.so, затем поместить во все папки в jniLibs

Получить путь к файлу можно так: getApplicationInfo().nativeLibraryDir + "/lib<name>.so"

Пример: /data/app/~~GoeS1231GPseyGfbY212fg==/you.package.app-21xvsvRGysqVb2_OXnI-DD==/lib/arm64/lib<name>.so

Добавить в manifest android:extractNativeLibs="true"

Также добавить implementation fileTree(include: ['.so'], dir: 'libs') в dependencies в build.gradle

Этот ответ помог: https://stackoverflow.com/a/62394766/10946427

→ Ссылка