美文网首页
多渠道打包与AndResGuard的结合实践

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

作者: LichFaker | 来源:发表于2016-05-07 11:55 被阅读2410次

    集成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);
    

    相关文章

      网友评论

          本文标题:多渠道打包与AndResGuard的结合实践

          本文链接:https://www.haomeiwen.com/subject/lknjrttx.html