Android Studio 3.0 升級編譯錯誤分析

今天Google推送了Android Studio 3.0的升級
升級完了以後,AS要求將
gradle tools升級到3.0.0

classpath 'com.android.tools.build:gradle:3.0.0'

gradle也升級到gradle-4.1-all.zip

升級完了以後,編譯就出現各種問題

問題1

Error:(130, 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

原來用來重命名打包後的apk方法不能用了
原來的方法
variant.outputs[0].outputFile = new File(apkDir, filename)
要改成下面的方法
variant.outputs.all {output ->
outputFileName = filename
}

問題2

    2. Error:Cannot choose between the following configurations of project :videoplayer:
      - debugApiElements
      - debugRuntimeElements
      - releaseApiElements
      - releaseRuntimeElements
    All of them match the consumer attributes:
      - Configuration 'debugApiElements':
          - Found com.android.build.api.attributes.BuildTypeAttr 'debug' but wasn't required.
          - Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required.
          - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
          - Found org.gradle.api.attributes.Usage 'java-api' but wasn't required.
      - Configuration 'debugRuntimeElements':
          - Found com.android.build.api.attributes.BuildTypeAttr 'debug' but wasn't required.
          - Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required.
          - Found com.android.build.gradle.internal.dependency.VariantAttr 'debug' but wasn't required.
          - Found org.gradle.api.attributes.Usage 'java-runtime' but wasn't required.
      - Configuration 'releaseApiElements':
          - Found com.android.build.api.attributes.BuildTypeAttr 'release' but wasn't required.
          - Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required.
          - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
          - Found org.gradle.api.attributes.Usage 'java-api' but wasn't required.
      - Configuration 'releaseRuntimeElements':
          - Found com.android.build.api.attributes.BuildTypeAttr 'release' but wasn't required.
          - Found com.android.build.gradle.internal.dependency.AndroidTypeAttr 'Aar' but wasn't required.
          - Found com.android.build.gradle.internal.dependency.VariantAttr 'release' but wasn't required.
      - Found org.gradle.api.attributes.Usage 'java-runtime' but wasn't required.

以前Android Studio不會自動匹配Library中的BuildTypes
3.0以後 現在就可以自動匹配了(只要app選擇了debug,後面會自動選中debug,release也是一樣)
這裏寫圖片描述

當然 需要注意的是 Library中需要添加buildTypes跟app的一樣,
比如App中有 release debug debugTest
那麼Library中也要有這3個
直接空着也沒關係
這裏寫圖片描述

問題3

如果你用了類似butterknife
需要做如下改動
project的build.gradle文件中刪除

  • classpath ‘com.neenbedankt.gradle.plugins:android-apt:1.8’

module的build.gradle文件中刪除

  • apply plugin: ‘android-apt’

module的build.gradle文件中替換

//apt 'com.jakewharton:butterknife-compiler:8.4.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'

問題4

D:\Dev\android\workspace\xxxx\xxxx\videoui\build\intermediates\bundles\debug\res\values\values.xml
Error:(84, 5) error: style attribute '@android:attr/windowEnterAnimation' not found.
Error:(84, 5) error: style attribute '@android:attr/windowExitAnimation' not found.
D:\Dev\android\workspace\xxxxx\xxxx\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml
Error:(2556) style attribute '@android:attr/windowEnterAnimation' not found.
Error:(2557) style attribute '@android:attr/windowExitAnimation' not found.
Error:failed linking references.
Error:java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:Execution failed for task ':app:processDebugResources'.
> Failed to execute aapt
Information:BUILD FAILED in 13s
Information:9 errors
Information:0 warnings
Information:See complete output in console

解決辦法:

在Project/gradle.properties中添加 android.enableAapt2=false

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章