Android 批量打包 基于Walle的多渠道快速打包自动脚本

来源:互联网 发布:新浪足球数据库 编辑:程序博客网 时间:2024/05/28 22:13

Android 批量打包 基于Walle的多渠道快速打包自动脚本

Android Signature V2 Scheme签名下的新一代渠道包打包神器

github主页:https://github.com/Meituan-Dianping/walle

当然了,Walle并不是为了解决打包速度而产生的一个工具,美团研究walle的原因是因为在Android 7.0(Nougat)推出了新的应用签名方案>APK Signature Scheme v2后,之前快速生成渠道包的方式(美团>Android自动化之旅—生成渠道包)已经行不通了,具体可以看看Walle自己是怎么说的。

Walle的使用

android {    //签名 引用位置    signingConfigs {        sankuai {            storeFile file("keystore/123keyStore.jks")            storePassword "123456"            keyAlias "key"            keyPassword "123456"        }    }    //调用签名设置    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'            signingConfig signingConfigs.sankuai        }        debug {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'            signingConfig signingConfigs.sankuai        }    }    //个性化设置    productFlavors {        honry {            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "honry"]        }    }}//配置 build.gradle//在位于项目的根目录 build.gradle 文件中添加Walle Gradle插件的依赖, 如下:buildscript {    dependencies {       classpath 'com.meituan.android.walle:plugin:1.1.5'    }}//并在当前App的 build.gradle 文件中apply这个插件,并添加上用于读取渠道号的AARapply plugin: 'walle'dependencies {    compile 'com.meituan.android.walle:library:1.1.5'}

Walle信息配置

//在当前App的 build.gradle 中添加如下信息walle {    // 指定渠道包的输出路径    apkOutputFolder = new File("${project.buildDir}/outputs/channels");    // 定制渠道包的APK的文件名称    apkFileNameFormat = '${appName}-${packageName}-${channel}-${buildType}-v${versionName}-${versionCode}-${buildTime}.apk';    // 渠道配置文件    channelFile = new File("${project.getProjectDir()}/channel")}配置项具体解释:apkOutputFolder:指定渠道包的输出路径, 默认值为new File("${project.buildDir}/outputs/apk")apkFileNameFormat:定制渠道包的APK的文件名称, 默认值为'${appName}-${buildType}-${channel}.apk'可使用以下变量:projectName - 项目名字 appName - App模块名字 packageName - applicationId (App包名packageName) buildType - buildType (release/debug等) channel - channel名称 (对应渠道打包中的渠道名字) versionName - versionName (显示用的版本号) versionCode - versionCode (内部版本号) buildTime - buildTime (编译构建日期时间) fileSHA1 - fileSHA1 (最终APK文件的SHA1哈希值) flavorName - 编译构建 productFlavors 名channelFile:包含渠道配置信息的文件路径。 具体内容格式详见:渠道配置文件示例,支持使用#号添加注释。


channel文件

meituan # 美团samsungapps #三星hiapkanzhixiaomi # 小米91comgfanappchinanduoa3gcnmumayi10086comwostore189storelenovommhicloudmeizuwandou# Google Play# googleplay# 百度baidu## 360360cn## 应用宝myapp

用法示例:在Android Studio的Terminal命令行输入确保在同一个项目根目录下

生成渠道包 :gradlew clean assembleReleaseChannels支持 productFlavors : gradlew clean assembleMeituanReleaseChannels


用AndroidStudio 打包

项目依赖成功后,双击项目Gradle projects—>项目名—>package—>assembleReleaseChannels


命令行输入打包

下载walle-cli-all.jar文件

执行命令:命令一:(单个写入,如果未指定目录,生成的新Apk与[apk路径]同级目录)java -jar walle-cli-all.jar put -cqiyu C:\Users\Administrator\Desktop\apksigner\qiyu_jiagu_zipalign_v2_sign_walla_channel_tools.apkjava -jar walle-cli-all.jar put -c[渠道名] [apk路径]java -jar walle-cli-all.jar put -c[渠道名] [apk路径] [生成的apk路径(可选)]命令二:(批量写入,如果未指定目录,生成的新apk与[apk路径]同级目录)java -jar walle-cli-all.jar batch-f C:\Users\apksigner\channel C:\Users\apksigner\qiyu_tools.apk C:\Users\apksigner\apkjava -jar walle-cli-all.jar batch-f [渠道文件] [apk路径] [生成的新apk路径(可选)]

原始方法打包 在项目的gradle中定义flavorDimensions 增加多种维度

谷歌官方解说:https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html?utm_source=android-studio#variant_aware

android{    flavorDimensions "fruit","hais" //定义 Specifies two flavor dimensions.    productFlavors{        mh{           dimension "fruit"        }        mhss{           dimension "hais"        }    }}
原创粉丝点击