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 属性效果类似, 并且提供一个仓库冲突解决策略可供设置.