Gradle使用不同的abiFilters进行调试和发布

时间:2017-01-13 08:53:33

标签: android gradle android-ndk ndk-build

这是我的build.gradle文件:

android {
    //...

    defaultConfig {
        //...

        externalNativeBuild {

                ndkBuild {
                    targets "MyGame"
                    arguments "NDK_MODULE_PATH=$cocospath:$cocospath/cocos:$cocospath/external:$cocospath/cocos/prebuilt-mk:$cocospath/extensions"
                    arguments "-j" + Runtime.runtime.availableProcessors()

                    buildTypes {
                        debug {
                            abiFilters "armeabi", "armeabi-v7a", "arm64-v8a"
                        }

                        release {
                            abiFilters "armeabi"
                        }
                    }

                }
        }
    }
    //.........

我尝试在调试模式下构建应用时使用三个abi过滤器(armeabi, armeabi-v7a and arm64-v8a),并在构建版本apk时仅使用一个(armeabi)。但它不起作用。调试版和发行版都使用了所有三个abiFilter。

我的gradle文件出了什么问题?

编辑:

事实证明,当我拥有所有三个abi过滤器并成功构建应用程序时,我想只留下armeabi并且......仍然添加了所有三个。我不得不手动删除app / build目录的内容。

1 个答案:

答案 0 :(得分:6)

您将 abiFIlters 放入错误的区块。这就是它的工作方式:

android {
  //...

  defaultConfig {
    //...

    externalNativeBuild {
      ndkBuild {
         targets "MyGame"
         arguments …
      }
    }
  }

  buildTypes {
    release {
       ndk {
            abiFilters "armeabi-v7a"
        }

        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    debug {
        ndk {
            abiFilters "x86", "armeabi-v7a"
        }
    }
  }
}