Skip to content

能否默认使用isProtectedApp=true打出来的补丁包? #813

Closed
@icemanstudy

Description

@icemanstudy

Issue/提问须知

在提交issue之前,我们应该先查询是否已经有相关的issue以及常见问题。提交issue时,我们需要写明issue的原因,以及编译或运行过程的日志(加载进程以及Patch进程)。issue需要以下面的格式:

异常类型:无

tinker版本:如:1.9.2

gradle版本:如:3.3

是否使用热更新SDK: 无

因为补丁的apply流程通常耗时20s以上,导致我们app目前的apply流程失败率较高.我尝试了在未加固的基准包中使用设置isProtectedApp=true打出来的补丁包,仍然可以使用,而且速度非常快.
测试机型:nexus6p,直接进入了optimizeAll流程.貌似是去掉了dex合成的过程.直接将changed_classes.dex和test.dex进行opt了.

如果在所有未加固的app上都是用加固模式打的补丁包,应该可以增加apply的成功率,只是不知道是否对性能有影响?

Activity

tys282000

tys282000 commented on Apr 17, 2018

@tys282000
Collaborator

不行的,因为加固工具阻止了正常的dex2oat过程,同时也就阻止了内联和机器码直接跳转到目标方法之类的优化,这样才使得可以直接用一个包含了所有新增和变更的类的dex来覆盖已有的类。否则在正常的未加固的app上用这种方法会因为上面提到的这些优化导致各种莫名其妙的crash。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @icemanstudy@tys282000

        Issue actions

          能否默认使用isProtectedApp=true打出来的补丁包? · Issue #813 · Tencent/tinker