この質問に最適な解決策を見つけようとしています。その理由は、アプリケーションのlibは64ビットプロセッサでは実行できないため、この場合はオフにする必要があるためです。 Androidバージョン21(ロリポップ)以上で、Build.SUPPORTED_64_BIT_ABISを使用して、デバイスが32ビットまたは64ビットプロセッサであること、および要素が0の文字列配列を返す場合、その後...ああ!デバイスは32ビットプロセッサです。低いAndroidバージョン?Build.SUPPORTED_64_BIT_ABISはAndroid Lolipopバージョン以降のみからのサポートのみです。 。よろしく、よろしくお願いします。
簡単な答え: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を拡張しました。 (ソース)
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;
最初にデバイスをシステムに接続し、Windowsの場合は次のコマンドを入力します
adb Shell cat /proc/cpuinfo | findstr arc
linuxまたはMacベースシステムでターミナルを開き、次のコマンドを入力します
adb Shell cat /proc/cpuinfo | grep arc
outの最初の行contain 32
は、システムタイプが32bit
であることを意味します
システムタイプがcontain 64
であることを意味する64bit
の最初の行
アプリのプロセスで区別してAPIを見つけました。
Process.is64Bit()
もちろん、arm 64またはx86-64にすることができます。
ただし、arm共有ライブラリのみをパッケージ化する場合、x86デバイスはアプリをインストールできません。
したがって、方法は仕事です。
X86共有ライブラリをパッケージ化すると、上記の回答SUPPORTED_ABISが機能します。
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ビットのデバイスを表示できます。
ADBを使用している場合
adb Shell cat /proc/cpuinfo | grep rch
ほとんどの出力:
アーキテクチャ7-> 32ビット
アーキテクチャ8-> 64ビット
これは上からの拡張回答です@ Naval Kishor Jha
6モデルでテスト済み
ルートは必要ありません