2024/2/16

Android Platform API, packages in api level

有關 Android 各版本提供的 api,可以查詢: 網頁左邊的panel,有一個 API level 的下拉選單,可以選 Api level
依照你選的 level 變更,不支援的 package 會變成灰色。
另外在每一個 package 的說明頁都會有 "Added in API level " 的標示。

api level 對應 Android OS version,android 10 之後:
Platform Version    API level
     14             34
     13             33
     12             32
                    31
     11             30
     10             29

另外,這個: Android OS core topics,左邊panel 的每個 item 都有列出每個feature 在 哪個 Android 版本開始實作。
太多了,每個都有細項可以看。


大概列一下每個版本新增的package api.

Android 14(level 34):
  • adservice : 不清楚,好想是open advertising id 供 ap 使用
  • documentid :
  • sdk sandbox : application sandbox 的 user api


有關 application 的 security, isolation,goole 有一篇說明從 android 5 到 android 10 的改進 -- app-sandbox:
  • In Android 5.0, SELinux provided mandatory access control (MAC) separation between the system and apps. However, all third-party apps ran within the same SELinux context so inter-app isolation was primarily enforced by UID DAC.
  • In Android 6.0, the SELinux sandbox was extended to isolate apps across the per-physical-user boundary. In addition, Android also set safer defaults for application data: For apps with targetSdkVersion >= 24, default DAC permissions on an app's home dir changed from 751 to 700. This provided safer default for private app data (although apps may override these defaults).
  • In Android 8.0, all apps were set to run with a seccomp-bpf filter that limited the syscalls that apps were allowed to use, thus strengthening the app/kernel boundary.
  • In Android 9 all non-privileged apps with targetSdkVersion >= 28 must run in individual SELinux sandboxes, providing MAC on a per-app basis. This protection improves app separation, prevents overriding safe defaults, and (most significantly) prevents apps from making their data world accessible.
  • In Android 10 apps have a limited raw view of the filesystem, with no direct access to paths like /sdcard/DCIM. However, apps retain full raw access to their package-specific paths, as returned by any applicable methods, such as Context.getExternalFilesDir().

其他的新功能還有 apk cached (freezer): cached-apps-freezer,加速 app 啟動時間。

大的功能是硬體的檢查: Android Health,一樣在每個android 版本有不同的實作。
一開始的brief:

Android 9 includes android.hardware.health HAL 2.0, a major version upgrade from health@1.0 HAL. This new HAL has the following advantages:
  • Cleaner separation between framework and vendor code.
  • Deprecates the unnecessary healthd daemon.
  • Greater degrees of freedom for vendor customization in health information reports.
  • More device health information than just battery.
Android 11 includes android.hardware.health HAL 2.1, a minor version upgrade from health@2.0 HAL. This new HAL has the following advantages:
  • Easier to implement
  • Better conformance with existing 2.0 HAL APIs
  • Better Treble separation in off-mode charging code
  • Better support for the framework to indicate the battery health of the device
Android 13 includes android.hardware.health AIDL HAL, a conversion from health@2.1 HAL. This new HAL has the following advantages:
  • Remove unused charger-related APIs
  • Remove unused StorageAttribute and related fields
  • Support dock charging.


Android 12 後:
新增 App Hibernation 功能。一段時間沒用的 app,會自動 release 他用的 memory 和 cache,把她放回 storage。
新增一個 memory monitor 的機制: MM Event -Historical Memory Statics

Android 14 新增一個 Power Mode : GAME.

沒有留言:

張貼留言