您现在的位置是:首页 >其他 >Android studio 升级到Flamingo | 2022.2.1遇到的问题网站首页其他

Android studio 升级到Flamingo | 2022.2.1遇到的问题

皮囊 2024-10-17 12:01:05
简介Android studio 升级到Flamingo | 2022.2.1遇到的问题

在更新后,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'
    }

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

kotlin {
	jvmToolchain(8)
}

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

问题二:命名空间

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

添加资源方式如下

android {
    namespace 'com.example.opendemoapp'
    ...
    ...
    ...
    }

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

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

android.nonTransitiveRClass=false

问题三:BuildConfig设置

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

    buildFeatures {
        buildConfig true
    }

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

android.defaults.buildfeatures.buildconfig=true

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

android.enableBuildConfigAsBytecode=true
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。