美文网首页
最新美团多渠道打包工具使用(原创)

最新美团多渠道打包工具使用(原创)

作者: ttkx0915 | 来源:发表于2018-05-09 11:47 被阅读0次

    简介

    使用该工具打包速度超快。
    使用最新的美团多渠道打包框架, 支持V1 V2签名.支持多Flavors。
    最新的美团打包框架已经解决了v1 v2签名适配的问题。

    美团多渠道打包github地址

    多渠道打包步骤

    应用场景: 多Flavors 多渠道. 应用包需要加固.
    备注:根据上面的应用场景,应用包需要加固,并且拥有多个Flavors和多个渠道.我们需要选择脚本打包,而不是gradle命令打包.因为涉及到加固,加固过程中会导致gradle生成的多渠道包获取不到渠道名信息,为了保证能够正确获取渠道信息,生成多渠道包的操作必须在最后一步操作,所以选择使用脚本打包。
    多渠道打包步骤可分五步:
    1)依赖美团多渠道打包工具,使用该工具的API获取渠道信息(代码设置友盟框架获取渠道信息)。
    2)使用studio生成一个release包。
    3)加固包
    4)手动对加固的包进行v1 v2签名
    5)使用美团多渠道 脚本 打包工具生成多渠道包

    1)依赖美团多渠道打包库

    可参考美团多渠道打包github

    1.1 在项目中添加如下配置
    // build.gradle
    buildscript {
        dependencies{
            classpath 'com.mcxiaoke.packer-ng:plugin:2.0.1'
        }
    }
    
    1.2 在模块中添加如下配置
    apply plugin: 'packer'
    // build.gradle
    dependencies {
        compile 'com.mcxiaoke.packer-ng:helper:2.0.1'
    }
    

    备注:使用脚本打包,不需要再有其它配置;如果需要使用Gradle来生成多渠道包,就需要配置插件,在模块gradle中指定渠道文件等

    1.3代码中读取渠道
    // 如果没有找到渠道信息或遇到错误,默认返回的是""
    // com.mcxiaoke.packer.helper.PackerNg
    String channel = PackerNg.getChannel(Context)
    

    备注: 我们可以根据渠道名来获取对应的渠道号等信息。

    1.4设置友盟框架获取渠道信息

    由于友盟框架一般是在清单文件中获取渠道信息,但更改了打包方式后,我们不会在gradle文件和 清单文件中设置渠道信息,所以我们需要通过上述代码获取渠道信息后PackerNg.getChannel(Context),再手动设置给友盟框架。
    (不同版本的友盟框架API不一样)
    示例如下:

    手动设置渠道名 渠道号
    MobclickAgent.startWithConfigure(new MobclickAgent.UMAnalyticsConfig(
                        上下文, “友盟KEY”,“渠道名”));
    

    2)使用studio生成一个release包。

    使用studio生成一个线上包,如果有多个Flovers,就生成多少个。每个Flovers生成一个即可。

    3)加固包

    使用加固工具对其进行加固

    4)手动对加固的包进行v1 v2签名

    v1 v2签名资料一
    v1 v2签名资料二
    示例:

    4.1找到签名工具apksigner.jar

    使用搜索工具Everything轻松搜索apksigner.jar的所在位置。它存在于sdk\build-tools\的子目录下

    4.2运行cmd,进入到该目录。如下图:

    image.png

    4.2 使用apksigner.jar工具对加固包进行v1 v2签名

    image.png

    示例:

    java -jar apksigner.jar sign --ks key.jks --ks-key-alias releasekey --ks-pass pass:pp123456 --key-pass pass:pp123456 --out output.apk   input.apk
    
    

    下面都是根据我自己的文件路径写的,使用者只需替换成自己的路径即可。
    备注:
    1)第三步加固后的包文件名与被签名的apk文件名一致,如下就的文件名就是"input.apk".
    2)在签名前,需要将加固包复制一份放在输出路径上,并更名为对应的输出包文件名。如下输出文件名就是app.apk。如果不复制一份在该路径,会导致签名时报错:找不到输出包文件app.apk。

    apksigner sign  --ks D:\SVN\app.keystore --ks-key-alias bieming --ks-pass pass:"123" --key-pass pass:"123"  --out D:\github_\packer-ng-reinforce-master\out\app.apk  D:\github_\packer-ng-reinforce-master\input\input.apk
    

    4.3检测签名是否成功

    apksigner verify -v 签名包绝对路径
    

    示例:
    查看V1 v2签名是否成功。
    备注:较多开发者之前使用了V1签名,而没有使用v2签名,同时关于360加固等加固工具造成的签名问题,可以如下解决:
    在加固后使用apksigner工具签名v1 v2签名,这样就可解决v1 v2签名的兼容性问题,正常获取渠道包信息,而且也满足加固要求。

    apksigner verify -v  D:\Android\nice\out_apk\app.apk
    
    image.png

    5)使用美团多渠道 脚本 打包工具生成多渠道包

    5.1下载美团脚本打包工具

    将美团多渠道打包库中该文件夹复制出来,放至任一位置(根据自己需求)


    image.png

    5.2将上述加固后进行v1 v2签名的包放在该文件夹下。我将该包命名为“app.apk”(根据自己需要,可以随便命名)

    5.3设置渠道信息

    创建一个channels.txt文件,并将渠道信息如下格式写入该文本


    image.png

    5.4生成多渠道包

    cmd 进入到项目的tools文件夹下. 并将上面已经签名的apk放到tools文件夹下面. 然后执行下面的命令

    packer-ng-2.0.1.jar generate --channels=@channels.txt --output=build/archives app.apk
    

    执行命令后会自动生成\tools\build\archives文件夹,并在其文件夹下生成对应的多渠道包。渠道包的名字和数量是由channels.txt文件来决定的。
    备注:生成文件名的规则是 原包文件名+“-”+“渠道名”.apk

    image.png

    相关文章

      网友评论

          本文标题:最新美团多渠道打包工具使用(原创)

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