6.3.4 容器化框架的弊端
容器化技术可以实现动态加载、热更新,那么是不是所有 App 都应该接入这种技术呢?其实不然,要知道 Google 是禁止 App 使用这种动态加载框架技术的。国内之所以容器化框架盛行,是因为 Google 退出中国市场,所以当下流行的容器化框架,大多是由国内开发者开发的。
那 Google 为什么要禁用这种技术呢?
容器化技术看起来很高端,但其实也存在很多弊端。其中,可能对用户造成影响的就是安全性。
应用程序想要上架 Google Play 商店,让用户能够使用,都必须经过 Google 严格的审核。Google 绝不允许其商店存在某些未经审核的 App 上线。为了对用户负责, Google 不允许任何具备动态更新、热更新、热修复及自更新能力的 App 上架。
想象一下,某些黑灰产 App,在某一次你没注意的运行过程中,运用动态加载技术偷偷加载了某些功能,比如,上传了你手机上 SD 卡的所有内容,然而你却无法查证,这将是多么可怕的事情啊。
因此,安全性才是容器化框架不被 Google 接受的最重要的原因,而非该技术没有价值或不可取。其实在有监管的情况下,容器化技术是非常不错的解决方案。
6.3.5 Android P 下的容器化技术前进方向
众所周知, Android 系统是朝着保护用户隐私以及抑制 App 权限的方向发展的。 Android P被拎出来,并不是因为它是比较新的系统,而是因为 Google 在 Android P 上推出了 Hidden API机制。这个机制一出来,基本宣告了容器化框架的末路,让黑灰产 App 开发者汗颜。
所谓的 Hidden API,其实就是系统没有开放出来的,只给系统自己使用的 API。禁止反射调用 Hidden API,就是在系统层进行限制,不让应用程序通过反射调用 Hidden API,以保证调用的接口都是 Google 开放的安全接口。我们知道, Android 系统运行的是 Java 程序代码,除使用开放接口,只要了解源码,就可以反射调用系统方法,为相应的业务服务,甚至可以通过反射调用, Hook 系统方法或者成员变量,更改系统的行为特性。因此,这可能导致不安全的行为出现。
Android P 版本最大、最严格的特性变更应该非 SDK 接口限制莫属了。非 SDK API 名单总共分为 3 类:浅灰名单( Light Grey List)、深灰名单( Dark Grey List)、黑名单( Dark List),详情如下。
浅灰名单: 可以访问的非 SDK 函数/字段。
深灰名单: 对于目标 SDK 低于 API 级别 28 的 App,允许使用深灰名单接口。对于目标 SDK 为 API 28 或更高级别的 App,行为与黑名单相同。
黑名单&#