web-dev-qa-db-fra.com

Comment détecter un appareil Android est un processeur 64 bits ou 32 bits?

J'essaie de trouver la meilleure solution à cette question. La raison en est que la bibliothèque dans notre application ne peut pas fonctionner avec le processeur 64 bits, je dois donc la désactiver dans ce cas. J'ai trouvé que dans la version Android 21 (lolipop) et les versions ultérieures, nous pouvons facilement détecter que le périphérique est un processeur 32 bits ou 64 bits en utilisant Build.SUPPORTED_64_BIT_ABIS et si elle renvoie le tableau String avec 0 éléments, puis ... ah ah! Le périphérique est un processeur 32 bits. Que diriez-vous de la version Android inférieure? Build.SUPPORTED_64_BIT_ABIS ne prend en charge que la version Android Lolipop et les versions ultérieures. Merci et meilleures salutations, je vous souhaite tout le meilleur!

6
Tùng Phan Thanh

Réponse simple: Inutile de vérifier cela sur les versions Android ci-dessous de Lollipop. Cela est dû au fait que Lollipop a introduit la prise en charge de la plate-forme pour les architectures 64 bits. Les versions Android inférieures à Lollipop ne fonctionneront pas avec un processeur 64 bits.

Android 5.0 introduit le support de plate-forme pour les architectures 64 bits - utilisé Par le NVIDIA Tegra K1 du Nexus 9. Les optimisations fournissent un espace d'adresse Plus important et des performances améliorées pour certaines charges de travail de calcul. Les applications Écrites en langage Java s'exécutent automatiquement en tant qu'applications 64 bits. Aucune modification N'est nécessaire. Si votre application utilise du code natif, nous avons étendu Le NDK pour prendre en charge de nouvelles ABI pour ARM v8, x86-64 et MIPS-64. ( La source)

5
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) {
        }

Ou

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

Firdt connecter le périphérique au système, Sous Windows, tapez la commande Invite cette commande 

adb Shell cat  /proc/cpuinfo | findstr arc

sur un terminal ouvert sous Linux ou mac, tapez cette commande

  adb Shell cat  /proc/cpuinfo | grep arc

si la première ligne de contain 32 signifie que le type de système est 32bit

la première ligne de sortie si contain 64 signifie que le type de système est 64bit

1
Naval Kishor Jha

32 bits si inférieur à 5.0, car Android prend en charge 64 bits jusqu'à la version 5.0.
Déterminez si Build.SUPPORTED_ABIS prend en charge 64 si la version est supérieure à 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";
}

Vous pouvez afficher un périphérique 64 bits ou 32 bits en utilisant Outils de développement .

0
Trinea