Android Q lunch device刷R system.img后,发现其多了个system_ext分区。
列表如下:

TPro:/ # ls -ltotal 65dr-xr-xr-x  37 root   root          0 2020-04-26 10:45 acctdrwxr-xr-x  48 root   root        960 2020-04-26 10:45 apexlrw-r--r--   1 root   root         11 2020-04-18 12:30 bin -> /system/binlrw-r--r--   1 root   root         50 2020-04-18 12:30 bugreports -> /data/user_de/0/com.android.shell/files/bugreportsdrwxrwx---   6 system cache      4096 2019-01-01 00:00 cachedrwxr-xr-x   4 root   root          0 1970-01-01 00:00 configlrw-r--r--   1 root   root         17 2020-04-18 12:30 d -> /sys/kernel/debugdrwxrwx--x  47 system system     4096 2020-04-26 10:46 datadrwx------   5 root   system      100 2020-04-26 10:45 data_mirrordrwxr-xr-x   2 root   root       4096 2020-04-18 10:42 debug_ramdisklrw-------   1 root   root         23 2020-04-18 12:30 default.prop -> system/etc/prop.defaultdrwxr-xr-x  25 root   root       4820 2020-04-26 10:45 devlrw-r--r--   1 root   root         15 2020-04-18 12:30 dsp -> /vendor/lib/dsplrw-r--r--   1 root   root         11 2020-04-18 12:30 etc -> /system/etclrw-r--r--   1 root   root         20 2020-04-18 12:30 firmware -> /vendor/firmware_mntlrwxr-x---   1 root   shell        16 2020-04-18 12:30 init -> /system/bin/init-rwxr-x---   1 root   shell      2362 2020-04-18 10:42 init.environ.rcdrwxr-xr-x   9 root   root        200 2020-04-26 10:45 linkerconfigdrwx------   2 root   root      16384 2020-04-18 12:30 lost+founddrwxr-xr-x   9 root   root       4096 2019-12-31 20:13 metadatadrwxr-xr-x  17 root   system      360 2020-04-26 10:45 mntdrwxr-xr-x   1 root   root       3488 2020-04-26 10:37 odmdrwxr-xr-x   9 root   root       4096 2020-04-17 16:48 oemlrw-r--r--   1 root   root         19 2020-04-18 12:30 persist -> /mnt/vendor/persistdr-xr-xr-x 578 root   root          0 1970-01-01 00:00 proclrw-r--r--   1 root   root         15 2020-04-18 12:30 product -> /system/productdrwxr-xr-x   3 root   root       4096 2020-04-18 10:42 reslrw-r--r--   1 root   root         21 2020-04-18 12:30 sdcard -> /storage/self/primarydrwx--x---   4 shell  everybody    80 2020-04-26 10:45 storagedr-xr-xr-x  15 root   root          0 2020-04-26 10:45 sysdrwxr-xr-x   1 root   root       3488 2020-04-26 10:37 systemlrw-r--r--   1 root   root         18 2020-04-18 12:30 system_ext -> /system/system_extdrwxr-xr-x   1 root   root       3488 2020-04-26 10:37 vendorTPro:/ # 

其中Settings.apk和SystemUi.apk就存在在该区域。

TPro:/data/system # cat packages.xml | grep -i com.android.settings                                                                                                         TPro:/data/system # 

/system/system_ext/priv-app/Settings/Settins.apk

为此,Settings模块android.bp还特意指定了模块安装分区, 利用标签:system_ext_specific:

platform_compat_config {    name: "settings-platform-compat-config",    src: ":Settings-core",    system_ext_specific: true,}android_app {    name: "Settings",    platform_apis: true,    certificate: "platform",    system_ext_specific: true,    privileged: true,    required: [        "privapp_whitelist_com.android.settings",        "settings-platform-compat-config",    ],    static_libs: ["Settings-core"],    resource_dirs: [],    optimize: {        proguard_flags_files: ["proguard.flags"],    },}

说其是分区吧,AOSP代码编译出来的结果似乎不像product分区和odm分区那样有有个product.img和odm.img, 并没看到system_ext.img.

Android R system_ext动态扩展分区_第1张图片

我们从官网AOSP官网动态分区相关表述来看,这就是个分区。

Android R system_ext动态扩展分区_第2张图片

Android R system_ext动态扩展分区_第3张图片

 

在这篇文章里,没有过多的针对性表述,怎么一个机制,怎么用?

大胆猜测了下,这就是Android R才引入的动态分区定制概念,和odm分区类似用法,为了应对单个项目满足不同多样的需求而进一步完善的动态定制型框架。

Android R system_ext动态扩展分区_第4张图片

 

最后贴一个system_ext放置的内容树.

