Android

给DroidPlugin添加概览屏幕

赵裕(vimerzhao)
背景 DroidPlugin默认不支持多任务: VirtualApp是支持的: 方案 其实参考的就是VirtualApp的实现,它的核心代码是: // com.lody.virtual.client.hook.proxies.am.HCallbackStub IBinder token = ActivityThread.ActivityClientRecord.token.get(r); ...... int taskId = IActivityManager.getTaskForActivity.call( ActivityManagerNative.getDefault.call(), token, false); 其实就是反射调用ActivityMa

Android混淆问题一则

赵裕(vimerzhao)
问题 dex包里面的build.gradle通过api引用了一个包,同事主工程调用dex包里面的方法抛出ClassNotFoundException。 分析 使用AS的Analyze APK发现该类其实是存在

Proguard导致的NoSuchMethodException问题排查

赵裕(vimerzhao)
背景 最近在处理异常时遇到一个诡异的问题:自己的Demo里面混淆一个类后,打印Crash堆栈时这个类里面的调用点直接失踪了! 下面用测试代码说明。 测试代码 // MainActivity.java public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); new Test().fun1(); } } // Test.java public class Test

Proguard导致的NoSuchMethodException问题排查

赵裕(vimerzhao)
背景 之前项目的混淆配置一直没开启Proguard的优化选项 -dontoptimize 最近为了做安装包优化,把这行注释掉了 #-dontoptimize 问题 于是项目里的各种优化配置开始生效了,但是测试反馈了一个Bug:悬浮窗的搜索框点击之后没有反应了。 排

基于Android签名机制的文件安全下发方法

赵裕(vimerzhao)
问题背景 Android中存在大量需要动态下发文件的场景: 下发布局资源文件实现UI动态化 下发Dex文件、lua文件,实现局部功能的动态化 下发Android插件 下发多媒体资源等 等等 对于其中一些文件,如De

防止WebView因为GC被回收

赵裕(vimerzhao)
今天遇到一个问题,前端反映说我们共同约定的一个隐藏WebView无法调试,现象如下: 可以看到,小测试这个Tab一出现就消失了,但是同样的代码放在测试Demo里面就没问题,分析之后发现是实际工程里面产生

Android安装包优化

赵裕(vimerzhao)
背景 安装包膨胀的原因 业务的增加、产品的演进是安装包大小增加的本质原因。但是在演进之路上,由于一些所谓的技术债务,如: 使用的资源未经裁剪(如全量字体文件、分辨率过大的图片) 不合理的大资源(如大的视频、音

Android安装包极限优化

赵裕(vimerzhao)
背景 目前Android安装包的优化方法论比较成熟,比如 混淆代码(Proguard、AndResGuard) 移除不在使用的代码和资源 对于音频、图片等使用更轻量的格式 等等 这些方法都比较常规,在项目成熟后优