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 的, 编译直接就报错了:

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'
    }
}

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

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 设置方式变更

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

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

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