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