本系列希望系统的给大家讲解一下Android的多渠道打包知识,首先给大家讲解一下怎么打包一个普通的应用程序。
选择Generate Signed APK就是平常所说的签名包。点击之后Generate Signed APK进入下一个页面,
选择Creat new,添加keystore信息(keystore是java的密钥库、用来进行通信加密用的、比如数字签名。keystore就是用来保存密钥对的,比如公钥和私钥)
填写完毕后点击OK跳转到最后一步。
其中Apk destination folder是Apk最终生成的目录,Build Type是编译类型,Flavors是渠道信息,到这里用AS打包的过程基本就完事了,大家肯定心中会有一个疑惑,那么如果我想用命令行该怎么打包呢,下面就来讲讲命令行打包,同时为下一节的多渠道打包做个铺垫。
首先来了解两个命令。gradlew assemblerelease 、gradlew assembledebug
打包成功后会提示BUILD SUCCESSRUL,那么打包过程中的一些输出目录和签名在哪里呢?
这就涉及到Gradle的配置了,首先签名文件的配置,可以同时配置debug和release包,如果不配置此签名,则打出来的是非签名包,配置后打出来的包则是带签名的包,包名后面不带unaligned。
上述四个配置项,分别为签名文件的路径,密码,别名以及密码对应上面可视化视图中的配置。签名密码写在gradle中不安全,最好在打包上线的时候将相关代码注释掉,可以如下这样来配置
signingConfigs {
Config {
storeFile file(stone.keystore)
storePassword System.console().readLine(Keystore password: )
keyAlias stone
keyPassword System.console().readLine(Key password: )
}
}
打出来的包名是怎么来的呢,例如haofang_debug_dev_v3.5.0_build20170111请看如下配置,PRODUCT_NAME:一般是APP产品的名字,buildTypeName:代表当前是release还是debug包,flavorName:渠道名称,versionName:版本号,BUILD_TIME_FORMAT:编译的时间。
也可以参考如下配置,分开定义:
如果想打包特殊渠道的release版本,可以通过如下命令:gradlew assembleBaiduRelease