0%

Android Studio Arctic Fox 2020.3.1 尝鲜总结

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

我本地装的 JDK1.8.191 的, 编译直接就报错了:

1
2
3
4
5
6
7
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 协议, 就会收到一个错误:

1
2
3
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 的一般都不太现实, 所以可以使用以下方式:

1
2
3
4
5
6
repositories {
maven {
allowInsecureProtocol true
url 'http://maven.domain.org/nexus/content/groups/public'
}
}

然后就能愉快的同步依赖啦!~

https://docs.gradle.org/7.0.2/dsl/org.gradle.api.artifacts.repositories.UrlArtifactRepository.html#org.gradle.api.artifacts.repositories.UrlArtifactRepository:allowInsecureProtocol

部分属性更名

属性 Old New
参与编译SDK版本 compileSdkVersion compileSdk
最小支持SDK版本 minSdkVersion minSdk
目标SDK版本 targetSdkVersion targetSdk

对于 com.android.library 类型的 Module 默认不再需要 versionCodeversionName 属性.

viewBinding 设置方式变更

印象当中这个设置方法又变回原来的那种设置写法:

1
2
3
viewBinding {
enabled = true
}

反正用下面这种写法编译不过, 搞不懂这是什么神仙升级:

1
2
3
buildFeatures {
viewBinding = true
}

新增依赖关系解决管理器

setting.gradle 新增了以下配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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 属性效果类似, 并且提供一个仓库冲突解决策略可供设置.

  • 本文作者: 6x
  • 本文链接: https://6xyun.cn/article/131
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-ND 许可协议。转载请注明出处!