Gradle For Android(二) 多渠道打包與簽名配置

《Gradle For Android(二) 多渠道打包與簽名配置》
轉(zhuǎn)載請注明來自 傻小孩b_移動開發(fā)http://www.itdecent.cn/users/d388bcf9c4d3)喜歡的可以關(guān)注我,不定期總結(jié)文章!您的支持是我的動力哈!

Gradle For Android 導(dǎo)讀

繼上一篇Gradle基礎(chǔ)篇后,現(xiàn)在記錄下如何在gradle中進(jìn)行多渠道打包與簽名配置

身為程序猿,谷歌被墻是眾所周知的事情~因此,估計(jì)好多人都還沒見過google play store。也許是在玩pokemon go,有特意去搞過吧哈~所以呢,現(xiàn)今國內(nèi)有許多應(yīng)用市場,什么小米、華為、360、百度等等,所以每次可能需要發(fā)版幾十個(gè)渠道包。但是gradle為我們提供productFlavors,我們可以獨(dú)立對應(yīng)渠道進(jìn)行私有定制打包。

哎呀,一下跑偏了?,F(xiàn)在直接記錄下Gradle For Android(二),gradle對多渠道管理以及對apk進(jìn)行簽名信息配置的流程,剛剛接觸的可以轉(zhuǎn)身到第一篇文章,謝謝~

前提

首先得了解下BuildTypes、Flavors、BuildVariants三個(gè)定義:
1、BuildTypes : 構(gòu)建類型,AndroidStudio的Gradle組件默認(rèn)提供給了“debug”“release”兩個(gè)配置。
2、Flavors : 產(chǎn)品渠道,可以根據(jù)productFlavors,針對不同的渠道配置個(gè)性化apk
3、BuildVariants:每一個(gè)buildtype和flavor組成一個(gè)buildvariant

一、多渠道個(gè)性化定制

(一)簡單渠道定義

不做任何定制,只是提供渠道名稱,只需要在application中的build.gradle,android作用域中添加productFlavors,例如以下代碼:

productFlavors {//多渠道打包
    xiaomi { //小米渠道
    }
    googlepaly { //google play 渠道
    }
    huawei { //華為渠道
    }
    baidu { //百度 渠道
    }
}

如果沒有錯(cuò)誤情況,我們會在Android studio的BuildVariant看到對應(yīng)的渠道,如圖所示:

buildvariant.png
(二)個(gè)性自定義

Gradle組件為多渠道打包提供了許多方便的方法,開發(fā)者可以根據(jù)不同的渠道配置打包不同的apk,例如文件名、包名、編譯資源等等。在這里舉例下:

1、不同渠道編譯不同的包名
productFlavors {//多渠道打包
    xiaomi { //小米渠道
        applicationId 'com.yuan.agradle1'//個(gè)性定制,小米市場包名不同
    }
    googlepaly { //google play 渠道
        applicationId 'com.yuan.agradle2'
    }
}

打包結(jié)束后,我們輸出下包名看看結(jié)果:

package_google.png
package_xiaomi.png
2、不同渠道編譯指定不同的資源類型

看過第一篇文章的筆者,不知道是否還記得sourceSets 這個(gè)字段,可以自定義指定編譯的資源路徑。渠道不同可否編譯資源不同?這個(gè)答案是肯定的,必須可以!(這里我demo沒有做出舉例,只是注釋)

xiaomi { //小米渠道
    applicationId 'com.yuan.agradle1'//個(gè)性定制,小米市場包名不同
    //以下指定編譯資源
    java.srcDirs = ['src/main1', 'src/main1/java/']
    res.srcDirs = ['src/main1/res']
    assets.srcDirs = ['assets1']

}
googlepaly { //google play 渠道
    applicationId 'com.yuan.agradle2'
    //以下指定編譯資源
    java.srcDirs = ['src/main2', 'src/main2/java/']
    res.srcDirs = ['src/main2/res']
    assets.srcDirs = ['assets2']
}
3、自定義打包apk名稱

寫的兩個(gè)方法我就不粘貼了哈,具體看demo

//修改輸出apk名字
applicationVariants.all { variant ->

    if (variant.buildType.name.equals('release')) {
        variant.outputs.each { output ->
            def appName = 'AGradle'
            def oldFile = output.outputFile
            def buildName
            def releaseApkName

            variant.productFlavors.each { product ->
                buildName = product.name
            }

            releaseApkName = appName + getVersionByMainfest() + '-' + buildName + '-' + getNowTime() + '.apk'
            output.outputFile = new File(oldFile.parent, releaseApkName)
        }
    }
}
4、渠道的統(tǒng)一配置

如果需要在不同渠道統(tǒng)一配置,可以使用productFlavors.all字段,例如以下:

productFlavors.all { 
        //...
}

二、簽名配置

簽名主要有兩種方式,手動簽名打包與自動簽名?,F(xiàn)在分別舉例下兩種方式:

(一)手動簽名打包
signed_1.png

創(chuàng)建一個(gè)簽名文件,填入這些內(nèi)容即可:

signed_2.png

使用剛剛簽名的文件,輸入密碼進(jìn)行簽名打包:

signed_3.png

選擇打包渠道:

signed_4.png

等待一段時(shí)間后就可以查看結(jié)果了~

signed_5.png
(二)自動簽名

自動簽名呢,是在我們的application中的build.gradle,先配置好簽名文件信息,當(dāng)然我們要先創(chuàng)建好一個(gè)簽名文件哈,具體配置代碼如下:

signingConfigs {
    debug {
        keyAlias 'yuan'
        keyPassword '12345678'
        storeFile file("../agradle.jks")//這里我放在project根目錄下,根據(jù)路徑配置
        storePassword '12345678'
    }
    release {
        keyAlias 'yuan'
        keyPassword '12345678'
        storeFile file("../agradle.jks")
        storePassword '12345678'
    }
}

希望對有些開發(fā)者有幫助具體查看可以github上的demo,也歡迎加入開發(fā)交流群哈,詳情看個(gè)人簡介。下一篇是對gradle的優(yōu)化,以及一些使用技巧,歡迎讀者閱讀

DEMO

Gradle For Android(二) 多渠道打包與簽名配置

傻小孩b mark共勉,寫給在成長路上奮斗的你

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

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,802評論 25 709
  • 這一章主要針對項(xiàng)目中可以用到的一些實(shí)用功能來介紹Android Gradle,比如如何隱藏我們的證書文件,降低風(fēng)險(xiǎn)...
    acc8226閱讀 7,961評論 3 25
  • 最近在項(xiàng)目中遇到需要實(shí)現(xiàn) Apk 多渠道、定制化打包, Google 、百度查找了一些資料,成功實(shí)現(xiàn)了上述功能,在...
    看一季殘花落幕閱讀 2,645評論 1 8
  • 1.介紹 如果你正在查閱build.gradle文件的所有可選項(xiàng),請點(diǎn)擊這里進(jìn)行查閱:DSL參考 1.1新構(gòu)建系統(tǒng)...
    Chuckiefan閱讀 12,355評論 8 72
  • 最近幾日我的睡眠質(zhì)量嚴(yán)重下降,這讓我痛苦不堪,每每只能在凌晨東方露出魚肚白才能淺淺睡去,早上八九點(diǎn)疲憊地睜開雙眼、...
    文墨婷香閱讀 516評論 1 2

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