適用於Android開發者Gradle小知識,嘿嘿

語言: CN / TW / HK

一起養成寫作習慣!這是我參與「掘金日新計劃 · 4 月更文挑戰」的第1天,點選檢視活動詳情

啥是Gradle啊

哦吼,說起gradle,只要是Android開發者,我相信沒有人對它陌生(其他領域的暫不瞭解,咱不敢妄言),可是。。。怎麼用好它,它能夠給我們的開發帶來哪些便利,對大多數Android佬們好像不是很清楚哎。接下來,粗略的介紹一下Android開發中gradle承擔的角色是什麼,

以下介紹,皆是粗談,深入瞭解gradle的文章很多,也寫的很好,但說的都太專業了,不適合我這樣的新手小白理解,以下觀點,皆為本人自我理解,如果有大佬願意指正,希望友好的在評論區提出,我將虛心學習,這對我將是莫大的幫助 同時,在此申明,該文章為粗略的技術掃盲文。不是專業文章!!,後續待我深入理解gradle,我會再重新創作,提前感謝大家的友好指正, - 構建工具(編譯、打包) - 引入依賴 (dependencies、implementation等方法呼叫) - 配置版本 (compileSdkVersion、buildToolsVersion、minSdkVersion等) - 配置依賴環境(allprojects 、buildscript、classpath等) - 上傳依賴到遠端(上傳到maven等遠端倉庫) - gradle plugin (kotlin-android 、com.android.library等) ... 還有很多,一時想不起,找不到語言描述,各位大佬評論區幫我補充!!

那你要講的小知識是什麼

不知道平時各位大佬公司有沒有多渠道打包、或者是不同平臺部分功能描述有差異的情況,本人在之前公司,因為公司主營業務是工具類App,在不同應用平臺的App名字皆不相同,在我之前還不知道gradle的 flavorDismensions 以及 productFlavors的時候,我採用的方法是,先打一個A平臺的包,再去手動改程式碼,去改B平臺的包。這樣不光耗時,而且很容易出現錯誤。 - 首先在android閉包中定義 flavorDimensions "buildVersionApk", "version" - 在productFlavors 閉包中將維度跟定義的方法進行關聯,然後再裡面進行資原始檔的替換 - 執行gradle assembleXXX命令,即可進行打包 - 最後就可以在修改後的檔案路徑中看到你想要的apk啦 ``` android{ ...//其他配置

def flavorMap = [ buildA : "test1", buildB : "test1", buildC : "1.0.2", ] //維度 flavorDimensions "buildApk", "version" productFlavors { buildA { // 關聯維度 dimension 'buildApk' def appName = flavorMap.buildA resValue "string", "app_name", appName } buildB { dimension 'buildApk' def appName = flavorMap.buildB resValue "string", "app_name", appName } buildC{ dimension "version" def appVersion = flavorMap.buildC resValue "string", "app_version", appVersion } } applicationVariants.all { variant -> variant.outputs.all { if (outputFile.name.contains("release")) { def appName = flavorMap[variant.productFlavors[0].name] variant.getPackageApplication().outputDirectory = new File(project.rootProject.rootDir, "/outputApk") outputFileName = "${appName}_v${versionName}.apk"

        println "======================================================================"
        println "終極輸出路徑>> : ${variant.getPackageApplication().outputDirectory}${File.separator}${outputFileName}"
        println "======================================================================"
    }
}

} } ```

光說文字太乾了,上案例吧

image.png

哈哈,聽懂了嗎

上述操作,可以直接進行復制程式碼實操,有一點要注意,如果是要替換app_name,記得在資原始檔中遮蔽該程式碼,不然會報錯