0
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

しかし、何もありません!助けてください。

4

1 に答える 1