在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.
Open File
修改:
// 自定义输出配置
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啦。