【android源码情景】【phpstorm源码】【已知源码】android 分区 源码_android分区表

时间:2024-11-30 02:33:53 来源:手机新闻 源码 编辑:粉标溯源码

1.android 修改分区表情况的分分区OTA升级方案简介
2.Android——Android10的分区存储(Scoped Storage)
3.如何在adb shell下mount Android下的分区

android 分区 源码_android分区表

android 修改分区表情况的OTA升级方案简介

       在Android设备的分区表变更中,有多种方法实现OTA升级,区源包括QFIL、分分区fastboot和针对不同系统的区源android源码情景特定策略。首先,分分区QFIL升级直接替换所有镜像,区源无需过多解释。分分区对于NV数据备份,区源可通过工具如QCN backup或partition Manager进行,分分区也可通过configuration中的区源选项自动备份或选择保留特定分区。

       fastboot升级涉及刷写GPT,分分区phpstorm源码如果NV分区起始位置不变,区源数据可以保留,分分区但若位置变动,区源需要特殊处理。分分区一种设想是已知源码通过fastboot获取原NV地址,然后在aboot中实现数据迁移。然而,这在实践中还未实现。

       OTA升级根据系统类型(非AB和AB)有不同的处理。非AB系统允许较大自由度,源码无限可通过updater-script控制升级流程,包括GPT修改和NV备份。而在AB系统中,升级流程固定,由update_engine执行,源码分销安全性更高,但限制了自定义升级。AB系统的GPT修改需在干净的环境中进行,通常涉及替换recovery和GPT,可能需要两个OTA包和一个GPT文件。

       为了简化操作,可以考虑将AB系统的recovery设计成支持非AB和AB升级方式,或者在非AB模式下执行整个过程。然而,无论哪种方式,都需要注意风险,如升级中断可能导致设备故障,因此推荐熟练者操作。

       对于全盘和文件级加密的userdata,存在保护和调整空间的挑战,可能需要创新方法或在升级前进行特殊操作。至于emmc地址映射和底层开发中的安全问题,这些都是当前和未来可能探索的方向。

Android——Android的分区存储(Scoped Storage)

        在Android以前,只要程序获得了READ_EXTERNAL_STORAGE权限,就可以随意读取外部的存储公有目录。只要程序获得了WRITE_EXTERNAL_STORAGE权限,就可以随意在写入外部存储的公有目录上新建文件或文件夹

        于是Google在Android中提出了分区存储,意在限制程序对外部存储中公有目录的使用。

分区存储对内部存储私有目录和外部存储私有目录都没有影响

        简单来说就是,在Android中,

        使用分区存储的应用对自己创建的文件始终拥有读/写权限,无论文件是否位于应用的私有目录内,所以,如果应用仅保存和访问自己创建的文件,则无需请求获得READ_EXTERNAL_STORAGE或WRITE_EXTERNAL_STORAGE权限

        如果要访问其他应用创建的文件,则需要READ_EXTERNAL_STORAGE权限。并且仍然只能使用MediaStore提供的API或是SAF访问。

        这里需要注意的是,MediaStore提供的API只能访问图片、视频、音频,如果需要访问其它任意格式的文件,需要使用SAF,它会调用系统内置的文件浏览器供用户自主选择文件

        Android Q规定了App有两种存储空间模式视图:Legacy View、Filtered View

        系统通过下列方式确定App的运行模式:

        判断当前App运行的是什么模式,可以通过Environment提供的API进行判断

        MediaStore提供了下列几种类型的访问Uri,通过查找对应Uri数据,达到访问的目的。

        我们还可以使用getContentUri获取所有<volumeName>

        MediaProvider对于App存放到公共目录文件,通过ContentResolver insert方法中Uri来确定

        MediaStroe通过不同Uri,为用户提供了增、删、改方法,权限对应如下

        例如PDF,PDF为非媒体类文件,因此我们不能通过MediaStore来获取,对于这种其他类型的文件,一般使用SAF来让用户选择

        我们也推荐使用SAF让用户自己去创建,IntentAction为:ACTION_CREATE_DOCUMENT

        访问app-specific分为两种情况,一种是访问App自身App-specific目录,第二是访问其他App目录文件

        Android Q,App如果启动了Filtered View,那么只能直接访问自己目录的文件:

        App是FilteredView,其他App无法直接访问当前App私有目录,需要通过以下方法:

如何在adb shell下mount Android下的分区

       æ–¹æ³•ä¸€ï¼š

       ä½¿ç”¨df命令查看

       # df

       df

       Filesystem Size Used Free Blksize

       /dev M K M

       /mnt/asec M 0K M

       /mnt/obb M 0K M

       /system M M M

       /data M M M

       /cache M 4M M

       /HWUserData 2G K 2G

       /cust M M M

       /mnt/sdcard 7G M 6G

       /mnt/secure/asec 7G M 6G

       çœ‹åˆ°/system分区有MB的大小。

       æŽ¥ç€æŸ¥çœ‹/proc下的partitions

       # cat /proc/partitions

       cat /proc/partitions

       major minor #blocks name

        0 mmcblk0

        1 mmcblk0p1

        2 mmcblk0p2

        3 mmcblk0p3

        4 1 mmcblk0p4

        5 mmcblk0p5

        6 mmcblk0p6

        7 mmcblk0p7

        8 mmcblk0p8

        9 mmcblk0p9

        mmcblk0p

        mmcblk0p

        mmcblk0p

        mmcblk0p

        mmcblk0p

        mmcblk0p

        mmcblk0p

        mmcblk0p

        mmcblk0p

        mmcblk0p

        mmcblk1

        mmcblk1p1

        0 mtdblock0

       çœ‹å‡ºï¼Œåˆ†åŒºmmcblk的大小最接近MB,判断挂载点/system就对应该它了。

       ï¼ˆå…¶å®žï¼Œå¯ä»¥åœ¨/proc/mounts下面看的更直接。。。)

       äºŽæ˜¯ï¼Œè¾“入以下mount命令

       # mount -o remount,rw /dev/block/mmcblk0p /system

       å°±å¯ä»¥åœ¨/system下面进行写操作。

       å½“然,如果不打算重启机子的话,最好还是将它恢复到read only状态。输入:

       # mount -o remount,ro /dev/block/mmcblk0p /system

       è¯¥æ–¹æ³•æ¯”较麻烦的是还要判断某挂载点跟分区,理论上说必须要将它们对应上来,否则会出错。

       è€Œå®žé™…上试过将不同的分区跟挂载点remount一下,居然还是可以的。原因暂时不明。

       æ–¹æ³•äºŒï¼š

       è€ƒè™‘到上面用斜黑体字写的现象,尝试用其他信息代替”/dev/block/mmcblk0p“,试了一下居然也是可行的!

       ç›´æŽ¥è¾“入下列命令即可:

       # mount -o remount,rw mtd@system /system

       ç¬¬äºŒç§æ–¹æ³•è™½ç„¶ä¹Ÿæ˜¯å¯ä»¥çš„。之所以这么写是参考init.rc里面的mount写法。

       ä¸æ¸…楚这个是怎么回事,要是原生的linux mount命令应该不会这样的。

       update: .

       å…¶å®ž,没必要像上面方法一和方法二那么复杂.还可以更简单.只需要输入:

       # mount -o remount,rw /system

       å³å¯.

       linux系统自己会去维护一个已经mount的表.所以只需要输入现有的挂载点就行啦

copyright © 2016 powered by 皮皮网   sitemap