Google 在 2021年7月28日 正式发布了 Android Studio Arctic Fox 系列版本的第一个版本 2020.3.1, 标志着 4.2.2 成为最后一个数字版本号的版本, 新版本沿用了 IntelliJ IDEA 版本命名方式, 同时带来大量特性更新.
https://developer.android.google.cn/studio/releases#arctic-fox
打开 AndroidStudio 之后就收到了更新提示, 为了 Arctic Fox 的版本代号, 必须体验一把啊! 不过也遇到了几个问题, 在这记录一下.
Android Gradle plugin 需要 jre 版本大于等于 11.0
我本地装的 JDK 是 1.8.191 的, 编译直接就报错了:
An exception occurred applying plugin request [id: 'com.android.application']
> Failed to apply plugin 'com.android.internal.application'.
   > Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.
     You can try some of the following options:
       - changing the IDE settings.
       - changing the JAVA_HOME environment variable.
       - changing `org.gradle.java.home` in `gradle.properties`.
最简单的就是在 AndroidStudio 中修改 Gradle 使用的 jre 路径, 选成 AndroidStudio 自带那个 jre 就可以.
Gradle 7.x 仓库默认不支持 http 协议
如果你自定义了 maven 仓库但是没有支持 https 协议, 就会收到一个错误:
A problem occurred configuring root project 'Test'.
> Could not resolve all dependencies for configuration ':classpath'.
   > Using insecure protocols with repositories, without explicit opt-in, is unsupported. Switch Maven repository 'maven(http://maven.domain.org/nexus/content/groups/public)' to redirect to a secure protocol (like HTTPS) or allow insecure protocols. See https://docs.gradle.org/7.0.2/dsl/org.gradle.api.artifacts.repositories.UrlArtifactRepository.html#org.gradle.api.artifacts.repositories.UrlArtifactRepository:allowInsecureProtocol for more details.
解决办法是给 maven 仓库适配 https 协议, 但这个光靠我们做 Android 的一般都不太现实, 所以可以使用以下方式:
repositories {
    maven {
        allowInsecureProtocol true
        url 'http://maven.domain.org/nexus/content/groups/public'
    }
}
然后就能愉快的同步依赖啦!~
部分属性更名
| 属性 | Old | New | 
|---|---|---|
| 参与编译SDK版本 | compileSdkVersion | compileSdk | 
| 最小支持SDK版本 | minSdkVersion | minSdk | 
| 目标SDK版本 | targetSdkVersion | targetSdk | 
对于
com.android.library类型的Module默认不再需要versionCode和versionName属性.
viewBinding 设置方式变更
印象当中这个设置方法又变回原来的那种设置写法:
viewBinding {
    enabled = true
}
反正用下面这种写法编译不过, 搞不懂这是什么神仙升级:
buildFeatures {
    viewBinding = true
}
新增依赖关系解决管理器
在 setting.gradle 新增了以下配置:
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
    repositories {
        google()
        mavenLocal()
        mavenCentral()
        maven { url 'https://jitpack.io' }
        jcenter() // Warning: this repository is going to shut down soon
        maven {
            allowInsecureProtocol true
            url 'http://maven.domain.org/nexus/content/groups/public'
        }
    }
}
这个配置和原来配置到 rootProject 下面的 allprojects.repositories 属性效果类似, 并且提供一个仓库冲突解决策略可供设置.