21
votes

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.

4

4 Answers

21
votes

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.

12
votes

Following works with Gradle 2.3:

abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'arm64-v8a'
3
votes

gradle.properties file

ABI_FILTERS = ["armeabi", "x86"]

build.gradle file

ndk {
  abiFilters = []
  abiFilters.addAll(ABI_FILTERS)
}
1
votes

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