美文网首页Studio
Android 快速打包工具(真的很快)

Android 快速打包工具(真的很快)

作者: 北神GJH | 来源:发表于2017-06-01 11:03 被阅读174次

    打包工具

    Android打包工具,100个渠道包只需要10秒钟

    (packer-ng-plugin)

    重要说明:1.若360等需要加固的渠道,先加固,再打渠道包(注意注意注意)

                      2.使用最新版SDK(Android Gradle Plugin 2.2.0+)时,请务必在signingConfigs里加入v2SigningEnabled false,否                        则打包时会报错

                     3.如果需要UMeng统计,请在自己的Application中获取渠道信息并传给UMeng

    Stringchannel = PackerNg.getChannel(this);

    MobclickAgent.startWithConfigure(newMobclickAgent.UMAnalyticsConfig(this,AppConfig.UMENG_KEY,channel));


    applyplugin:'packer'

    dependencies {compile'com.mcxiaoke.gradle:packer-helper:1.0.8'}  

    android {

    signingConfigs {    

      release {

    //如果要支持最新版的系统 Android 7.0

    //这一行必须加,否则安装时会提示没有签名

    //作用是只使用旧版签名,禁用V2版签名模式

    v2SigningEnabled  false

    }    }  }

    为了提高Android系统的安全性,Google从Android 7.0开始增加一种新的增强签名模式,从Android Gradle Plugin 2.2.0开始,构建系统在打包应用后签名时默认使用APK signature scheme v2,该模式在原有的签名模式上,增加校验APK的SHA256哈希值,如果签名后对APK作了任何修改,安装时会校验失败,提示没有签名无法安装,使用本工具修改的APK会无法安装,解决办法是在signingConfigs里增加v2SigningEnabled false,禁用新版签名模式,技术细节请看官方文档:APK signature scheme v2,还有这里Issue 31的讨论 。


    使用方式

    方式一:使用命令行工具(推荐)

    使用步骤:

    1.下载打包工具

    PackerNg-1.0.9

    2.打一个基础包,不包含渠道信息

    3.编写渠道.text文件(如下格式)

    渠道.text

    4.随便位置创建一个文件夹,将打包工具和渠道文件.text和基础包一同放进去(只为了,操作方便)

    text文件夹

    5.打开命令行,定位到该目录,输入命令:

    java -jar PackerNg-x.x.x.jar apkFile marketFile outputDir

    命令行输入

    方式二:使用该库提供的gradle插件(不推荐)

    使用步骤:(具体使用,请到github查看

    1.在app/build.gradle中添加依赖:

    dependencies {

    compile 'com.mcxiaoke.gradle:packer-helper:1.0.9'

    }

    2.程序入口添加以下代码(即配置友盟统计的渠道名):

    final String market =PackerNg.getMarket(Context);

    MobclickAgent.startWithConfigure(newMobclickAgent.UMAnalyticsConfig(context, umeng_appkey, market));

    3.去除manifest中关于友盟统计的metadata,以及**build.gradle**中的相关内容

    android:name="UMENG_CHANNEL"

    android:value="${UMENG_CHANNEL_VALUE}"

    />


    实现原理

    [原作者原理说明](https://github.com/mcxiaoke/packer-ng-plugin)

    一个xx.apk文件是一个签名过的.zip文件,根据[ZIP文件结构(https://users.cs.jmu.edu/buchhofp/forensics/formats/pkzip.html),它的末尾是该文件的注释,注释包含两个部分Comment Length和File Comment。该工具利用zip文件的评论区,进行flavor的读写写入注释区的结构如下,data即渠道名

    [filecontent] [commentLength][commentContent]

    2 bytes |由以下构成

    [data]   [dataLength]  [magic]

     nbytes   2bytes     5bytes

    byte[] magic = {0x21, 0x5a, 0x58, 0x4b, 0x21};

    相关文章

      网友评论

        本文标题:Android 快速打包工具(真的很快)

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