首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >.forEach for List - org.gradle.api.GradleException:-org.gradle.api.GradleException: Call需要API级别24 (当前最小值为22):java.lang.Iterable#forEach [NewApi]

.forEach for List - org.gradle.api.GradleException:-org.gradle.api.GradleException: Call需要API级别24 (当前最小值为22):java.lang.Iterable#forEach [NewApi]
EN

Stack Overflow用户
提问于 2022-01-20 08:09:17
回答 3查看 435关注 0票数 0

我有这样的代码:

代码语言:javascript
运行
复制
private val recipes: List<Recipe>,
...
recipes.forEach {
        recyclerItems.add(RecipeBinder(it, imageLoader, onRecipeClick))
}

通过检查,我发现了一个错误:

代码语言:javascript
运行
复制
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':androidclient:lintMyAppDebug'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$3(ExecuteActionsTaskExecuter.java:186)
        at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:268)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:184)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:173)
        at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
        at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
        at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
        at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
        at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
        at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
        at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
        at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:411)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:398)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:391)
        at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:377)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
        at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: org.gradle.api.GradleException: Lint found errors in the project; aborting build.


> Task :androidclient:lintMyAppDebug FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':androidclient:lintMyAppDebug'.
> Lint found errors in the project; aborting build.

  Fix the issues identified by lint, or add the following to your build script to proceed with errors:
  ...
  android {
      lintOptions {
          abortOnError false
      }
  }
  ...
  The first 3 errors (out of 18) were:

Error: Call requires API level 24 (current min is 22): java.lang.Iterable#forEach [NewApi]
          recipes.forEach {

我使用的Kotlin版本: 1.6.10和classpath 'com.android.tools.build:gradle:4.2.2‘如何修复它?请帮帮忙

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-01-20 08:23:16

尝试将此转换为:

代码语言:javascript
运行
复制
recipes.forEach {
    recyclerItems.add(RecipeBinder(it, imageLoader, onRecipeClick))
}

对此:

代码语言:javascript
运行
复制
recipes.iterator().forEach {
    recyclerItems.add(RecipeBinder(it, imageLoader, onRecipeClick))
}

我认为,在使用forEach时,编译器认为它来自于Java(需要API 24的https://developer.android.com/reference/java/util/ArrayList#forEach(java.util.function.Consumer%3C?%20super%20E%3E))。

(与问题无关,但我强烈建议您获得最新的AGP版本)

票数 0
EN

Stack Overflow用户

发布于 2022-01-20 08:35:00

你有两个选择

1.将模块级build.gradle中的最小SDK版本设置为24,在defaultConfig下,将minimumSdk设置为21,并更改其余代码以与其匹配。

代码语言:javascript
运行
复制
 defaultConfig {
    applicationId "com.somedomain.somepackage"
    **minSdkVersion 24**
    targetSdkVersion 31
    versionCode 1
    versionName "1.0"

    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

2.在循环中使用Kotlin

代码语言:javascript
运行
复制
for(recipe in recipes){
recyclerItems.add(RecipeBinder(recipe, imageLoader, onRecipeClick))
}
票数 0
EN

Stack Overflow用户

发布于 2022-01-20 08:27:30

转到应用程序的leve build.gradle文件,并更改minSdkVersion 22 -> minSdkVersion 24

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70782674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档