web-dev-qa-db-fra.com

Comment obtenir ABI dans Android

Il s’agit peut-être d’une question dupliquée, mais je n’arrive pas à la trouver. Je me demande comment nous pouvons obtenir l’ABI d’un téléphone à l’aide d’un code. Je sais qu'il y a différentes interfaces qui peuvent être dictées dans un fichier Gradle. Mais le problème est de savoir comment obtenir exactement le ABI d'un périphérique donné, de sorte que je puisse le copier manuellement dans le dossier system/lib/en utilisant SuperSU. Merci.

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")
    }
11
Cuong Phan

Vous pouvez le faire de deux manières. L'un est obsolète mais fonctionne toujours, tandis que l'autre nécessite que le téléphone utilise Android 5.0 ou une version ultérieure.

La manière obsolète

Si vous souhaitez prendre en charge tous les téléphones actuels, vous pouvez utiliser:

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

The Newer Way

La nouvelle méthode fournira en fait une liste de toutes les ABI prises en charge, le premier index étant l’ABI la plus préférée à utiliser ( Référence API ):

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

Les deux méthodes ont été testées pour fonctionner sur Android 5.1.1. Elles renverront l’un des éléments suivants:

  • arméa
  • armeabi-v7a
  • armeabi-v7a-hard
  • arm64-v8a
  • x86
  • x86_64
  • mips
  • mips64

Les futures ABI doivent être répertoriées ici: https://developer.Android.com/ndk/guides/abis.html#sa

18
bandoncontortion

Regardez ici:

enter image description here

pas ici?

Via ADB Shell:

adb Shell getprop ro.product.cpu.abi

Bien que le code Java:

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

TLDR: Voici une version combinée de la solution bandoncontortion, qui fonctionne sur toutes les versions d'Android:

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;
    }
}
0
Johnson_145