更新到Android Studio3.0

在Android官网上浏览时看到了下面这句话:

Android Studio 3.0 and higher provides full support for Kotlin, so it's easy to add Kotlin files to you existing project and convert Java language code to Kotlin.

然后我就去更新了一下我的AS,发现要改的东西还挺多的,在这里记录一下。

Update the Android Plugin for Gradle

buildscript {
    repositories {
        // Gradle 4.1 and higher include support for Google's Maven repo using
        // the google() method. And you need to include this repo to download
        // Android plugin 3.0.0 or higher.
        google()
        ...
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
    }
}

repositories块里加上google()方法,因为gradle4.1或更高的版本支持google自己的maven库,你也可以用下面的代码代替google()这个方法,但sync后后面会自动加上google()。

maven {
          url 'https://maven.google.com'
         }

Update Gradle

在gradle/wrapper/gradle-wrapper.properties文件中将gradle配置改到:

distributionUrl = https\://services.gradle.org/distributions/gradle-4.1-all.zip

这时候会出现一些报错,下面是我更新时遇到的一些:

Flavor Dimensions变更

报错信息:

Error:All flavors must now belong to a named flavor dimension.
The flavor 'flavor_name' is not assigned to a flavor dimension.

看报错信息能看出现在使用flavor时,必须要定义flavorDimensions;官网上对flavorDimensions的翻译时风味维度,对productFlavors的翻译时产品风味(不得不吐槽一下这样的翻译怎么读感觉怎么奇怪- 。-)。
试例配置:

//风味维度,组合多个productFlavors中的配置
flavorDimensions("mode", "api")

//支持与 defaultConfig 相同的属性
productFlavors {
    xiaomi {
        dimension "mode"
        applicationIdSuffix ".xiaomi"
        manifestPlaceholders.put("CHANNEL_VALUE","xiaomi")
    }
    huawei {
        dimension "mode"
        applicationIdSuffix ".huawei"
        manifestPlaceholders.put("CHANNEL_VALUE","huawei")
    }
    minApi24 {
        dimension "api"
        minSdkVersion '24'
    }
    minApi21 {
        dimension "api"
        minSdkVersion '21'
    }

}

使用annotationProcessor移除apt

报错信息:

(Error:Cannot choose between the following configurations of project :mylibrary:)

使用annotationPorcessor代替apt
之前的依赖:

dependencies {
  ...
  apt 'com.jakewharton:butterknife-compiler:8.4.0'
}

改为:

dependencies {
  ...
  annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
}

在project的build.gradle中删除:

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

在module的build.gradle中删除:

apply plugin: 'android-apt'

打包自定义apk名称报错(Cannot set the value of read-only property 'outputFile' )

类似报错信息:

Error:(56, 0) Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=debug, filters=[]}} of type com.android.build.gradle.internal.api.ApkVariantOutputImpl.
<a href="openFile:D:\eclipseCode\ipay-android\xinlebao\build.gradle">Open File</a>

修改:

// 自定义输出配置
android.applicationVariants.all { variant ->
        variant.outputs.all {
            outputFileName = "exerise_v${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk"
        }
}

AAPT2 编译报错 AAPT2 error

这个我没遇到是在网上看到的
报错信息:

Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details

解决:在gradle.properties中关闭APPT2 编译

android.enableAapt2=false

以上就是我在更新到3.0时做的一些配置修改,好了现在可以愉快的使用3.0啦。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,506评论 25 709
  • 2017年10月份Android Studio 3.0.0发布了最新版本,让我们看下他有那些新的功能。升级到此版本...
    田间小鹿阅读 5,896评论 1 1
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,784评论 2 45
  • 概要 iOS常用的持久化存储方案一般有:NSUserDefault、Keychain,File,数据库等几种方案。...
    NapoleonY阅读 5,228评论 0 6
  • 昨天呢,在教室上了一天的自习,中午也没回宿舍,教室503挺凉快的,而且一直没关灯没关空调。今天一大早5点半的闹钟就...
    闲敲棋子落灯花儿阅读 1,243评论 0 0

友情链接更多精彩内容