支持64位在build.gradle中添加ndk.abiFilters时出错

时间:2019-02-01 09:15:07

标签: android android-ndk android-gradle android-build

大多数的Android开发者必须已得到谷歌的消息更新应用程序由2019年八月的详细说明,这里给出支持64位架构: Ensure that your app supports 64-bit devices

在我的应用程序,我发现了32位库被使用并且因此,我必须更新该应用支持64位体系结构。如以上指南中所建议,我在build.gradle文件中添加了以下内容:

ndk.abiFilters = 'armeabi-v7a' 'arm64-v8a' 'x86' 'x86_64'

但是,此后,在构建应用程序时出现以下错误:

  

错误:(35,0)找不到参数的方法armeabi-v7a()   DefaultConfig_Decorated上的[arm64-v8a] {名称=主要,尺寸=空,   的minSdkVersion = DefaultApiVersion {mApiLevel = 16,mCodename = '空'},   targetSdkVersion = DefaultApiVersion {mApiLevel = 28,mCodename = '空'},   renderscriptTargetApi = null,renderscriptSupportModeEnabled = null,   renderscriptSupportModeBlasEnabled = null,   renderscriptNdkModeEnabled = null,versionCode = 3,versionName = 1.2,   applicationId =,testApplicationId = null,   testInstrumentationRunner = null,testInstrumentationRunnerArguments = {},   testHandleProfiling = null,testFunctionalTest = null,signingConfig = null,   resConfig = null,mBuildConfigFields = {},mResValues = {},   mProguardFiles = [],mConsumerProguardFiles = [],   mManifestPlaceholders = {},mWearAppUnbundled = null}类型   com.android.build.gradle.internal.dsl.DefaultConfig。

是否有人已经尝试将应用程序更新为64位?您知道如何解决此问题吗?

2 个答案:

答案 0 :(得分:2)

可以通过更新构建gradle defaultConfig来完成

defaultConfig {
    applicationId "my.test.64bitapp"
    minSdkVersion 15
    targetSdkVersion 26
    versionCode 42
    versionName "1.0.2"
    multiDexEnabled true
    vectorDrawables.useSupportLibrary = true
    ndk.abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86' ,'x86_64'
}

defaultConfig {
    applicationId "com.swypmedia"
    minSdkVersion 16
    targetSdkVersion 26
    versionCode 2
    versionName "2.0.2"
    ndk {
        abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86' ,'x86_64'
    }
}

我已经在android-native和react-native应用上对此进行了测试。 构建成功并且应用正在运行。

答案 1 :(得分:1)

根据NdkOptionsabiFilters被定义为Set<String>

Set<String> abiFilters

在常规情况下,Set使用以下语法进行初始化(如果要使用运算符'='):

Set<String> mySet = ["armeabi-v7a", "arm64-v8a", "x86", "x86_64"]