教你如何玩转 AndroidStudio 一键多渠道打包
来源:互联网 发布:淘宝 大麦网官方旗舰店 编辑:程序博客网 时间:2024/06/03 14:56
如果你还在手动的对每个市场进行打包,先不说 Low 不 Low,自己也会觉得很痛苦对吧,甚至有的同学使用 Windows build 打包一次就得 3-5min;打 6 个市场包半个小时就过去了,最重要的是这个过程中还有可能出现错误,增加测试的难度与成本。
多渠道打包也有很多种方式;有远程的 jenkins + gradle +github 等方法;网上资料很多,由于这种方式需要的配置环境比较繁琐;适用于需要大量打包的企业,并且需要远程打包的需求;本文将介绍 Android Studio 本地一键打包与自动配置签名的方法;
废话说这个多,现在开始搞定多渠道打包;
一、在 AndroidManifest.xml 里设置动态渠道变量
<!-- 自动升级类型 self、_360、baidu --> <meta-data android:name="sdk_key_version_update_type" android:value="${CHANNEL_VALUE}" />
二、在 build.gradle 设置 productFlavors
这里假定我们需要打包的渠道为 360、google、百度 以及本公司
方法 1:直接在 app:gradle 下配置
android { defaultConfig { ... flavorDimensions "versionCode" } productFlavors { google { manifestPlaceholders = [CHANNEL_VALUE: "google"] } qh360 { manifestPlaceholders = [CHANNEL_VALUE: "360"] } baidu { manifestPlaceholders = [CHANNEL_VALUE: "baidu"] } self { manifestPlaceholders = [CHANNEL_VALUE: "self"] } } }或者批量修改defaultConfig { ... flavorDimensions "versionCode" }android { productFlavors { kuan {} xiaomi {} qh360 {} baidu {} wandoujia {} } productFlavors.all { flavor -> flavor.manifestPlaceholders = [CHANNEL_VALUE: name] }}
上面这个配置的作用就是,为每个渠道包产生不同的 CHANNEL_VALUE 的值。这里需要注意的是你对应的标签与配置的 Name 获取逻辑一定要保持一致,否则会出现找不到的逻辑异常。
方法 2:通过快捷键 command + ; 打开配置界面。( Windows 对应的快捷键 Ctrl + Alt + Shift + S )并添加对应的配置渠道。如下图:
注意:这里仅修改 Name 即可,其他信息无特别需求不要修改
三、执行打包操作
打开 Build App 界面:
输入对应的信息点击 Next:
选中对应的渠道版本点击 Finish 即可在项目的 app: 目录 下看到对应的apk文件。
四、执行打包命令 ./gradlew assembleRelease
除了使用 AndroidStudio 图形打包操作以外,我们也可以使用命令行进行打包操作,具体步骤如下:
在 AndroidStudio 窗口左下角打开 Terminal 面板,输入 gradlew assembleRelease 命令即可。
五、配置签名文件
由于使用命令时打出的包是未签名的文件,这个和我们的一键打包还有些瑕疵。对此我们需要配置下签名文件。
首先在项目目录下的 gradle.properies 下配置签名文件的 keyPassWord 与 storePassWord 。
APK_SIGN_KEY_PASSWORD=******APK_SIGN_STORE_PASSWORD=******
这样做得好处是没必要把对应的密码暴露出去
//签名 signingConfigs { release{ keyAlias '1' keyPassword APK_SIGN_KEY_PASSWORD storeFile file('../snaillove.keystore') storePassword APK_SIGN_STORE_PASSWORD } debug{ keyAlias '1' keyPassword APK_SIGN_KEY_PASSWORD storeFile file('../snaillove.keystore') storePassword APK_SIGN_STORE_PASSWORD } } buildTypes { release { //启用混淆代码的功能 minifyEnabled false //指定混淆规则,需要压缩优化的混淆要把proguard-android.txt换成proguard-android.txt proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release } }
注意:一定要把 signingConfigs 文件配置到 buildTypes 前面 否则会编译时抛出异常 Could not find property ‘debugConfig’ on SigningConfig container.
配置自定义打包路径与名称
生成对应的 APK 后,如果还需要我们手动的去修改对应的名称或者路径,是否根标题的一键还有些距离?OK,接着来,这里我们输出 apk 名称为 com_biniusports_app_bnsports_v1.0.0_20171205_baidu.apk 的路径:
android { // 自定义APK输出配置 applicationVariants.all { variant -> variant.outputs.all { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.apk')) { // 输出apk名称为com_biniusports_app_bnsports_v1.0.0_20171205_baidu.apk def fileName = "com_biniusports_app_bnsports_v${defaultConfig.versionName}_${getNowTime()}_${variant.productFlavors[0].name}.apk" outputFileName = fileName } } } }//获取时间戳def getNowTime() { def date = new Date() def now = date.format('yyyyMMdd') return now}
注意:Android Studio 版本大于 3.0 时不要使用v ariant.outputs.each 进行查找内容并且不要使用 new File(outputFile.parent, fileName),否则会抛出异常 Android Gradle 3.0.0-alpha2 plugin, Cannot set the value of read-only property ‘outputFile’。
完成以上配置后,即可开心的点击运行按钮进行签名打包了;
如出现如图的路径与对应的 APK 名称,恭喜你,本地一键多渠道打包已收入囊中。
- 教你如何玩转 AndroidStudio 一键多渠道打包
- 手把手教你AndroidStudio多渠道打包
- 手把手教你AndroidStudio多渠道打包
- 手把手教你AndroidStudio多渠道打包
- 手把手教你AndroidStudio多渠道打包
- 手把手教你AndroidStudio多渠道打包
- 手把手教你AndroidStudio多渠道打包
- 手把手教你AndroidStudio多渠道打包
- 手把手教你AndroidStudio多渠道打包
- 手把手教你AndroidStudio多渠道打包
- 手把手教你AndroidStudio多渠道打包
- 手把手教你AndroidStudio多渠道打包
- 手把手教你AndroidStudio多渠道打包
- 手把手教你AndroidStudio多渠道打包
- 手把手教你AndroidStudio多渠道打包
- 手把手教你AndroidStudio多渠道打包
- 手把手教你AndroidStudio多渠道打包
- 手把手教你AndroidStudio多渠道打包
- 异常断电导致PostgreSQL无法连接
- java线程
- Java方法的可变参数个数
- (CNN)卷积神经网络(三)
- JVM内存管理
- 教你如何玩转 AndroidStudio 一键多渠道打包
- python基础系列教程——python面向对象编程全解
- idea 修改文件打开方式
- Myeclipse项目有错误文件木有错误
- JSP重定向与转发区别
- jvm垃圾收集器与内存分配
- clipboard.js 实现移动端和pc端复制到剪贴板功能
- LWC 61:741. Cherry Pickup
- 适配器模式详解