記錄android老項目studio升級3.1+後從新配置gradle踩過的坑

//                def releaseApkName = 'KGRingeToneV' + defaultConfig.versionName + '-release' + variant.productFlavors.get(0).name + '.apk'
//                 output.outputFile = new File(oldFile.parent, releaseApkName)               
             outputFileName = "KGRingeToneV${defaultConfig.versionName}-release${variant.productFlavors.get(0).name}.apk"

關於打包apk名字的定義,studio3.0以前支持是如上圖直接對文件的File直接定義,升級後再也不支持對file的定義,不能拿到file的寫的權限,谷歌了些資料後,發現咱們能夠定義它的生成file文件名定義android

接着是對咱們的渠道進行定義的問題ui

flavorDimensions("channel") //顧名思義,是爲咱們如今要打渠道再能夠多添加一個維度
    productFlavors {//多渠道打包 要在manifest <!--android:value="${UMENG_CHANNEL_VALUE}" />-->

//        _0m{}
        _102m { dimension "channel" }
    }

在原來基礎上添加多了維度,在擴展維度的基礎上,好比說咱們commpanyA和companyB,有對應的不一樣渠道,能夠這樣寫,這兒參考部分網上資料,相信其實升級是爲了實現更多元化的配置,實現不少不一樣打包版本的需求。好比下面blog

productFlavors{
    companyA{
        dimension "company"
        buildConfigField "String","FLAVOR_NAME","\"companyA\""
    }
    companyB{
        dimension "company"
        buildConfigField "String","FLAVOR_NAME","\"companyB\""
    }
    channelA{
        dimension "channel"
        buildConfigField "String","FLAVOR_NAME","\"channelA\""
    }
    channelB{
        dimension "channel"
        buildConfigField "String","FLAVOR_NAME","\"channelB\""
    }
}

下面遇到最坑的估計是這個:一直說aapt2是個坑,果真確實也是坑,aapt2是aapt的估計升級版,今年18年後,之前遇到有些關於aapt的編譯異常直接能夠添加圖片

android.enableAapt2=false

解決,18年後估計這個會取消,連同升級爲聽說studio 3.2.0 alpha版本有對這個問題修復。我目前的版本號studio 3.1.2,在編譯之前老項目,由於想研究看看,遇到下面這個圖片的問題,這兒注意我以爲平時少去看報錯註釋,其實隱含了不少信息。通常編譯報錯會給你報具體哪一行,這兒只有一個error: . 基本搜索不到這個問題,沒認真看報錯全部註釋的坑,就是帶來本身更長時間的困擾,找問題。排除。資源

下面咱們認真看看它的報錯信息,實際上是有提示到的,是圖片問題,通常aapt就負責全部resource資源的合併、編譯、歸整等工做,通常aapt就是好比你的layout可能有問題了,或者只是由於一個不規範的輸入致使可能莫名的報錯。get

看到了嗎,builder.png 是圖片的問題,其實認真看報錯有收穫的。最後我看了圖片幾百張,每張都去看,感受很耗時間,我打算輸入部分刪除法,刪掉一部分,看還會不會報這個 error: .錯的問題,使用了大概四五次,最後定位到有一張圖片有問題,認真看確實沒看出什麼問題,這個圖片就是個編輯過9patch圖片。有點神坑。最後總算解決,編譯完成,項目完美運行io

最後附圖:真沒看出來圖片啥問題,名字定義和系統顯示是同樣的,是不也是aapt個bug。有知道童鞋麻煩告訴下,謝謝。編譯

相關文章
相關標籤/搜索