正確理解gradle assemble、assembleDebug、assembleRelease

前段時間弄新項目的時候需要配置打包平臺,然后就研究了一下,之前由于都用Android studio 進(jìn)行構(gòu)建項目,所以很少用命令行,久而久之對于這些有點陌生。
先上第一張圖:

image.png

它是整個工程的一個目錄,其實也就有多少個module就有多少個build.gradle,第一個代表這整個project的build.gradle,那么咱們看看每個目錄下面都有什么呢?

image.png

看到了吧,其實每個目錄下面都是一堆task,這個task 有的是Android 給你預(yù)設(shè)好的,有的是自己的自定義的
那么我把a(bǔ)pp/build.gradle里面的代碼改一下成如下:

 buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        dev{
            minifyEnabled false
        }

    }
    flavorDimensions "default"
    productFlavors{
        black{

        }
        blue{

        }
    }

注意 buildType 類型的debug是默認(rèn)的,你不寫也會默認(rèn)存在。

上面的代碼中主要增加了 dev,productFlavors { black,blue}
那么咱們再來看看現(xiàn)在的gradle 發(fā)生了什么變化。

image.png

是不是多出來幾種。再看other里面。
image.png

哇,竟然進(jìn)行了排序組合,這就是productFlavors的風(fēng)味的作用了。

進(jìn)入正題:實際的表現(xiàn)

1.運行 ./gradlew assemble 的結(jié)果

會在output/apk 文件夾下生產(chǎn)
app-black-debug.apk,
app-black-dev.apk,
app-black-release.apk,
app-blue-debug.apk,
app-blue-dev.apk,
app-blue-release.apk,
等6種組合

2.運行 ./gradlew assembleDebug 的結(jié)果

會在output/apk 文件夾下生產(chǎn)
app-black-debug.apk,
app-blue-debug.apk,
等2種組合

3.運行 ./gradlew assembleBlack 的結(jié)果

會在output/apk 文件夾下生產(chǎn)
app-black-debug.apk,
app-black-dev.apk,
app-black-release.apk,
等3種組合

4.運行 ./gradlew assembleBlackDebug 的結(jié)果

會在output/apk 文件夾下生產(chǎn)
app-black-debug.apk,
等1種組合

想必你也能總結(jié)出規(guī)律,如果只用assemble的話,gradle 會把 buildType 和productFlavors 組合打包,很顯然命令越清晰,打的包就越精確,這一塊也是多渠道打包的要點,主要是通過配置productFlavots去進(jìn)行多渠道打包,bulidType 控制著打出的包是debug 類型還是release類型

還有交給大家一個小技巧,大家有沒有發(fā)現(xiàn)這樣的命令是不是很長 啊,在用的過程中這么長很不方便,gradle 為大家考慮了這件事情,大家只需要打出命令的首字母就行,比如:

./gradlew assembleRedRelease 就可以用 ./gradlew aRR 代替,注意:bulidType productFlavors 里面最后不要出現(xiàn)首字母一樣的類型,不然gradle 沒法區(qū)分,我上面舉的例子就不恰當(dāng),./gradlew aBD,gralde 就區(qū)分不出 是 assembleBlackDebug 、assembleBlackDev、assembleBlueDebug、 assembleBlueDev

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

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