web-dev-qa-db-ja.com

androidでABI(アプリケーションバイナリインターフェイス)を取得する方法

質問が重複している可能性がありますが、見つかりません。コードを使用して、電話のABIを取得するにはどうすればよいのでしょうか。私はgradleファイルで指示されるかもしれない異なるインターフェースがあることを知っています。しかし問題は、特定のデバイスのABIを正確に取得して、SuperSUを使用して手動でsystem/lib /フォルダーにコピーできるようにする方法です。ありがとうございました。

Android.productFlavors {
        // for detailed abiFilter descriptions, refer to "Supported ABIs" @
        // https://developer.Android.com/ndk/guides/abis.html#sa
        create("arm") {
            ndk.abiFilters.add("armeabi")
        }
        create("arm7") {
            ndk.abiFilters.add("armeabi-v7a")
        }
        create("arm8") {
            ndk.abiFilters.add("arm64-v8a")
        }
        create("x86") {
            ndk.abiFilters.add("x86")
        }
        create("x86-64") {
            ndk.abiFilters.add("x86_64")
        }
        create("mips") {
            ndk.abiFilters.add("mips")
        }
        create("mips-64") {
            ndk.abiFilters.add("mips64")
        }
        // To include all cpu architectures, leaves abiFilters empty
        create("all")
    }
19
Cuong Phan

これを行うには2つの方法があります。 1つは廃止予定ですが、機能しますが、もう1つは電話を実行する必要がありますAndroid 5.0以降。

非推奨の方法

現在のすべての電話をサポートしたい場合は、次を使用できます。

import Android.os.Build;
String ABI = Build.CPU_ABI;

新しい方法

新しい方法では、サポートされているすべてのABIのリストが実際に提供されます。最初のインデックスは、使用する最も好ましいABIです( APIリファレンス ):

import Android.os.Build;
String ABI = Build.SUPPORTED_ABIS[0];

両方の方法は、Android 5.1.1で動作するようにテストされています。これらは次のいずれかを返します。

  • アルメアビ
  • armeabi-v7a
  • armeabi-v7a-hard
  • arm64-v8a
  • x86
  • x86_64
  • ミップ
  • mips64

今後のABIはここにリストされます: https://developer.Android.com/ndk/guides/abis.html#sa

25

ここを見てください:

enter image description here

いない?

ADBシェル:

adb Shell getprop ro.product.cpu.abi

Though Java code:

import Android.os.Build;
Log.d("myabi", Build.SUPPORTED_ABIS[0]);
12
ishandutta2007

[〜#〜] tldr [〜#〜]:すべてのAndroidバージョンで機能するbandoncontortionのソリューションの結合バージョンです:

public String getAbi() {
    if (Android.os.Build.VERSION.SDK_INT >= Android.os.Build.VERSION_CODES.Lollipop) {
        // on newer Android versions, we'll return only the most important Abi version
        return Build.SUPPORTED_ABIS[0];
    }
    else {
        // on pre-Lollip versions, we got only one Abi
        return Build.CPU_ABI;
    }
}
4
Johnson_145