最终排查crash遇到一些奇奇怪怪的问题,总感觉在某些状态下,用户的运行时so、资源等发生了变化,但代码还是历史版本的。
间接了解到了今天的这个问题:
- App在运行状态,可以动态安装apk,并且不重新启动吗?
- 该逻辑一般可能在何种状态下触发?
- 源码上分析流程是怎么样的?
不是指插件化这类哈,就是实实在在的install apk
更多问答 >>
-
每日一问 | 瘦身属性?对android:extractNativeLibs属性的探讨
2022-12-07 14:43 -
每日一问 | Android 默认开启硬件加速与设置hardwareAccelerated是一回事吗?
2023-05-24 17:30 -
每日一问 | Android 模块化依赖中的资源冲突该如何规避?
2023-05-24 17:30 -
每日一问 | targetSdkVersion 有什么神奇的魔力?
2023-05-24 17:30 -
每日一问 | Java线程栈的栈溢出(StackOverflowError)是如何检测的?
2024-02-19 18:30 -
2022-11-08 21:50
-
2022-11-08 21:50
-
大家提问 Android中前后台切换监听,如果涉及到多进程如何完美的解决?
2022-12-04 22:50 -
每日一问 View.post 又来了与View.postOnAnimation 有什么区别?
2022-07-03 10:47 -
【大家提问】Android中的匿名binder与线程相关的一些问题
2022-07-03 10:48
这跟我以前遇到的persistent应用有点像。。覆盖安装app不重启,然后代码啥的是新的,但是还有些对象是旧类的,而且对象的类加载器也有些奇怪。
所以要达到类似的现象,只需要在应用安装流程上,最终杀掉app的地方,不只豁免persistent应用,而是针对所有的app都这样处理。
先马克一下,我之前测试过一个东西,就是设备所有者。
将apk设置成设备所有者之后(Android11,用AS安装应用安装不了了,一直结束不掉),apk安装飞快,记得当时apk是20多M,只需要不到2秒时间就安装完,安装后会自动运行。
PackageManager.INSTALL_DONT_KILL_APP
mark
在开发调试过程中遇到过一种情况,让应用包名可以通过 local.properties 动态配置:
会出现一个现象,AS 会提示 install 成功,但 launch 失败,之前运行的 app 也还在,运行效果还是老代码的效果;查看 Manifest 发现此时的包名还是缓存的 com.easy.abcd,这能解释为什么 launch 失败,因为通过这个包名是无法找到启动 Activity 的;重新杀掉 app 运行,发现运行效果是新代码的效果;
这个和你提的问题,好像有某种联系。
Android 10 OPPO FIND X
Android Studio Bumblebee | 2021.1.1 Patch 2Build #AI-211.7628.21.2111.8193401, built on February 17, 2022Runtime version: 11.0.11+0-b60-7590822 x86_64VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.macOS 11.6.8