多渠道打包和资源混淆的作用这里我就不再阐述了。网上有很多。
本篇博客我们来介绍一下如何实现多渠道打包之前先进行资源混淆,这样一来我们打出来的包都是已经进行过资源混淆的了。
如果你还有其他的需求,也可以按照这个方法实现。

多渠道打包(Walle)

这里多渠道打包我使用的是美团的Walle,具体的使用方式Github上已经介绍的很详细了。
这里我先来实现一下多渠道打包
首先按照说明集成一下walle和签名配置

配置build.gradle
在位于项目的根目录 build.gradle 文件中添加Walle Gradle插件的依赖, 如下:

buildscript {dependencies {classpath 'com.meituan.android.walle:plugin:1.1.6'}
}

然后在app模块下的build.gradle中添加依赖以及应用插件
如下

apply plugin: 'walle'dependencies {implementation 'com.meituan.android.walle:library:1.1.6'
}

配置插件

具体配置可以根据官方文档介绍自行更改

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

这里我们还需要配置一下签名和渠道名称文件
签名文件自己创建一下,记住文件路径和密码等信息。channel文件中就是要打的渠道包的名称

配置一下签名信息

至此,多渠道相关的配置我们就已经完成了。下面我们来使用打包命令来进行打包试试

点击命令行,输入gradlew assembleReleaseChannels,然后回车

出现BUILD SUCCESSFUL 表示已经完成
下面我们去指令的存放文件夹看一下打的包

可以看到,已经根据channel文件打出了对应的包了。

资源混淆(AndResGuard)

资源混淆这里我用的是微信的AndResGuard

使用方法也很简单,相关配置按照文档走就可以了,为了节省篇幅这里我就不再赘述了。
我们来直接使用
打开命令行输入gradlew resguardRelease回车既可开始资源混淆

执行完成之后我们可以看到混淆过后的包

下面我们来反编译一下看看资源文件到底有没有被混淆过,关于反编译的方法可以看一下我的这篇博客Android反编译工具jadx详细使用方法以及混淆和加固的对比

下图就是我们对资源混淆过后的包进行的反编译,可以看到资源文件名已经被混淆了。

我们再来看一下之前的多渠道打的包,可以看到资源文件名称是没有变化的

这样一来,App的资源混淆我们已经完成了

实现多渠道打包时自动进行资源混淆

上面我们已经分别实现了多渠道打包和资源混淆。但是我们也看到了,多渠道打包和资源混淆是两个命令,也就是说他们实际上是两个任务。我们想要达到的目的是我们输入一行命令时,先执行资源混淆任务,然后再进行多渠道打包,这样一来,我们打出来的所有包就都是已经进行过资源混淆的包了。

搞清楚如何实现就好说了,我们只需要在执行assembleReleaseChannels打包任务之前先执行resguardRelease资源混淆任务即可。

那么,熟悉gradle的话你肯定会知道gradle是使用Groovy语言来实现的,不熟悉Grovvy也没关系。你只需要在app模块的build.gradle中粘贴以下代码

afterEvaluate {tasks.getByName('assembleReleaseChannels') {dependsOn(resguardRelease)}}

这几行代码表示assembleReleaseChannels任务是依赖于resguardRelease任务的,也就是说先执行完资源混淆后再执行多渠道打包。
那么,我们以后再使用gradlew assembleReleaseChannels命令进行打包时就会先执行资源混淆的任务。这样一来,我们就实现了打出来的包就是已经进行过资源混淆的包了。

下面我们来执行一下打包命令gradlew assembleReleaseChannels
可以看到,我们执行打包任务之前会先执行资源混淆的任务,然后再打包

然后我们再来反编译一下apk,可以看到我们反编译的是应用宝渠道的包,该包也已经进行过资源混淆了

到此为止,我们就实现了一行命令实现多渠道打包并自动进行资源混淆,同样的,如果你还有其他的需求,也可以使用类似的方法去实现。
最后要说的是,gradle是使用Groovy语言的,作为一名Android工程师,还是很有必要去了解一下Groovy语言的。毕竟有些插件能在开发上帮助我们节省很多时间。

下面是demo地址

一行命令实现多渠道打包并自动进行资源混淆Demo


如果你觉得本文对你有帮助,麻烦动动手指顶一下,算是对本文的一个认可,如果文中有什么错误的地方,还望指正,转载请注明转自喻志强的博客 ,谢谢!

