How to get ABI (Application Binary Interface) in android

Cuong Phan picture Cuong Phan · Feb 9, 2016 · Viewed 19.4k times · Source

It may be a duplicated question, but i'm unable to find it. I wonder how we can get what's the ABI of a phone, using code. I know that there's different Interface that may dictated in gradle file. But the problem is how i can get exactly the ABI of a certain device, so that i can manually copy it to system/lib/ folder using SuperSU. Thank you.

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")
    }

Answer

brandonhuddle picture brandonhuddle · Mar 18, 2016

There are two ways that you can do this. One is deprecated but still works while the other requires the phone to be running Android 5.0 or greater.

The Deprecated Way

If you want to support all current phones you can use:

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

The Newer Way

The newer way actually will provide a list of all supported ABIs, the first index being the most preferred ABI to use (API Reference):

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

Both ways have been tested to work on Android 5.1.1, they will return one of the following:

  • armeabi
  • armeabi-v7a
  • armeabi-v7a-hard
  • arm64-v8a
  • x86
  • x86_64
  • mips
  • mips64

Future ABIs should be listed here: https://developer.android.com/ndk/guides/abis.html#sa