更新到Android Studio3.0

在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啦。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,034評論 25 709
  • 2017年10月份Android Studio 3.0.0發(fā)布了最新版本,讓我們看下他有那些新的功能。升級到此版本...
    田間小鹿閱讀 1,976評論 1 1
  • afinalAfinal是一個android的ioc,orm框架 https://github.com/yangf...
    passiontim閱讀 15,873評論 2 45
  • 概要 iOS常用的持久化存儲方案一般有:NSUserDefault、Keychain,File,數(shù)據(jù)庫等幾種方案。...
    NapoleonY閱讀 1,449評論 0 6
  • 昨天呢,在教室上了一天的自習,中午也沒回宿舍,教室503挺涼快的,而且一直沒關(guān)燈沒關(guān)空調(diào)。今天一大早5點半的鬧鐘就...
    閑敲棋子落燈花兒閱讀 161評論 0 0

友情鏈接更多精彩內(nèi)容