DSU侧载程序
一个简单的应用程序,旨在帮助用户通过DSU的Android功能轻松安装GSI。
要求
Android10或更高版本
解锁引导加载程序
具有动态分区的设备
您要使用的GSI!
社区GSI:https://github.com/phhusson/treble_experimentations/wiki/Generic-System-Image-%28GSI%29-list
谷歌GSI:https://developer.android.com/topic/generic-system-image/releases
*请记住使用与您的架构、vndk实现兼容的GSI。
如何使用?
安装软件
首次打开时,需要给某个文件夹赋予读/写权限,新建一个文件夹并允许访问
*此文件夹将用于存储临时文件,例如从压缩文件中提取的GSI)
选择要安装的GSI
**接受的格式是:gz、xz、img和zip(仅限DSU包)
您可以根据需要自定义安装
*就像改变动态系统的用户数据大小
*不建议更改gsi文件大小(让应用程序自动执行)
点击“安装”
等到完成! (可能需要一些时间)
完成后,下一步可能会有所不同:
如果启用了内置安装程序,则不需要额外的步骤。
当禁用内置安装程序时,在root/system/shizuku操作模式下,会出现DSU屏幕,提示您确认安装,之后,检查您的通知,DSU应该开始安装GSI。
在ADB运行模式下,系统会提示您在adb中运行命令,运行后会出现DSU屏幕要求您确认安装,之后DSU应开始安装GSI。
动态系统准备就绪后,您可以通过通知启动它,或者,如果支持操作模式,则直接从我们的应用程序启动。
有关更多使用信息,您可以查看操作模式
操作模式
DSUSideloader支持多种操作模式,它们将定义我们的应用程序将如何工作,而且,操作模式是自动获取的,目前无法手动更改,选择的操作模式将是最好的(优先级已写下面,其中,支持的功能最多,数量最多,最基本的数量最少)。
ADB:其他模式不可用时的默认操作模式
仅准备要通过DSU系统应用程序安装的选定图像
需要adb命令开始安装(这将调用DSU系统应用程序来安装准备好的文件)
Shizuku:使用Shizuku运行应用程序时(授予Shizuku权限时获得)
与ADB相同,但不需要运行任何adb命令
支持跟踪安装进度123
支持安装诊断(如果检测到常见错误,它可能会为您提供有用的信息)13
Root:以root权限运行app时(用户授予root权限时获取)
然而,Shizuku中可用的所有功能不需要任何特殊权限
DynamicSystemAPI功能(检查是否安装了DSU,重新启动到DSU,丢弃...,直接从应用程序获取所有内容)
支持内置DSU安装程序??
系统模式:作为系统应用程序运行时(通过安装我们的Magisk模块获得)
Shizuku中可用的所有功能
修复了一些常见的gsi/dsu相关SELinux拒绝
自定义gsid二进制文件(可以修复某些设备中的一些安装错误??
系统/根模式:当以具有授予根权限的系统应用程序运行时(通过安装我们的Magisk模块并授予根权限获得)
在root和系统操作模式下可用的所有功能
1需要READ_LOGS权限。
2部分支持Android10和11。
3Android13需要“一次性日志访问”。
?Android10不支持该功能。
?实验性功能,内置安装程序代码在这里。
?包含自定义gsid二进制文件的模块是可选的,可以在此处找到对AOSPgsid二进制文件所做的更改。
建议
对于非root设备,Shizuku是一种非常好的操作模式,它支持大多数功能,没有麻烦,但是,您需要在您的设备中安装和设置Shizuku应用程序。
对于获得Root权限的设备,Root操作模式对大多数人来说已经足够了。
如果您在使用DSU功能时遇到问题,请使用System/Root。
通过Magisk获得Root的设备应该运行Magiskv24或更高版本,旧版本可能会破坏DSU功能。
我们强烈建议将此应用程序与StockROM一起使用,一些自定义ROM版本也可能工作正常。
常见问题
DSU安装完成且没有错误,但设备无法启动到已安装的DSU,我该怎么办?
很可能是AVB阻止设备启动已安装的映像,请尝试刷新已禁用的vbmeta,检查此以获取更多信息。
为什么不能设置高用户数据值?
你有更多的存储空间,你可以使用更多的用户数据,一些Android版本限制允许分配的最大值(这个限制是40%,而不是我们的应用程序限制,这是Android本身的事情,你可以使用我们的自定义gsid二进制文件,将此限制减少到20%,可以消除它,但不知道是否有任何影响,所以,我只是决定减少它)。
为什么存在“卸载SD”选项?
如果可用,DSU会优先在sdcard中分配,但在某些情况下不支持在sdcard中分配(这可能取决于sd上存在的文件系统,以及操作系统本身是否允许在SD中分配),因为在SD中分配可能会导致安装错误在某些设备中,该选项用于在设备存储中强制分配。
为什么内置安装程序需要root?
因为它使用Android的内部DynamicSystemAPI,需要“MANAGE_DYNAMIC_SYSTEM”,这是一个签名保护级别,所以绕过它的便捷方法是使用root。 shell(2000)有“INSTALL_DYNAMIC_SYSTEM”,它可以调用DSU系统应用程序(这个有“MANAGE_DYNAMIC_SYSTEM”)来安装图像。
更新怎么样?
我们的应用程序带有更新程序,您可以在“关于”部分查看更新。
其他问题? 问题?
随意发起一个问题,为了排查问题,不要忘记发送日志(日志可以在安装阶段获取,直接在应用程序上获取,当操作模式支持安装诊断时)。
关于DSU
DSU(动态系统更新)是Android10上引入的一项功能,它允许开发人员在不触及当前系统分区的情况下启动GSI,这是通过创建新分区来保存GSI和单独的用户数据来完成的,以便在需要时启动它们。
不幸的是,DSU依赖于动态分区(您的设备需要支持,否则将无法工作),并且大多数GSI需要解锁的引导加载程序才能正常引导(因为只有OEM签名的GSI才可以在锁定的引导加载程序上引导)。
GSI可以通过DSU安装,无需root访问权限,使用ADB,运行一些命令,您可以在此处阅读有关安装过程的更多信息:https://developer.android.com/topic/dsu
安装完成后,Android会创建一个持久通知,允许您启动到“动态系统”(通过DSU安装的GSI),并且您可以启动到已安装的GSI,而无需触及系统分区或破坏“真实用户数据”分区。
启动DynamicSystem后,您可以尝试和测试任何您想要的,当您需要切换回设备的原始系统映像时,您需要做的一切,只是简单的重启!
在进行长时间测试时,可能需要多次重启,这可能会很痛苦,但是可以启用“粘性模式”,强制执行动态系统,而不是设备的原始系统映像,一旦测试完成,您可以禁用粘性模式并返回到原始系统映像。
这基本上是对DSU的快速解释,一个惊人的功能,就像一个“双启动”解决方案,有限,但是非常安全(因为不会修改只读分区,如果GSI不启动,只需简单重启将使您返回到原始设备的系统映像)。
您可以在此处阅读有关DSU的更多信息:https://source.android.com/devices/tech/ota/dynamic-system-updates
如何启用粘滞模式?
重新启动到动态系统,并且:
在adb上使用此命令:adbshellgsi_toolenable
或者从本地adbshell:gsi_toolenable
或来自本地有根shell(例如,有根GSI上的Termux):su-c'gsi_toolenable'
启用粘滞模式后,设备将始终启动到动态系统,而不是设备的原始系统映像。
要禁用,请使用相同的命令,而不是enable,利用disable
其他
对于翻译人员,我们现在有一个Crowdin,请随时发送您的翻译:
https://crowdin.com/translate/dsu-sideloader/
制作的应用程序图标WSTxda
模块以高权限运行,错误模块可能导致无法开机。请保留可用的 Recovery 与近期备份。
讨论区(0)
提交我的评价