Skip to main content

Command Palette

Search for a command to run...

Android 系统的演化

Published
1 min read
  1. 隐私权限功能的加强,细分,

    1. 增加新的权限,比如剪贴板

    2. 拆分权限, 比如蓝牙(connect,scan,Advertise,也变成了运行时权限),图片的部分访问

    3. 细分权限,比如 audio, image, video,位置权限(coarse,fine,when,always 等等)

    4. 权限收紧,比如 默认拒绝设定精确的闹钟

    5. 安全的增强, WiFi 和 蓝牙的扫描次数的限制。 App 加入到某些 WiFi 网络,需要用户的同意。

    6. 静态申请权限,增加大到动态运行时权限

    7. 从之前的一次 grant,永久可以用,添加了只允许这次授予权限, 长时间 App 不使用,撤销 App 的权限

  2. 功能的增加: PIP 功能,多窗口的功能,折叠屏,通知的 UI 行为,Material You,剪贴板,应用启动,

  3. 对于开发者来说,搞出了 Android Jetpack 库,这些库都是对之前的系统的 API 的重构,或者再开发。UI 这块开发了 Jetpack Compose 响应式 UI库。此外还有对 SharedPreference 替换,采用了 DataStore。数据库开发了 Room 库。Camera 库给了 CameraX, Camera2 等库。 Audio 和 Video 添加了 Media 1, Media 2, media3 库,逐渐放弃了之前的 exoplayer 库。 添加了 in-app search 库。

  4. Jetpack 库添加了 coroutine 支持。这些大大增加了开发的便利性,提高了开发效率。

  5. Google play store 的政策的对隐私的不断收紧,提出了敏感权限的概念,限制 App 对敏感权限的申请。比如 READ_CALL_LOG,WRITE_CALL_LOG,PROCESS_OUTGOING_CALLS,READ_SMS,ACCESS_FINE_LOCATION,ACCESS_BACKGROUND_LOCATION,QUERY_ALL_PACKAGES,MANAGE_EXTERNAL_STORAGE,REQUEST_INSTALL_PACKAGES 等等. 短信,通话,查询 App 包,Sdcard 读写,位置权限等等。在 Google play store 里如果要使用这些权限,还需要在 Google play console 里说明这些权限的使用场景,并且录视频以证明。 在 Google play store 上面还把 App 的权限列出来的,以便告知用户,增加了透明性和用户同意。

  6. 性能优化这块,开发了新的工具 perfetto, Android 系统里添加了 System trace收集功能。添加了 macrobenchmark 和 microbenchmark 两个方案。 还有 CPU Profiler 和 Memory Profiler,Energy Profiler

  7. Material 发展了 Material 2, Material 3 (Material You),

  8. Android Studio 添加了 Profiler 工具,能分析内存,cpu,能耗,网络等等。 添加了 WiFi debug,扫二维码链接。

More from this blog

Android 优化的思考

虽然多层级的嵌套能带来性能问题,但是写起来的确很爽,而且结构上也比较清晰。在现在的 Android 手机上,View 的嵌套优化能带来多大的提升也是个问题,我个人认为这个优化在现在的手机上带来的提升的优化不大了。 除非你有很多过时的 Android 系统。当让你要写优化的部分的提升的性能有多少,拿出数据出来的时候,这点微墨的提升量,很难不让人怀疑是因为手机的 CPU 波动引起的。最实惠的优化方案还是 baseline profile 和 startup-profile 的方式。这个道理也适用于的...

Dec 8, 20231 min read

Android 开发的思考

Android 开发,对数据库的操作不是很大,绝大多数场景都可以用 SharedPreference,DataStore 都可以解决,数据库会给 Android App 带来复杂度,虽然大家现在用 Room ,减少了很多工作量。造成这个的原因,很多可能现在的 App 不联网不让用,并且本地数据很容易造成和服务器的不一致,最后到要在服务器上获取,那还要本地数据库干啥呢? 尽量使用 Jetpack 里的组件,这些是官方推荐的。无论在各个系统上的兼容性都是很好的。比如数据库用 Room,音视频使用 ...

Dec 8, 20231 min read
Android 开发的思考

Untitled Publication

5 posts