在Android官網(wǎng)上瀏覽時看到了下面這句話:
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,發(fā)現(xiàn)要改的東西還挺多的,在這里記錄一下。
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
這時候會出現(xiàn)一些報錯,下面是我更新時遇到的一些:
Flavor Dimensions變更
報錯信息:
Error:All flavors must now belong to a named flavor dimension.
The flavor 'flavor_name' is not assigned to a flavor dimension.
看報錯信息能看出現(xiàn)在使用flavor時,必須要定義flavorDimensions;官網(wǎng)上對flavorDimensions的翻譯時風味維度,對productFlavors的翻譯時產(chǎn)品風味(不得不吐槽一下這樣的翻譯怎么讀感覺怎么奇怪- 。-)。
試例配置:
//風味維度,組合多個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
這個我沒遇到是在網(wǎng)上看到的
報錯信息:
Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
解決:在gradle.properties中關(guān)閉APPT2 編譯
android.enableAapt2=false
以上就是我在更新到3.0時做的一些配置修改,好了現(xiàn)在可以愉快的使用3.0啦。