27

I want to add ndk.abiFilters property in gradle.properties file. Now I've this property inside build.gradle. Here is part of my build.gradle

buildTypes {
  debug { 
     ndk {
       abiFilters "x86", "armeabi-v7a", "armeabi"
       //abiFilters ABI_FILTERS
     }
   }
}

Here's part of my gradle.properties file

ABI_FILTERS = "x86", "armeabi-v7a", "armeabi"

Problem is that String from gradle.properties is not correctly converted for use with abiFilters. I tried many variants but with no luck. What is the correct way how to do this correctly? Thank you for help.

Warlock
  • 2,481
  • 4
  • 31
  • 45

5 Answers5

27

In gradle.properties you can have for example:

ABI_FILTERS=armeabi-v7a;x86 //delimiter can be anything (change below)

Then in build.gradle there is (for example in debug buildType section):

ndk {
  abiFilters = []
  abiFilters.addAll(ABI_FILTERS.split(';').collect{it as String})
}

Now each developer can choose independetly abi for his current testing device (gradle.properties is in .gitignore).

Thanks Igor Ganapolsky for starting hint.

Warlock
  • 2,481
  • 4
  • 31
  • 45
  • Hello @Warlock after adding ndk still my application not showing armeabi-v7a lib.so files while analyzing application can you help me thanks in advance. – Madhav Aug 13 '19 at 11:23
14

Following works with Gradle 2.3:

abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a'
Wing Poon
  • 1,051
  • 8
  • 10
4

gradle.properties file

ABI_FILTERS = ["armeabi", "x86"]

build.gradle file

ndk {
  abiFilters = []
  abiFilters.addAll(ABI_FILTERS)
}
chan
  • 71
  • 1
  • 5
2

Use this:

flavorDimensions "abi"
    productFlavors {
        arm7 {
            dimension "abi"
            ndk.abiFilters 'armeabi-v7a'
        }
        x86 {
            dimension "abi"
            ndk.abiFilters 'x86'
        }
    }

You can see an example of this setting in the Google samples for NDK: https://github.com/android/ndk-samples/blob/8132651aba8db36b14e0d0461c7cb46d3778f99c/other-builds/ndkbuild/hello-neon/app/build.gradle

Garg
  • 2,731
  • 2
  • 36
  • 47
IgorGanapolsky
  • 26,189
  • 23
  • 116
  • 147
2

This can also be done for flutter.

Add:

android{
    buildTypes{
          debug {
              ndk {
                  abiFilters  'arm64-v8a'
              }
          }
    }
}

to android\app\build.gradle. That works to remove the x86 libflutter.so libraries from the debug builds and shortens installation time. Works for gradle 7.2

Harmen
  • 841
  • 8
  • 17