Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1.9.14.18之后删除无用theme异常 & 启动崩溃 #1741

Open
18320877747 opened this issue Jan 25, 2024 · 0 comments
Open

1.9.14.18之后删除无用theme异常 & 启动崩溃 #1741

18320877747 opened this issue Jan 25, 2024 · 0 comments

Comments

@18320877747
Copy link

异常类型:app运行时异常

手机型号:all

手机系统版本: all

tinker版本:1.9.14.18之后

gradle版本:gradle-6.1.1

问题描述:
问题场景一,styles删除无用theme,导致其他theme失效:

  1. 使用tinker 官方demo
  2. 模拟一种场景,给MainActivity增加一个theme, 如下
    image
    styles.xml中的定义如下, 在styles 中我增加AThem和BTheme,其中ATheme没有被任何地方引用:
    image
  3. 打基础包后正常,BTheme正常生效,如图
    1706152666233
  4. 删除styles.xml中的ATheme, 同时在activity_main中随便加点东西来确认补丁生效,如下
    image
    image
  5. 打热补丁,并应用,MainActivity指定BTheme的失效
    image
    6.分析生成的R文件
    image
    image
    ID发生了移位(我不确定这个移位是否是正常的,1.9.14.18的表现是ATheme删除后 BTheme的ID是不会发生变化的)

问题场景二(同样是使用 1.9.14.18之后的版本出现的),启动崩溃:

  1. 同样使用tinker 官方demo
  2. 在打基础包时指定了AndroidManifest application的 android:icon="@mipmap/ic_launcher"
  3. 同时在mipmap中增加几个无用的png资源,要保证一点的是这几个资源生成R文件时ID比ic_launcher先生成,比如下图:
    image
    image
  4. 基础包正常
  5. 删除除ic_launcher的其他任何一个资源,比如删除arrow_loading_1, 然后打patch并安装patch,启动崩溃,堆栈如下
    image
    找不到ic_launcher对应的id, 反复测试发现,只有application指定的ic_launcher在生成mipmap分配的ID的最后一个会出现问题
    image
    这个id发生了变化
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant