web-dev-qa-db-ja.com

検出方法Androidデバイスは64ビットまたは32ビットプロセッサですか?

この質問に最適な解決策を見つけようとしています。その理由は、アプリケーションのlibは64ビットプロセッサでは実行できないため、この場合はオフにする必要があるためです。 Androidバージョン21(ロリポップ)以上で、Build.SUPPORTED_64_BIT_ABISを使用して、デバイスが32ビットまたは64ビットプロセッサであること、および要素が0の文字列配列を返す場合、その後...ああ!デバイスは32ビットプロセッサです。低いAndroidバージョン?Build.SUPPORTED_64_BIT_ABISはAndroid Lolipopバージョン以降のみからのサポートのみです。 。よろしく、よろしくお願いします。

8

簡単な答え:Lollipopの下のAndroidバージョンでこれを確認する必要はありません。これは、Lollipopが64ビットアーキテクチャのプラットフォームサポートを導入したためです。Lollipopより前のAndroidバージョンは64ビットプロセッサでは実行できません。

Android 5.0では、Nexus 9のNVIDIA Tegra K1で使用されている64ビットアーキテクチャのプラットフォームサポートが導入されています。最適化により、特定のコンピューティングワークロードのアドレス空間が大きくなり、パフォーマンスが向上します。 Java言語で記述されたアプリは、自動的に64ビットアプリとして実行されます。変更は必要ありません。アプリがネイティブコードを使用する場合、ARM v8、x86-64、およびMIPS-64の新しいABIをサポートするようにNDKを拡張しました。 (ソース)

6
reVerse
 try {
            boolean  isArm64 = false;

            BufferedReader localBufferedReader = new BufferedReader(new FileReader("/proc/cpuinfo"));
            if (localBufferedReader.readLine().contains("aarch64")) {
                isArm64 = true;
            }
            localBufferedReader.close();
        } catch (IOException e) {
        }

または

final boolean is64bit = Build.SUPPORTED_64_BIT_ABIS.length > 0;
6
kakopappa

最初にデバイスをシステムに接続し、Windowsの場合は次のコマンドを入力します

adb Shell cat  /proc/cpuinfo | findstr arc

linuxまたはMacベースシステムでターミナルを開き、次のコマンドを入力します

  adb Shell cat  /proc/cpuinfo | grep arc

outの最初の行contain 32は、システムタイプが32bitであることを意味します

システムタイプがcontain 64であることを意味する64bitの最初の行

3

アプリのプロセスで区別してAPIを見つけました。

Process.is64Bit()

もちろん、arm 64またはx86-64にすることができます。

ただし、arm共有ライブラリのみをパッケージ化する場合、x86デバイスはアプリをインストールできません。

したがって、方法は仕事です。

X86共有ライブラリをパッケージ化すると、上記の回答SUPPORTED_ABISが機能します。

1
Snow Albert

Androidは5.0まで64ビットをサポートするため、5.0未満の場合は32ビットです。
5.0を超える場合、Build.SUPPORTED_ABISが64をサポートするかどうかを判断します。

String bits;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
    bits = TextUtils.join(", ", Build.SUPPORTED_ABIS).contains("64") ? "64-Bit" : "32-Bit";
} else {
    bits = "32-Bit";
}

Dev Tools を使用すると、64ビットまたは32ビットのデバイスを表示できます。

1
Trinea

ADBを使用している場合

adb Shell cat /proc/cpuinfo | grep rch

ほとんどの出力:

アーキテクチャ7-> 32ビット

アーキテクチャ8-> 64ビット

  • これは上からの拡張回答です@ Naval Kishor Jha

  • 6モデルでテスト済み

  • ルートは必要ありません

1
PYK