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"        }    }}

更多相关文章

  1. Android(安卓)屏蔽系统通知的几种方法
  2. Android(安卓)打包aar给unity3d使用 项目心得
  3. Android(安卓)实现微信,QQ文件在其他应用打开并获取到路径
  4. Android(安卓)选择文件并获取路径
  5. Android(安卓)NDK之JNI陷阱
  6. /mnt/sdcard与Environment.getExternalStorageDirectory()的使用
  7. Error:Execution failed for task ':demo:packageRelease'. > Un
  8. class文件生成dex文件的步骤(命令行操作)
  9. Mac删除JDK

随机推荐

  1. Android自动测试框架Espresso
  2. 【Android 开发】:Android中EditText控件
  3. Android自学笔记之 Activity详解
  4. Android(安卓)drawText获取text宽度的三
  5. gradle for android 自动找当前环境当前
  6. 最全的Android源码目录结构详解
  7. Android学习二:Resources
  8. 第十章 Android性能优化
  9. Android(安卓)GestureDetector滑动监听事
  10. Android 通过Socket 和服务器通讯