iOS热修复框架JSPatch

什么是 JSPatch

Github:https://github.com/bang590/JSPatch

JSPatch是一个开源项目,只需要在项目里引入极小的引擎文件,就可以使用JavaScript调用任何Objective-C的原生接口,替换任意Objective-C原生方法。目前主要用于下发JS脚本替换原生Objective-C代码,实时修复线上bug。

Tinker热更新总结

Tinker缺点

  • Tinker的更新是只能针对同一个版本的app更新,时间越久更新包越大,它不能更新app版本,需要保证每个发布的apk都采用不用的APP版本
  • Tinker不支持修改AndroidManifest.xml,Tinker不支持新增四大组件(1.9.0支持新增非export的Activity)
  • 由于Google Play的开发者条款限制,不建议在Google Play渠道动态更新代码
  • 在Android N上,补丁对应用启动时间有轻微的影响
  • 不支持部分三星Android-21机型,加载补丁时会主动抛出TinkerRuntimeException:checkDexInstall failed
  • 对于资源替换,不支持修改remoteView。例如transition动画,notification icon以及桌面图标。
  • 更新的成功率不是100%,有一定的失败率可以通过后台查看

TinkerPatch对Flavors及加固的支持

对Flavors的支持

如果只是多渠道的需求,建议不要使用Flavor。多flavor必须在后台建立相应的基线工程(如下例子的命名规则为:appVersion_flavorName),每次生成补丁时也必须对应的生成多个分别上传。

TinkerPatch基本使用步骤

TinkerPatch的使用步骤非常简单,一般来说可以参考以下几个步骤:

(1)运行assembleRelease task 构建基准包(务必在发布前确保更新tinkerpatchSupport中的appVersion),tinkerPatch会基于填入的autoBackupApkPath自动备份基础包信息到相应的文件夹,包含:apk文件、R.txt文件和mapping.txt文件 (注:mapping.txt是proguard的产物,如果你没有开启proguard则不会有这个文件

TinkerPatch SDK 初始化

初始化TinkerPatchSDK,无需考虑Tinker是如何下载/合成/应用补丁包,也无需引入Tinker的相关类。

reflectApplication = true 的情况

若使用reflectApplication模式,我们无需为接入Tinker而改造我们的Application类。初始化SDK可参考tinkerpatch-easy-sample中的SampleApplication

微信支付JSSDK接入方式

业务流程

通过微信打开,在支付页面输入金额,点击支付按钮,后台处理处理数据并获取到预支付ID(prepay_id),返回到前端的页面上。页面上通过jssdk唤起微信支付的页面,弹出输入密码页面,用户输入密码后,由微信展示支付成功页面(微信自己实现),跳转到我们自己定义的页面,展示支付结果。

Spring Boot定时任务运行一段时间后自动关闭的解决办法

使用Spring Boot默认支持的Scheduler来运行定时任务,有时在服务器运行一段时间后会自动关闭。原因:Schedule默认是单线程运行定时任务的,即使是多个不同的定时任务,默认也是单线程运行。当线程挂掉时,定时任务也随之终止。

解决方法:改为多线程执行定时任务


Powered by AppBlog.CN     浙ICP备14037229号

Copyright © 2012 - 2020 APP开发技术博客 All Rights Reserved.

访客数 : | 访问量 :