Как обнаружить android устройство 64 бит или 32 бит Процессор?
Я пытаюсь найти лучшее решение для этого вопроса. Причина в том, что lib в нашем приложении не может работать с 64-битным процессором, поэтому мне нужно отключить его в этом случае. Я обнаружил, что в Android версии 21 (lolipop)и выше мы можем легко обнаружить, что устройство является 32-битным или 64-битным процессором с помощью сборки.SUPPORTED_64_BIT_ABIS и если он возвращает массив строк с 0 элементами, то... а хах! Устройство имеет 32-разрядный процессор. Как насчет более низкой версии android? Строить.SUPPORTED_64_BIT_ABIS просто только поддержка от версии Android Lolipop и выше. Спасибо И С Наилучшими Пожеланиями, Желаю вам ребята всего наилучшего!
4 ответов
простой ответ: нет необходимости проверять это на версиях Android ниже Lollipop. Это связано с тем, что Lollipop представила поддержку платформы для 64-битных архитектур, Android-версии ниже Lollipop не будут работать с 64-битным процессором.
в Android 5.0 появилась поддержка платформы для 64-разрядных архитектур, используемых от Nexus 9 NVIDIA Tegra K1. Оптимизация обеспечивает больший адрес пространство и улучшенная производительность для определенных вычислительных рабочих нагрузок. Приложения написано на языке Java запускаются как 64-разрядные приложения автоматически-нет необходимы изменения. Если ваше приложение использует собственный код, мы расширили NDK для поддержки новых ABIs для ARM v8, x86-64 и MIPS-64. (источник)
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
первая строка из if contain 64
этот средний тип системы 64bit
32Bit, если ниже 5.0, потому что android поддерживает 64Bit до 5.0.
Судить ли строить.SUPPORTED_ABIS поддержка 64, если выше 5.0.
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";
}
вы можете просмотреть устройство 64bit или 32bit с помощью Dev Tools.