多渠道打包与AndResGuard的结合实践

集成AndResGuard

参见AndResGuard文档

多渠道打包

我使用的是packer-ng-plugin, 该打包工具打包速度非常快。

  1. 新建一个markets.txt文件,按行分隔声明渠道名称。
  2. 下载packer-ng-plugin的打包tools,我这使用的是Python 脚本
  3. 复制PackerNg.java到项目中
  4. app.gradle中编写打包方法
def packageChannel(String releaseApk) {
    try {
        def stdout = new ByteArrayOutputStream()
        exec {
            //执行python脚本打多渠道包
            commandLine 'python', rootProject.getRootDir().getAbsolutePath() + "/app/ngpacker.py", releaseApk, "./markets.txt", rootProject.getRootDir().getAbsolutePath() + "/build/archives"
            standardOutput = stdout
        }
        return stdout.toString().trim()
    }catch (ignored) {
        return "UnKnown";
    }
}
  1. 在资源混淆结束后执行打包方法, 具体的fileName以实际指定输出结果为准,AndResGuard的目录为"AndResGuard_" + releaseApkName
project.afterEvaluate {
    //在Release后执行资源混淆,然后多渠道打包
    //打包命令 ./gradlew resguard
    tasks.getByName("resguard") {
        it.doLast {
            println 'channel package task begin'
            def oldName = VERSIO_NNAME +"_${releaseTime()}_release"
            def fileName = oldName + "_signed_7zip_aligned.apk"
            def rApk = new File("app/build/outputs/apk/AndResProguard_" + oldName+ "/" + fileName)
            if (rApk.exists()) {
                println 'resGuard apk exits begin channel package'
                packageChannel(rApk.absolutePath)
            }
        }
    }
}
  1. 运行
    在命令行中输入gradle clean resguard即可成功得到混淆后的多渠道包

结合友盟统计

// 获取渠道
final String channel = PackerNg.getMarket(this);
AnalyticsConfig.setChannel(channel);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 上一篇文章中详细介绍了module中build.gradle文件的属性和配置,今天详细讲解一下我在自己的应用中主...
    sakasa阅读 1,094评论 0 1
  • Android市场的渠道分散已不是什么新鲜事,但如何高效打包仍是令许多开发者头疼的问题。本篇文章着重介绍了目前最新...
    _曾胖子阅读 1,989评论 1 10
  • 按照渠道识别型分类: META-INF渠道识别型:网页版、Python版、BAT脚本、Jar版、Manifest渠...
    比萨u阅读 2,013评论 9 18
  • 目录一、Python打包及优化(美团多渠道打包)二、Gradle打包三、其他打包方案:修改Zip文件的commen...
    守望君阅读 5,813评论 4 17
  • android多渠道打包 1.如何查看apk的签名信息 1将apk解压; 2.找到META-INF 下的.RSA文...
    ping0505阅读 1,095评论 0 1