加固+多渠道打包+Bugly统计+热修复

##前言


记录下项目中使用的方案,本方案是基于乐固进行的加固,在此基础上多渠道打包,具体使用请看流程图。下面的方案会在文中有详细的说明。

流程


Created with Raphaël 2.2.0 开始 接入Bugly 添加reader依赖 生成基线APP 加固应用 app-release_legu.apk(未签名) 对齐资源 使用v2方案给应用签名 检查v2签名效果 walle-cli 打渠道包 针对bug下发补丁包修复线上问题 结束

##详解


###一、接入Bugly

  1. 接入热更新sdk,可以查看官方接入文档 , 官方接入视频, 二选一。

  2. 不要忘了在tinker-support.gradle里开启加固模式isProtectedApp = true

  3. 最后看下Bugly提供的功能模块:

    这里写图片描述

    这里写图片描述

    这里写图片描述

###二、添加reader依赖
获取渠道号的依赖,walle把它提取出来了,可以单独使用。

dependencies {
    compile 'com.meituan.android.walle:payload_reader:1.1.4'
}

在application中设置渠道号


public class MyApplication extends Application {
    private  String  TAG="---------";
    @Override
    public void onCreate() {
        super.onCreate();
        setStrictMode();

	      ............
   
		//设置渠道  Bugly市场统计时使用
        Bugly.setAppChannel(getApplication(), getChannelName());
        //是否设置为开发设备
        Bugly.setIsDevelopmentDevice(getApplication(), true);
        //初始化   异常上报 
        CrashReport.initCrashReport(getApplication());
        //异常上报时  可以增加额外的数据
        CrashReport.putUserData(getApplication(), "data", "额外增加的数据");
    }

   
    /**
     *  获取渠道号
     *
     * @return
     */
    public String getChannelName() {

        Map<String, String> map = ChannelReader.getMap(new File(getApplicationInfo().sourceDir));
        boolean hasChannel = map != null && map.get(ChannelReader.CHANNEL_KEY) != null;
        return hasChannel ? map.get(ChannelReader.CHANNEL_KEY) : "huoxing";
        
    }
}

###三、生成基线APP
第一步集成好了,执行assembleRelease命令会生成如下文件:

这里写图片描述

 app-0630-18-46-28   // 请务必要保存好基准包目录,这个是作为打补丁的基准。
    ├── app-release.apk  //在桌面新建一个文件夹`jiagu`,并把apk复制进去。
    ├── app-release-mapping.txt
    └── app-release-R.txt


这里写图片描述

###四、加固应用

乐固提供了不同平台的加固工具,可以下载到本地使用。

这里写图片描述

下面是windows版的加固工具

这里写图片描述

加固应用后,签名会失效,此时我们只需要下载这个未签名的应用,签名工作在第六步,下载后的得到的文件为app-release_legu.apk(自动生成的)。

这里写图片描述

###五、对齐资源

####使用方法

zipalign -v 4 infile.apk outfile.apk

  1. zipalign :需要定位到Android/Sdk/build-tools/25.+目录下执行此命令。
  2. -v :指详细输出
  3. : 对齐到4字节边界
  4. infile.apk : 源apk路径
  5. outfile.apk:输出apk路径

这里写图片描述

这里写图片描述
####了解为什么要使用zipalign
使用zipalign工具,可为应用文件提供重要优化。 目的是确保所有未压缩的数据以相对于文件开头的特定对齐开始。 具体来说,它将使APK内的所有未压缩数据(如图像或原始文件)在4字节边界上对齐,该优点是减少运行应用程序时所占用的RAM量,并且能够让应用程序和整个系统运行得更快。官网介绍地址:https://developer.android.com/studio/command-line/zipalign.html
###六、V2签名

命令很简单,指定签名文件,源apk路径,签完名后会覆盖源apk。为了方便我把签名文件复制了一份到jiagu目录下。

apksigner sign --ks release.jks infile.apk

###七、检查v2签名效果
下载CheckAndroidV2Signature.jarjiagu目录下。定位到jiagu目录下,执行下面命令:

java -jar CheckAndroidV2Signature.jar  app-release_legu_zipalign.apk 

//输出结果: {"ret":0,"msg":"ok","isV2":true,"isV2OK":true}

 //isV2: 是否使用的v2签名方案
 //isV2OK: v2签名是否成功

###八、walle-cli 打渠道包
walle-cli是walle提供的命令行程序,打包方式非常灵活。下载walle-cli-all.jar jiagu目录下。定位到jiagu目录下,执行下面命令(这是其中一种):

java -jar walle-cli-all.jar batch -c   apple,ali,jd  app-release_legu_zipalign.apk 

这里写图片描述

查看渠道号我们已经在第二步集成了。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值