今天 Google 推送了 Android 10的正式版本,只需要两步,大家就可以愉快滴在 Android 10上玩耍了:
升级到最新的 Android 10.
装上太极。
Android 10有一些变化值得用户和开发者关注,其中某些特性是非常实用的,大概给大家列举下新系统有哪些新特性。
隐私增强
Android 10系统对隐私保护增强了许多,比如说:
普通应用再也无法获取IMEI和设备串号,也无法获取真实的mac地址。Google 终于推出了这一终极杀招,但是这个特性来的实在是太晚了;而且这一特性根本治不住国内毒瘤。比如说我上次全新安装抖音,没有给它任何权限,过了2天突然给我推送一个通知,直呼我的微信名,告诉我一个微信好友发布了新视频;细思恐极。
定位权限细分。现在多了一个“仅允许正在运行的app使用”,这个学的 iOS,非常实用。
限制后台程序启动界面。在 Android 10之前,经常出现这种情况:打开某个APP(比如知乎),然后立即压后台去了别的APP,过一会儿弹出了知乎的界面。这个在 Android 10上不会再出现了。
存储权限引入 Scoped Storage。不过这个只对 target API 为 29 以上的应用才生效,因此现在基本没什么用;不过算是一个比较好的起点吧。但是这个如果做得太过了,Android 就不好玩了。
除输入法外的普通应用无法在没有焦点的时候访问剪切板。这功能还算有用,现在有挺多app在后台复制支付宝的吱口令,这个应该可以避免。不过,按照国内app这尿性,以后是不是会多出一堆输入法应用?
系统增强
夜间模式。这功能其实早就该有了,但是不知道为什么 iOS 跟 Android 到现在才有,关键还在那一顿宣传。每次半夜打开手机,那可是亮瞎狗眼;然后荣耀手机自动亮度调节可真慢,过几秒才变暗,我已经瞎了。
系统全面屏手势。这个是真的方便,用了再也回不去了。
支持5G。大势所趋。
然后,Android 10 又或多或少地收紧了一些权限,开发者需要特别注意:
无法使用反射调用的非系统API进一步增多。这个嘛阻止了大厂滥用API 瞎搞,但是对太极这样的黑科技APP来说非常不友好。不过呢可以用我写的一个库绕过此限制,在 Android 10上目前也能用:https://github.com/tiann/FreeReflection
系统库位置发生变更。原本很多 /system/lib 目录下的库已经移到 /apex/下。这一点可能影响动态查找符号,特别地,bionic c 库和 linker 的路径发生变更,需要特别处理。
系统的可执行文件和共享库被映射为仅可执行内存,不可写也不可读,只能执行。这个是为了防止代码重用攻击。目前这个特性会影响太极在 Android 10上的表现,但是已经找到办法处理了,最新的太极在 Android 10上可以正常使用。
普通APP无法在自己的可写目录(比如数据目录/data/data/
调用 exec 执行可执行文件。这个也是一个安全性提升。不过这个特性不影响动态加载代码,也不影响你执行你自己的不可写目录下的文件(比如 /data/app/
/lib)。但这个对某些开发者工具影响比较大,比如有人在 Android 上编译 GO、Lua 或者使用 gcc 之类的,生成的目标文件就不可执行了。不过这个路不会堵死,不论用 proot 还是直接采用 QEMU 都能解决这个问题。
API target 29 的应用无法再使用匿名共享内存(ashmem)也无法通过 ioctl 系统调用控制ashmem,只能使用系统提供的 ASharedMemory。
API target 29 的应用无法再使用 dex2oat。系统也不会在应用程序进程调用 dex2oat。这个功能会影响太极的“优化”和“取消优化”,太极的初期比较依赖这功能,现在已经无关痛痒了。
类加载导致的 AOT 行为有部分变更:自定义classloader加载的类不会再被 AOT 编译,通过系统 classloader 加载的自定义dex只会在后台被编译。尤记得在 Android 5.0 ~ 7.0 时代,大家都在寻找“快速加载dex”的方法,想尽各种办法取消classloader的 AOT 过程。当时的支付宝 quinox 容器在启动阶段会加载数百个bundle,禁用dex2oat会极大提升启动速度和减少卡顿。不过 Android O以后引入 InMemoryDexClassLoader 让这个奇技淫巧落入了历史的尘埃,Android 10 引入的这个机制算是盖棺定论了。
ART性能优化。据说是改进了分代GC机制,对app速度估计没啥帮助,流畅度可能会提升一点。传闻隔壁 iOS13 app启动速度提升了 2 倍?
总的来说,Android 10 这次升级还算 OK。最后要提醒大家的是,太极最近有一些更新,其实是比较重要的,不过一直在瞎折腾也没跟大家提:
太极App 最好升级到 5.5.2,内部app的流畅度有非常大的提升。
面具模块最好升级到5.1.2,解决了Android 10上的一系列问题,并且引入了全局模式的排除名单。
下班回家!祝大家玩得开心!
领取专属 10元无门槛券
私享最新 技术干货