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;
}
後で実行するために、実行可能なバイナリの名前を取得しようとするこのコードがあります。このコードは、Q より前の Android デバイスでは正常に動作しており、Android Q デバイスでデバッグ モードで実行すると正常に動作しますがnull
、リリース モードで実行すると戻ります。
nativeLibraryDir
これにログを追加しましたが、リリース モードではファイルが存在しないようです。
私はネイティブのことに関してはあまり得意ではなく、ここで何が起こっているのか本当に理解できません。
android:extractNativeLibs
マニフェストでいずれかの値true
に設定しようとしたか、いくつかの提案に従ってファイルでfalse
も試しandroid.bundle.enableUncompressedNativeLibs=false
ましたgradle.propreties
しかし、何もありません!助けてください。