AndroidStudio升級到3.0後gradle打包出錯

AndroidStudio升級到3.0後gradle也升級到了3.0的版本

如果繼續使用原來的打包方式就會出錯

android.applicationVariants.all { variant ->

    variant.outputs.each { output ->
        def finalVersionCode =v10000 + versionCode
        output.versionCodeOverride = finalVersionCode
        output.outputFile = new File(
             output.outputFile.parent,       output.outputFile.name.replace(".apk","-${finalVersion}.apk"))
    }
}

錯誤信息

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

修改方法:
1. each()改爲all()
2. 將output.outputFile改爲outputFileName

修改後:

android.applicationVariants.all { variant ->

    variant.outputs.all { output ->
        def finalVersionCode = 10000 + versionCode
        output.versionCodeOverride = finalVersionCode
        outputFileName = new File(
             output.outputFile.parent,
             outputFileName.replace(".apk", "-${finalVersionCode}.apk"))
    }
}

分割線


上面的方法雖然不會再報錯,但是在build的時候卻出現了新的錯誤:

Error:Execution failed for task ‘:app:packageDebug’. Cannot create directory

我一直以爲是編譯的問題,clean,rebuild都不行,後面查到還是打包出現的問題,應該修改爲:

android.applicationVariants.all { variant ->

    variant.outputs.all { output ->
        def finalVersionCode = 10000 + versionCode
        output.versionCodeOverride = finalVersionCode
        outputFileName = "${variant.name}-${finalVersionCode}.apk"
    }
}

然後就能運行到設備上了

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