Как получить доступ к каталогу приложения на 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