system/system_ext/├── apex│   ├── com.android.adbd│   │   ├── apex_manifest.pb│   │   ├── apex_pubkey│   │   ├── bin│   │   ├── etc│   │   ├── lib│   │   └── lib64│   ├── com.android.art.debug│   │   ├── apex_manifest.pb│   │   ├── apex_pubkey│   │   ├── bin│   │   ├── etc│   │   ├── javalib│   │   ├── lib│   │   └── lib64│   ├── com.android.cellbroadcast│   │   ├── apex_manifest.pb│   │   ├── apex_pubkey│   │   └── priv-app│   ├── com.android.conscrypt│   │   ├── apex_manifest.pb│   │   ├── apex_pubkey│   │   ├── bin│   │   ├── etc│   │   ├── javalib│   │   ├── lib│   │   └── lib64│   ├── com.android.extservices│   │   ├── apex_manifest.pb│   │   ├── apex_pubkey│   │   └── priv-app│   ├── com.android.i18n│   │   ├── apex_manifest.pb│   │   ├── apex_pubkey│   │   └── etc│   ├── com.android.ipsec│   │   ├── apex_manifest.pb│   │   ├── apex_pubkey│   │   ├── etc│   │   └── javalib│   ├── com.android.media│   │   ├── apex_manifest.pb│   │   ├── apex_pubkey│   │   ├── etc│   │   ├── javalib│   │   └── lib64│   ├── com.android.mediaprovider│   │   ├── apex_manifest.pb│   │   ├── apex_pubkey│   │   ├── etc│   │   ├── javalib│   │   └── priv-app│   ├── com.android.media.swcodec│   │   ├── apex_manifest.pb│   │   ├── apex_pubkey│   │   ├── bin│   │   ├── etc│   │   └── lib64│   ├── com.android.neuralnetworks│   │   ├── apex_manifest.pb│   │   ├── apex_pubkey│   │   ├── lib│   │   └── lib64│   ├── com.android.os.statsd│   │   ├── apex_manifest.pb│   │   ├── apex_pubkey│   │   ├── bin│   │   ├── etc│   │   ├── javalib│   │   ├── lib│   │   └── lib64│   ├── com.android.permission│   │   ├── apex_manifest.pb│   │   ├── apex_pubkey│   │   ├── javalib│   │   └── priv-app│   ├── com.android.resolv│   │   ├── apex_manifest.pb│   │   ├── apex_pubkey│   │   └── lib64│   ├── com.android.runtime│   │   ├── apex_manifest.pb│   │   ├── apex_pubkey│   │   ├── bin│   │   ├── lib│   │   └── lib64│   ├── com.android.sdkext│   │   ├── apex_manifest.pb│   │   ├── apex_pubkey│   │   ├── bin│   │   ├── etc│   │   └── javalib│   ├── com.android.tethering│   │   ├── apex_manifest.pb│   │   ├── apex_pubkey│   │   ├── javalib│   │   └── priv-app│   ├── com.android.tzdata│   │   ├── apex_manifest.pb│   │   ├── apex_pubkey│   │   └── etc│   ├── com.android.vndk.current│   │   ├── apex_manifest.pb│   │   ├── apex_pubkey│   │   ├── etc│   │   ├── lib│   │   └── lib64│   ├── com.android.vndk.v28│   │   ├── apex_manifest.pb│   │   ├── apex_pubkey│   │   ├── etc│   │   ├── lib│   │   └── lib64│   ├── com.android.vndk.v28.apex│   ├── com.android.vndk.v29│   │   ├── apex_manifest.pb│   │   ├── apex_pubkey│   │   ├── etc│   │   ├── lib│   │   └── lib64│   ├── com.android.vndk.v29.apex│   └── com.android.wifi│       ├── apex_manifest.pb│       ├── apex_pubkey│       ├── app│       ├── etc│       ├── javalib│       └── priv-app├── bin│   └── stagefright├── build.prop├── etc│   ├── compatconfig│   │   └── settings-platform-compat-config.xml│   ├── group│   ├── init│   │   ├── config│   │   └── init.gsi.rc│   ├── NOTICE.xml.gz│   ├── passwd│   ├── permissions│   │   ├── com.android.carrierconfig.xml│   │   ├── com.android.emergency.xml│   │   ├── com.android.launcher3.xml│   │   ├── com.android.provision.xml│   │   ├── com.android.sdksetup.xml│   │   ├── com.android.settings.xml│   │   ├── com.android.storagemanager.xml│   │   └── com.android.systemui.xml│   ├── selinux│   │   └── system_ext_sepolicy_and_mapping.sha256│   └── vintf│       └── manifest.xml├── lib64│   └── libemulator_multidisplay_jni.so└── priv-app    ├── CarrierConfig    │   └── CarrierConfig.apk    ├── EmergencyInfo    │   └── EmergencyInfo.apk    ├── Launcher3QuickStep    │   └── Launcher3QuickStep.apk    ├── MultiDisplayProvider    │   ├── lib    │   └── MultiDisplayProvider.apk    ├── Provision    │   └── Provision.apk    ├── SdkSetup    │   └── SdkSetup.apk    ├── Settings    │   └── Settings.apk    ├── StorageManager    │   └── StorageManager.apk    ├── SystemUI    │   └── SystemUI.apk    └── WallpaperCropper        └── WallpaperCropper.apk104 directories, 74 files

/system/system_ext/etc/vintf/manifest.xml

Android R system_ext动态扩展分区_第5张图片

更多相关文章

  1. Android手机开发:图片的放大和缩小显示ImageView
  2. android拼接多张bitmap图片
  3. 【android开发】之【android动态布局方法总结】
  4. android利用OpenGLES开发动态壁纸用到的GLWallpaperService类
  5. Android自动播放图片功能实现
  6. Android动态设置View的位置和大小
  7. Android Glide设置图片圆角,亲测有效
  8. ANDROID图片压缩代码

随机推荐

  1. Android布局(序章)
  2. Android异步下载网络图片(其一)
  3. Android ROM的创建和烧录
  4. Android(安卓)Activity的生命周期
  5. android资料--Android通过手势(多点)缩放和
  6. android 当系统存在多个Launcher时,如何设
  7. Android 开发环境入门
  8. android mtk6592 禁止拖动主界面图标
  9. android touch事件解析
  10. Hybrid(在Android中的实现)