android一行命令实现多渠道打包并自动进行资源混淆(Walle,AndResGuard)相关推荐

  1. android gradle两种多渠道打包方式

    android gradle两种多渠道打包方式 gradle多渠道打包,目前已经了解到的有两种方式: 一种是利用gradle的manifestPlaceholders属性来替换渠道值 另一种是不同的渠 ...

  2. Android grade语法,多渠道打包

    Android grade语法,多渠道打包 文章目录 Android grade语法,多渠道打包 一.groovy语法 二.自动打包切换测试正式环境 三.gradle多渠道打包 总结 一.groovy ...

  3. Android Studio 多渠道打包、自动版本号及 gradlew 命令的基本使用

    Android Studio 真可谓神器,详细请点这里:打造安卓开发航空母舰 这里介绍其多渠道打包: 1 建立多渠道 这里介绍一种简单的,直接as操作: 直接上图咯,在项目结构你添加flavor就好了 ...

  4. Android 使用VasDolly 实现多渠道打包

    前言: 因为公司项目需要发布到更多的平台上,以供用户下载.打包就成了一个很大的问题.利用原本的打包方式,又慢油耗.主要是电脑慢的话,打一个包都已经要一俩分钟了,如果需要发布的渠道多的话,那么真的就GG ...

  5. Android热更新Tinker + 多渠道打包 + 加固的流程详解

    一.Tinker热修复 关于热修复的作用,不用多说了,一句话概括就是通过让用户无感的方式来修复线上应用的bug.这里介绍的是微信Tinker. 下面的接入方式都是参考自Tinker官方文档来.我这里主 ...

  6. Android国内海外apk多渠道打包了解一下?

    本文主要讲解一个代码工程需要同时需要打包国内外apk包,国外一般只在google play发布,国内发布的平台会更多一些,包括华为.小米.应用宝.vivo等应用市场平台 需求整理 国内和海外版本差异一 ...

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

    <Gradle For Android(二) 多渠道打包与签名配置> 转载请注明来自 傻小孩b(gold.xitu.io/user/57e089-喜欢的能够关注我,不按期总结文章!您的支持 ...

  8. Android开发之Gradle多渠道打包总结

    首先老套路看图:分别是小米的渠道和应用宝的渠道 这是渠道的渠道号的截图 先说下Gradle的多渠道打包,个人更喜欢这样写: 第一步:需要在清单文件添加标识: <meta-dataandroid: ...

  9. Android之友盟多渠道打包与数据统计(非原创)

    文章大纲 一.多渠道打包与数据统计介绍 二.友盟实现多渠道打包实战 三.友盟数据统计实战 四.项目源码下载 五.参考文章 一.多渠道打包与数据统计介绍   多渠道打包,相信很多同学都知道.在Andro ...

最新文章

  1. python基础知识整理 第三节 :函数
  2. malloc为什么会报错:memory corruption
  3. Akka并发编程——第三节:Actor模型(二)
  4. 三步在MacOS Anaconda安装ligthGBM
  5. 计算机大学生个人特长范文,计算机大学生个人简历范文
  6. GOF之结构型模式Ⅱ(重点)
  7. ajax请求url最大长度,针对较长的URL的400BAD请求(ajax)
  8. linux 在字符界面中如何查看超出屏幕显示范围的内容
  9. 李宏毅机器学习笔记——深度学习
  10. 深入学习Heritrix---解析Frontier(链接工厂)
  11. IO流的知识点总结归纳
  12. AlphaGo Zero详解
  13. Linux九阴真经之大伏魔拳残卷5 nginx
  14. 如何对CAD图纸上的图形进行单独保存起来
  15. opencv实现视频实时去雾算法
  16. jy-09-SERVLETJSP——Servlet-Cookie-Session
  17. 模拟IIC——关于模拟IIC的IO口的配置选取推挽输出还是开漏输出,以及是否需要更改IO口输入输出模式和是否需要对IO配置上拉
  18. 从DS1302电路设计总结的晶振电路设计规范
  19. 软件企业认定的好处及条件
  20. 如何驯服野生论文 | EndNote

热门文章

  1. 一张图看懂项目管理流程,建议收藏!
  2. Win10任务栏卡死的几个处理方法 附小工具
  3. Android 开发之 ContentProvider 内容提供者
  4. 缓冲区溢出分析第06课:W32Dasm缓冲区溢出分析
  5. vbs代码如何使用Wscript调试
  6. H3C,华为和3COM的关系
  7. #读书#黑白之间——中国历史文化中的任侠者
  8. 四川大学华西医院“大数据集成及应用平台”项目 市场调研
  9. camera调试:RK3588 apk打开不出图如何排查?
  10. AI技术落地医疗搜索 搜狗明医独家首推“湿疹痱子识别”功能