TinkerLoadResult相关接口
因为加载补丁是在Tinker的Install之前的,我们将加载的结果保存在intent中,然后在Tinker的install方法中恢复这些结果。这里包括补丁的所有信息,例如加载的dex,library,我们定义的package config以及各个文件的目录等。但是需要注意的是,这里面的变量大多数是nullable。若Tinker的loaded为true,除了dexes与libs
(要看补丁包里面是否真的有),其他变量可以确保非空。
获取packageConfig:
- public String getPackageConfigByName(String name) {
- if (packageConfig != null) {
- return packageConfig.get(name);
- }
- return null;
- }
这里需要注意的是,检查dex的Md5值需要使用SharePatchFileUtil.verifyDexFileMd5方法,这是由于dex有可能是被我们重新打包成jar模式。
- //获得基准包的tinkerId
- String oldTinkerId = Tinker.with(context).getTinkerLoadResultIfPresent().getTinkerID();
- //获得补丁包的tinkerId
- String newTinkerId = Tinker.with(context).getTinkerLoadResultIfPresent().getNewTinkerID();
更多接口请参考TinkerLoadResult.java。