Skip to content
谷进杰 edited this page Dec 29, 2017 · 4 revisions

ProtectedApkResignerForWalle

一步解决应用加固导致Walle渠道信息失效的自动化脚本,自动生成渠道包


用法:

  • 按照config.py文件中的注释改成自己项目配置
  • 将已经加固好的包【未签名的包,请不要使用加固客户端签名工具】放到脚本工具根目录下或者在config.py中自行配置,即your.apk
  • 各种渠道的定义是在channel这个文件中,请根据项目情况修改
  • 运行命令 python ApkResigner.py,即可自动生成所有渠道包。

常见问题:

一、 成功运行打包脚本的必要条件:

  1. 保证你Android程序的compileSdKVersion 和 buildToosVersion 版本相同
  2. 建议将jdk升级到1.8
  3. 保证自己本地打包签名可以正常运行
  4. 保证配置的相关路径正确,编码格式为UTF-8,不要带异常字符。
  5. Android SDK buidtools请使用25.0+版本,越新越好。

二、友盟等三方SDK获取不到渠道号

这个问题和打包脚本无关,walle打包后的渠道需要重新手动写入其他三方SDK才可正常统计,下面以友盟为例:

 /**
     * 获取瓦力渠道包
     * @return
     */
    public static String getWalleChannel(Context context){
        String defaultValue = "walleUnknown";
        ChannelInfo channelInfo= WalleChannelReader.getChannelInfo(context);
        if (channelInfo != null) {
            String channel = channelInfo.getChannel();
            if (TextUtils.isEmpty(channel)){
                channel = defaultValue;
            }
            return channel;
        }
        return defaultValue;
    }

  //config umeng in your application
  UMConfigure.init(this, AnalyticsConfig.getAppkey(this), getWalleChannel(),
                UMConfigure.DEVICE_TYPE_PHONE, null);

三、python ApkResigner.py not found

脚本需要python环境,目前兼容2.x和3.x,请确保电脑上正确安装python环境,并正确配置环境变量,可以通过命令python --version检验

Clone this wiki locally