大多数的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位?您知道如何解决此问题吗?
答案 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)
根据NdkOptions,abiFilters
被定义为Set<String>
Set<String> abiFilters
在常规情况下,Set
使用以下语法进行初始化(如果要使用运算符'=
'):
Set<String> mySet = ["armeabi-v7a", "arm64-v8a", "x86", "x86_64"]