1.Android热更新方案之微信Tinker源码分析
2.用android写出微信登陆界面设计
Android热更新方案之微信Tinker源码分析
接入Android热更新方案之微信Tinker源码分析,信界主要涉及Tinker接入过程、面源码使用方法、信界实例构建以及补丁合成结果返回给主进程的面源码处理。接入过程与使用方法可参考相关文档与指南,信界实践与接入指南详尽,面源码安博源码具体步骤请参考官方文档。信界
在微信热更新方案中,面源码实例构建采用默认方式,信界TinkerInstaller.install(appLike)为关键步骤。面源码Applike默认的信界ApplicationLike在此之后被调用。
构建过程涉及DefaultTinkerResultService,面源码这是信界mcmod源码一个IntentService,主要功能是面源码补丁合成结果返回给主进程。在安装成功后,信界将删除patch,为patch重启生效做准备。
UpgradePatch与RepairPatch是处理patch的类,分别用于处理patch数据删除及尝试修复。qmix源码
install多参数方法首先安装标志位为true,tinkerLoadResult.parseTinkerResult进行热修复结果处理并上报。下载patch后,安装patch方法中调用onPatchReceived,此方法在DefaultPatchListener执行。补丁检查后执行runPatchService,re源码Intentservice跳转至TinkerPatchService,在onHandleIntent中调用result = upgradePatchProcessor.tryPatch(context, path, patchResult)方法。
默认情况下,此方法调用UpgradePatch的tryPatch方法。此步骤首先进行标志位与patch文件检验,接着进行签名与patch文件MD5校验。ttc源码检验完毕后,进行dex补丁处理。
tryRecoverDexFiles->patchDexExtractViaDexDiff执行完毕后,将结果传递给AbstractResultService.runResultService(context, patchResult)。
在补丁加载过程中,自定义Application类的加载导致无法修改补丁包。为了避免此问题,采用代码框架方式,而非InstantRun hook Application,以尽量减少反射,提升框架兼容性。主要工作是实现将原始Application类完全隔离,确保其他类无法引用自定义的Application。
用android写出微信登陆界面设计
微信的启动界面就是微信的登录界面,其实就是一个动画,只用布局文件是写不出来的,必须在代码里面判断是否登录,登录的情况下就跳过动画直接到列表,如果没有登录就播放动画,动画结束后停留在输入帐号密码的界面