NDK r17.0.4754217不支持armeabi ABI过滤器致Gradle配置报错
Alright, let's tackle this issue head-on. The core problem here is that NDK version r17.0.4754217 dropped support for the 'armeabi' ABI, and your ':native-scrypt' project is still trying to use this deprecated architecture, triggering the Gradle configuration exception you're seeing.
Root Cause
Google removed support for the 32-bit ARMv5 'armeabi' ABI starting with NDK r17. Any project (including dependencies like native-scrypt) that explicitly lists 'armeabi' in its ABI filters will fail to configure with newer NDK versions.
Step-by-Step Solutions
1. Update Your Project's ABI Configuration
First, modify your app or module-level build.gradle to remove 'armeabi' and keep only the supported ABIs:
android { defaultConfig { ndk { // Keep only actively supported ABIs abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' } } }
Alternatively, you can set this globally in your project's gradle.properties file:
android.defaultConfig.ndk.abiFilters=armeabi-v7a,arm64-v8a,x86,x86_64
2. Fix the ':native-scrypt' Module
- If you maintain this module: Open its
build.gradlefile and update the ABI filters the same way as above—remove 'armeabi' from the list. - If it's a third-party dependency:
- Check if there's an updated version of native-scrypt that supports NDK r17+. Most popular libraries have already adapted to this change.
- If no update exists, consider forking the repository, modifying its ABI configuration to remove 'armeabi', then using your forked version as a dependency.
3. Clean and Rebuild Your Project
Clear Gradle's cache and rebuild to ensure all changes take effect:
./gradlew clean ./gradlew assembleDebug
Your Error Log for Reference
Error Logcat: org.gradle.api.ProjectConfigurationException: A problem occurred configuring project ':native-scrypt'. at org.gradle.execution.TaskNameResolver.discoverTasks(TaskNameResolver.java:100) at org.gradle.execution.TaskNameResolver.access$100(TaskNameResolver.java:32) at org.gradle.execution.TaskNameResolver$MultiProjectTaskSelectionResult.collect(TaskNameResolver.java:171) at org.gradle.execution.TaskNameResolver$MultiProjectTaskSelectionResult.collect(TaskNameResolver.java:181) at org.gradle.execution.TaskNameResolver$MultiProjectTaskSelectionResult.collectTasks(TaskNameResolver.java:166) at org.gradle.execution.TaskNameResolver.selectWithName(TaskNameResolver.java:55) at org.gradle.execution.TaskSelector.getSelection(TaskSelector.java:103) at org.gradle.execution.TaskSelector.getSelection(TaskSelector.java:81) at org.gradle.execution.commandline.CommandLineTaskParser.parseTasks(CommandLineTaskParser.java:42) at org.gradle.execution.TaskNameResolvingBuildConfigurationAction.configure(TaskNameResolvingBuildConfigurationAction.java:44) at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48) at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:25) at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:54) at org.gradle.execution.DefaultTasksBuildExecutionAction.configure(DefaultTasksBuildExecutionAction.java:44) at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48) at org.gradle.execution.DefaultBuildConfigurationActionExecuter.access$000(DefaultBuildConfigurationActionExecuter.java:25) at org.gradle.execution.DefaultBuildConfigurationActionExecuter$1.proceed(DefaultBuildConfigurationActionExecuter.java:54) at org.gradle.execution.ExcludedTaskFilteringBuildConfigurationAction.configure(ExcludedTaskFilteringBuildConfigurationAction.java:47) at org.gradle.execution.DefaultBuildConfigurationActionExecuter.configure(DefaultBuildConfigurationActionExecuter.java:48) at org.gradle.execution.DefaultBuildConfigurationActionExecuter.select(DefaultBuildConfigurationActionExecuter.java:36) at org.gradle.initialization.DefaultGradleLauncher$CalculateTaskGraph.run(DefaultGradleLauncher.java:265) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107) at org.gradle.initialization.DefaultGradleLauncher.constructTaskGraph(DefaultGradleLauncher.java:173) at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:128) at org.gradle.initialization.DefaultGradleLauncher.executeTasks(DefaultGradleLauncher.java:107) at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:78) at org.gradle.internal.invocation.GradleBuildController$1.call(GradleBuildController.java:75) at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:152) at org.gradle.internal.invocation.GradleBuildController.doBuild(GradleBuildController.java:100) at org.gradle.internal.invocation.GradleBuildController.run(GradleBuildController.java:75) at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:53) at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35) at org.gradle.tooling.internal.provider.ValidatingBuildActionRunner.run(ValidatingBuildActionRunner.java:32) at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner$1.run(RunAsBuildOperationBuildActionRunner.java:43) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336) at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328) at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197) at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107) at org.gradle.launcher.exec.RunAsBuildOperationBuildActionRunner.run(RunAsBuildOperationBuildActionRunner.java:40) at org.gradle.tooling.internal.provider.SubscribableBuildActionRunner.run(SubscribableBuildActionRunner.java:51) at org.gra
内容的提问来源于stack exchange,提问作者Ronak Doshi

