android多渠道打包签名配置,Gradle For Android(二) 多渠道打包与签名配置

《Gradle For Android(二) 多渠道打包与签名配置》

转载请注明来自 傻小孩b(gold.xitu.io/user/57e089…喜欢的能够关注我,不按期总结文章!您的支持是个人动力哈!java

Gradle For Android 导读

继上一篇Gradle基础篇后,如今记录下如何在gradle中进行多渠道打包与签名配置android

身为程序猿,谷歌被墙是众所周知的事情~所以,估计好多人都还没见过google play store。也许是在玩pokemon go,有特地去搞过吧哈~因此呢,现今国内有许多应用市场,什么小米、华为、360、百度等等,因此每次可能须要发版几十个渠道包。可是gradle为咱们提供productFlavors,咱们能够独立对应渠道进行私有定制打包。git

哎呀,一下跑偏了。如今直接记录下Gradle For Android(二),gradle对多渠道管理以及对apk进行签名信息配置的流程,刚刚接触的能够转身到第一篇文章,谢谢~github

前提

首先得了解下BuildTypes、Flavors、BuildVariants三个定义:

一、BuildTypes : 构建类型,AndroidStudio的Gradle组件默认提供给了“debug”“release”两个配置。

二、Flavors : 产品渠道,能够根据productFlavors,针对不一样的渠道配置个性化apk

三、BuildVariants:每个buildtype和flavor组成一个buildvariantapi

1、多渠道个性化定制

(一)简单渠道定义

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

productFlavors {//多渠道打包

xiaomi { //小米渠道

}

googlepaly { //google play 渠道

}

huawei { //华为渠道

}

baidu { //百度 渠道

}

}复制代码

若是没有错误状况,咱们会在Android studio的BuildVariant看到对应的渠道,如图所示:post

cad67e4713abe5b7a037f15818b04d75.png

buildvariant.png

(二)个性自定义

Gradle组件为多渠道打包提供了许多方便的方法,开发者能够根据不一样的渠道配置打包不一样的apk,例如文件名、包名、编译资源等等。在这里举例下:gradle

一、不一样渠道编译不一样的包名

productFlavors {//多渠道打包

xiaomi { //小米渠道

applicationId 'com.yuan.agradle1'//个性定制,小米市场包名不一样

}

googlepaly { //google play 渠道

applicationId 'com.yuan.agradle2'

}

}复制代码

打包结束后,咱们输出下包名看看结果:优化

1ead3ca3d1ad440e034ce28792ce369f.png

package_google.png

8f182918fdf2362ccdf4a3b6344c9065.png

package_xiaomi.png

二、不一样渠道编译指定不一样的资源类型

看过第一篇文章的笔者,不知道是否还记得sourceSets 这个字段,能够自定义指定编译的资源路径。渠道不一样能否编译资源不一样?这个答案是确定的,必须能够!(这里我demo没有作出举例,只是注释)ui

xiaomi { //小米渠道

applicationId 'com.yuan.agradle1'//个性定制,小米市场包名不一样

//如下指定编译资源

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']

}复制代码

三、自定义打包apk名称

写的两个方法我就不粘贴了哈,具体看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)

}

}

}复制代码

四、渠道的统一配置

若是须要在不一样渠道统一配置,可使用productFlavors.all字段,例如如下:

productFlavors.all {

//...

}复制代码

2、签名配置

签名主要有两种方式,手动签名打包与自动签名。如今分别举例下两种方式:

(一)手动签名打包

ccef788382c81dc7fe17434b991bac6c.png

signed_1.png

建立一个签名文件,填入这些内容便可:

0e61c77a7654f13d7961a2927a83181c.png

signed_2.png

使用刚刚签名的文件,输入密码进行签名打包:

e412d23306dc26f815059a6751737926.png

signed_3.png

选择打包渠道:

19a0b823416dafd0141d6da5c9937257.png

signed_4.png

等待一段时间后就能够查看结果了~

e7a39d782ab5949a5fb108e8f6d6e5d4.png

signed_5.png

(二)自动签名

自动签名呢,是在咱们的application中的build.gradle,先配置好签名文件信息,固然咱们要先建立好一个签名文件哈,具体配置代码以下:

signingConfigs {

debug {

keyAlias 'yuan'

keyPassword '12345678'

storeFile file("../agradle.jks")//这里我放在project根目录下,根据路径配置

storePassword '12345678'

}

release{

keyAlias 'yuan'

keyPassword '12345678'

storeFile file("../agradle.jks")

storePassword '12345678'

}

}复制代码

但愿对有些开发者有帮助~具体查看能够github上的demo,也欢迎加入开发交流群哈,详情看我的简介。下一篇是对gradle的优化,以及一些使用技巧,欢迎读者阅读~

DEMO

傻小孩b mark共勉,写给在成长路上奋斗的你

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值