public String getBinaryFileName(Context context) {
String[] abis = Build.SUPPORTED_ABIS;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q)
// this part is working fine for pre-q android
return name;
else
//Android Q does not allow executing files outside lib folder
for (String abi : abis) {
String name = context.getApplicationInfo().nativeLibraryDir + "/binary" + "." + abi + ".so";
File executable = new File(name);
if (executable.exists())
return name;
}
return null;
}
У меня есть этот код, который пытается получить имя исполняемого двоичного файла в ordre, чтобы выполнить его позже. Код работает нормально для устройств до Q Android, а также отлично работает при выполнении в режиме отладки на устройствах Android Q, но возвращает null
при выполнении в режиме выпуска.
Я добавил кое-что к этому, и кажется, что файл не существует в nativeLibraryDir
в режиме выпуска.
Я не очень хорош, когда дело доходит до нативных вещей, и я действительно не могу понять, что здесь происходит.
Попытался установить android:extractNativeLibs
в манифесте либо на значения true
, либо на false
Я также попытался android.bundle.enableUncompressedNativeLibs=false
в файле gradle.propreties
, как некоторые предлагали
Но НИЧЕГО! Пожалуйста, помогите.