插件化bug总结

1.插件化bug1-插件微信启动黑屏

在插件启动的时候会调用activity切换动画,在activitymanagerservice.java中(如上图) 调用了wms的overrPendingAppTransition方法,wms接受的参数是enterAnim 和 exitAnim这个资源ID,wms会去外部的微信apk里面查找这两个资源ID,所以如果宿主程序外部的微信和微信插件版本相同,那么就能顺利找到动画,如果版本不同那么资源ID在宿主外部的微信就不存在这个资源ID就会黑屏。

这个理解了也就理解为什么很多插件化框架不支持插件发送notifaction里面包含资源ID了。

《插件化bug总结》 image

====================================================================================================================

2.插件化bug2-插件内相机无法启动

调查发现是插件内的相机是从AOSP6.0源码下的Camera编译得到的,在JNI内部会调用System/lib/libjpeg.so里面的一个函数,而在android8.0上面这个函数没有了

解决方法:在AOSP8.0上面重新编译Camera的JNI层的so,在Java层根据不同的Android版本loadLibraray不同版本的so

======================================================================================================================

3.插件化bug2-插件内浏览器下载应用奔溃

liulishuo.filedownloader替代系统的DownloadManager,因为系统的DownloadManager无法把文件下载到/data/data/com.android.secspce/插件目录/中

========================================================================================================================

除了应用隔离以外的数据隔离:

Intent隔离

比如:

打开浏览器
拨打电话
发送短信/彩信
播放多媒体
打开相机
从gallery选取图片
打开录音机
跳转至应用详情页
打开联系人
插件跳转插件
安装和卸载apk

相关类方法:

com.lody.virtual.client.hook.proxies.am.MethodProxies ->startActivity,需对相应的intent进行修改,同时域内需保证有应用接收修改后的intent

Provider隔离

Contacts
Mms
CallLog
Download(VA自带)
Settings(VA自带)
Media
VoiceMail

相关类:

com.lody.virtual.client.hook.providers
com.lody.virtual.client.hook.proxies.am.MethodProxies ->getContentProvider(),在该方法中替换掉本来的Authority
com.lody.virtual.client.hook.providers.ProviderHook ,该类中维护一个PROVIDER_MAP,lody已经做了download和settings provider的hook,照猫画虎
MediaProviderHook:replaceExternal2Internal(),把读取External Media Provider的uri 重定向为 Internal Media Provider

另外需提供联系人provider供第三方调用以及保障internal media provider的数据来源。
当前internal media provider数据采用FileObserver监听指定目录的方式相关类为com.secspace.fileobsever

存储隔离

hook重定向内置存储和外置TF卡路径,将存储在内置存储的文件转移到/data/data/com.android.secspace/内置存储/,将存储到TF卡中的文件转移到 /外置sdcard/Android/data/com.android.secspace下
当/data/data/com.android.secspace/内置存储/路径下有新增文件的时候通过FileObserver手动添加到 Internal Media Provider
相关类
com.lody.virtual.client.hook.proxies.mount

com.secspace.fileobsever.FileObserverService

    原文作者:码农铮铮
    原文地址: https://www.jianshu.com/p/afb617718e40
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