热修复 tinker接入及源码分析( 八 )

  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    找到()对象中的对象根据对象找到其中的方法,传入patch相关的对应的实参,返回[]对象拿到对象中原本的方法步骤2与步骤3中的[]数组进行合并,将patch相关的dex放在数组的前面最后将合并后的数组,设置给
    这里其实和Qzone的提出的方案基本是一致的 。如果你以前未了解过Qzone的方案,可以参考此文:
    (2)合成patch
    这里的入口为:
    TinkerInstaller.onReceiveUpgradePatch(getApplicationContext(),Environment.getExternalStorageDirectory().getAbsolutePath() + "/patch_signed.apk");
    • 1
    • 2
      • 1
      • 2

      上述代码会调用中的方法:
      # DefaultPatchListener@Overridepublic int onPatchReceived(String path) {int returnCode = patchCheck(path);if (returnCode == ShareConstants.ERROR_PATCH_OK) {TinkerPatchService.runPatchService(context, path);} else {Tinker.with(context).getLoadReporter().onLoadPatchListenerReceiveFail(new File(path), returnCode);}return returnCode;}