当前位置: 首页 > 知识库问答 >
问题:

对64位的支持导致添加ndk时出错。abiFilters正在构建中。格拉德尔

裴焱
2023-03-14

大多数Android开发者必须从谷歌那里得到消息,在2019年8月之前更新应用程序,以支持64位体系结构。这里给出了详细说明:确保你的应用程序支持64位设备

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

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

然而,在此之后,我在构建应用程序时出现以下错误:

错误:(35,0)在DefaultConfig_{name=main,dimension=null,minSdkVersion=DefaultApiVersion{mApiLevel=16,mCodename='null'},targetSdkVersion=DefaultApiVersion{mApiLevel=28,mCodename='null'},renderscriptTargetApi=null,RenderScriptModeEnabled=null,renderscriptSupportModeEnabled=null,RenderScriptNDKModelEnabled=null,versionCode=3,versionName=1.2,applicationId=,testApplicationId=null,testInstrumentationRunner=null,TestInstrumentationRunneArguments={},testHandleProfiling=null,testFunctionalTest=null,signingConfig=null,resConfig=null,mBuildConfigFields={},mResValues={},mProguardFiles=[],mConsumerProguardFiles=[],MManifectHolders={},com类型的mWearAppUnbundled=null}。Android建筑格雷德尔。内部的dsl。DefaultConfig。

有人尝试过将应用升级到64位吗?知道怎么解决这个问题吗?

共有3个答案

宋飞掣
2023-03-14

对于最新的kotlin dsl

ndk {
     abiFilters.add("armeabi-v7a")
     abiFilters.add("arm64-v8a")
}
徐凌
2023-03-14

根据NdkOptions,abiFilters被定义为Set

Set<String> abiFilters

在groovy中,Set是使用以下语法初始化的(如果您想使用运算符=”):

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

牛凌
2023-03-14

这可以通过更新build 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原生和反应原生应用程序。

 类似资料:
  • 我正在开发Android,并尝试实现GPS和谷歌地图。 构建。gradle(模块:app)如下所示 但它在编译com时显示了错误。Android支持:appcompat-v7:26' 。错误是 但是我在构建中没有看到任何版本25。gradle。我错过什么了吗?提前谢谢。

  • 我正在尝试添加Firebase云消息依赖到Gradle.build文件,它显示错误。即使我尝试添加最新版本(20.0.0),它仍然显示错误。请帮助我解决我的问题。 我已经将版本更改为最新版本的Firebase云消息传递以及gradle.build文件中的所有其他依赖项。 } 显示的错误如下所示: 1]",但没有解析到该版本。库显示的行为将是未知的。 依赖失败:com。谷歌。Androidgms:播

  • 问题内容: 使用 应该以32位版本编译该文件。 不幸的是我得到这个错误: 我该如何解决? 如果我不使用它,则使用64位指令。 问题答案: 要在64位Linux版本上编译32位二进制文​​件,您必须安装开发包和32位GNU C库 尝试这个 和

  • 问题内容: 我有以下代码: 我得到这个值:“ ”,这是 我想知道JavaScript是否处理64位整数,还是我做错了什么? 问题答案: JavaScript使用IEEE-754双精度(64位)格式表示数字。据我了解,这为您提供53位精度,或者15至16个十进制数字。您的数字位数超出了JavaScript所能应付的位数,因此最终得到了一个近似值。 这样并不是真正的“错误处理”,但是如果您需要对大数进

  • 我刚刚收到并阅读了Google Play的时事通讯,其中提到从明年开始,该商店“将要求具有本机库的新应用程序和应用程序更新除了32位版本外还提供64位版本”。 对于那些还没有读过的人来说,它指出: 2019年64位支持需求 Android 5.0 中引入了对 64 位架构的平台支持。如今,超过40%的Android设备上线支持64位,同时仍保持32位兼容性。对于使用本机库的应用,64 位代码通常提

  • 我得到了在地图上绘制一些点的任务。写了一些代码,但目前我通过形状创建的每个点都将被添加到网格内的错误位置。哦,我正在使用JavaFX。 我在GridPane的索引0,0中添加了一个ImageView,每个点都是通过MouseEvent在ImageView上的x和y位置创建的。之后,我将创建的点添加为GridPane的子节点,它显示在第一个网格的y轴中心。尝试了不同的东西,如anchorPanes和