当前位置:   article > 正文

Android studio 升级到Flamingo | 2022.2.1遇到的问题_compiledebugjavawithjavac' task (current target is

compiledebugjavawithjavac' task (current target is 1.8) and 'kaptgeneratest

在更新后,Up-to-date for Android Gradle Plugin version 8.0.2,AGP升级到了8.0
需要我们的gradle版本升级到8.0.2
至于AGB是什么东西,暂且不提,一般的项目在更新后肯定是编译不通过的
有以下的一些原因

问题一:java编译版本和kotlin编译版本不匹配

报错信息:

Execution failed for task ‘:sdk:compileDebugKotlin’.
‘compileDebugJavaWithJavac’ task (current target is 1.8) and ‘compileDebugKotlin’ task (current target is 17) jvm target compatibility should be set to the same Java version.
Consider using JVM toolchain: https://kotl.in/gradle/jvm/toolchain

可以看到我们java使用的编译版本是1.8,但是kotlin的编译版本已经升级到17了,这也是这次更新所带来的变化。Android studio版本更新到2022.2.1会自带java17版本

如何解决?

将其保持同步即可,在gradle中修改

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
    kotlinOptions {
        jvmTarget = '17'
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这样就可以将其保持同步,另外也可以这样添加kotlin的版本

kotlin {
	jvmToolchain(8)
}
  • 1
  • 2
  • 3

保持版本同步后,就能解决上面的报错信息了
如果没能解决,就打开setting,在里面搜索gradle,更改里面的jdk版本,改为17
在这里插入图片描述

问题二:命名空间

namespace是这次更新后新增的一个属性,主要是用于资源的访问,在此之前,Android访问资源大多是利用包名来访问资源的,现在新增这个属性后,需要指定该属性去访问资源,不然就会出现编译失败

添加资源方式如下

android {
    namespace 'com.example.opendemoapp'
    ...
    ...
    ...
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

还需要注意的是,如果含有多个模块,需要在其单独模块中的gradle中去指定其命名空间

nonTransitiveRClass 会强制要求 Module 的资源按 namespace 来区分使用
如果不想启用,可以改为false

android.nonTransitiveRClass=false
  • 1

问题三:BuildConfig设置

如果项目中有用到BuildConfig,那么更新后会发现找不到该文件了,原因是在更新后默认没有启动还文件,如果需要使用的话,需要在android中插入如下声明

    buildFeatures {
        buildConfig true
    }
  • 1
  • 2
  • 3

如果全局都需要的话,那么在gradle.properties中添加

android.defaults.buildfeatures.buildconfig=true
  • 1

在kotlin中使用,可以添加如下字段来增加编译速度

android.enableBuildConfigAsBytecode=true
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/639693
推荐阅读
相关标签
  

闽ICP备14008679号