main
sudoskys 2022-08-15 02:20:58 +08:00
parent e73f3dd839
commit 5591e80910
No known key found for this signature in database
GPG Key ID: A7639CE0C4D18C1B
53 changed files with 12933 additions and 715 deletions

17
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,17 @@
name: ci
on:
push:
branches:
- master
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 3.x
- run: pip install mkdocs-material
- run: mkdocs build
# - run: mkdocs gh-deploy --force

121
docs/about.md Normal file
View File

@ -0,0 +1,121 @@
## 社区
[Fiime :fontawesome-solid-paper-plane:](https://fiime.cn/){ .md-button }
[Fiime](https://fiime.cn/)
[Magisk](https://forum.xda-developers.com/f/magisk.5903/)
[AKR社区](https://www.akr-developers.com/)
## [Magisk](https://github.com/topjohnwu/Magisk)
使用任何模块之前请考虑格机风险。模块推荐请自己查社区(酷安等)
### 资源分享
[刷机资源](https://kamiui.ml/E52shuaji/)
[插件仓库-FiimeROM](https://mi.fiime.cn/libcangku)
[Magisk 资源分享](https://shuajinet.com/)
[Magisk仓库模块](http://tx48.top/)
### 社区模块库
[Magisk Modules Repository - Androidacy](https://www.androidacy.com/magisk-modules-repository/?utm_source=old-repo-link&utm_medium=web&utm_campaign=redirects)
## [LSPosed](https://github.com/LSPosed/LSPosed)
> LSPposed是一个模块框架可以在不接触任何APK的情况下更改系统和应用程序的行为。这意味着模块可以适用于不同的版本甚至ROM而无需任何更改只要原始代码没有更改太多。它也很容易撤消。由于所有更改都在内存中完成因此您只需停用模块并重新启动即可恢复原始系统。
>
请使用Zygiskriru已经停止维护。如果你使用Zygisk那么Riru就无法使用这样的话Lsposed也无法使用。不过Lsposed已经推出了Zygisk版本。Zygisk模式下用Shamiko模块的白名单模式真的是yyds。就是默认全局对所有应用隐藏Root除了超级用户授权过的应用可以获得Root权限其他新装软件都完全请求不到和检测到Root。低于安卓9的版本的Miui不要开启Zygisk模式亲测卡米
[MagiskHide没了Zygisk又是啥](https://www.bilibili.com/read/cv14287396)
[LSPosed第三期 - Riru版和Zygisk版安装使用指南【手机改造计划】](https://www.bilibili.com/read/cv17028007)
[GitHub - LSPosed/LSPosed: LSPosed Framework](https://github.com/LSPosed/LSPosed)
[Xposed-Modules-Repo](https://github.com/Xposed-Modules-Repo)
[LSPosed](https://t.me/s/LSPosed)
下载模块后,在面具的设置中开启 Zygsik同时在模块中从本地安装 LSposed。重启设备桌面就新增 LSPosed 的APP。
## 安全验证^7
Google 那边已经给开发者提供了一个基于 SafetyNet 认证的反盗版功能anti-piracy feature开发者如果使用这套机制那么已经 root、无法通过 SafetyNet 认证的设备就没办法在 Play 商店搜索、下载和更新对应的 App。
SafetyNet 是 Google 移动服务套件的功能,这意味着,只有装有 GMS 并且应用调用了相关接口的情况下,我们才需要通过 SafetyNet 验证。逃避国内应用的 root 检测大部分情况下并不需要通过 SafetyNet 认证,只要使模块和 Magisk 不对这些应用生效即可,无需在意 SafetyNet 结果。
推荐 [YASNAC](https://play.google.com/store/apps/details?id=rikka.safetynetchecker)。下载此软件,然后进行一次测试,我们便知道自己的设备是否启用了基于硬件的安全验证。
留意 `evaluationType` 一项的结果,根据前文的解释,若此结果为 `basic`,则意味着没有启用基于硬件的安全验证,若此结果为 `hardware`,则增强安全验证已经启用。
如果选项为 `basic`,我们可以:
• 开启 Zygisk使用排除列表将需要的应用添加进排除列表中依照前面的说法排除列表中的应用是不受 Magisk 影响的,并且由于系统没有基于硬件的安全验证,此时设备仍然可以通过 SafetyNet然而**其代价是所有模块在此应用上均无效果**
Zygisk模式下用Shamiko模块的白名单模式真的是yyds。就是默认全局对所有应用隐藏Root除了超级用户授权过的应用可以获得Root权限其他新装软件都完全请求不到和检测到Root配置教程请读
[图文分享](https://www.coolapk.com/feed/37950576)
附:
[](https://play.google.com/store/apps/details?id=rikka.safetynetchecker)
[Shizuku](https://shizuku.rikka.app/zh-hans/)
### 附录
[^1]:**所需资料打包**<https://push.dianas.cyou/LIS/Share/Root/>
[^2]: ****root、刷rec、rom通用教程<****[sudo0m.github.io/2022/05/29/root、刷rec、rom通用教程/](http://sudo0m.github.io/2022/05/29/root%E3%80%81%E5%88%B7rec%E3%80%81rom%E9%80%9A%E7%94%A8%E6%95%99%E7%A8%8B/)****>****
[^3]:[Android 玩家必备神器入门:从零开始安装 Magisk - 少数派 (sspai.com)](https://sspai.com/post/67932)
[^4]:Magisk官方教程<[https://topjohnwu.github.io/Magisk/](https://topjohnwu.github.io/Magisk/)>
[^5]:Magisk官方论坛<[https://forum.xda-developers.com/f/magisk.5903/](https://forum.xda-developers.com/f/magisk.5903/)>
[^6]:[每个 Android 玩家都不可错过的神器Magisk 初识与安装 - 少数派 (sspai.com)](https://sspai.com/post/53043)
[^7]:[Android 玩机「神器」的矛盾与新生Magisk Canary 更新详解 - 少数派 (sspai.com)](https://sspai.com/post/69945)
[^8]:**Root隐藏教程**[图文分享 - 酷安 (coolapk.com)](https://www.coolapk.com/feed/37950576)
[^9]:**酷安MiaoHan 的专栏** [https://www.coolapk.com/feed/32286938](https://www.coolapk.com/feed/32286938)
[^10]:[APKMirror - Free APK Downloads - Free and safe Android APK downloads](https://www.apkmirror.com/)
[^11]:[Clash For Magisk简介 - CFM (adlyq.ml)](https://docs.adlyq.ml/)
[^12]:****小米手機各種刷機方式的疑問?**** [https://www.mobile01.com/topicdetail.php?f=634&t=3725269](https://www.mobile01.com/topicdetail.php?f=634&t=3725269)
[^13]:****[通过 ADB 给手机刷入第三方 Recovery](https://blog.linioi.com/posts/8/)****
[^14]:****小米如何刷入第三方Recovery**** [https://zhuanlan.zhihu.com/p/428730333](https://zhuanlan.zhihu.com/p/428730333)
[^15]: 告诉大家如何防止掉基带问题 [https://www.coolapk.com/feed/21305538](https://www.coolapk.com/feed/21305538)
[^16]:酷安Rannki原创 [https://www.coolapk.com/feed/21305538](https://www.coolapk.com/feed/21305538?shareKey=NWMzMGQxYTU4OWMwNWZlNzJjZTc~&shareUid=1294855&shareFrom=com.coolapk.market_10.5.3)
[^17]:常识基础 [https://mi.fiime.cn/tutorial](https://mi.fiime.cn/tutorial)
[^18]:**刷入原生ROM的通用教程等教程** [https://fiime.cn/thread/359](https://fiime.cn/thread/359)
[^19]:****[Violet 机型 PE/Plus 刷入教程](https://blog.linioi.com/posts/10/)****
[^20]:****[如何在 Redmi Note 7 Pro 上刷机?](https://blog.linioi.com/posts/11/)****
[^21]:[https://wiki.pchelper666.com/底层刷机教程](https://wiki.pchelper666.com/%E5%BA%95%E5%B1%82%E5%88%B7%E6%9C%BA%E6%95%99%E7%A8%8B)
[^22]:**高通9008线刷救黑砖教程** [https://www.bilibili.com/read/cv15031395/](https://www.bilibili.com/read/cv15031395/)

344
docs/better.md Normal file
View File

@ -0,0 +1,344 @@
因为在Google加强安全性之前SuperSU 一直有效,直到 Android Marshmallow 出现。修改系统分区会向尝试检测根目录的应用发送红色标记。
Google SafetyNet是一个用于监视系统的API如果检测到篡改它将阻止某些应用程序运行。您不能将Google Pay或Netflix与SuperSU一起使用。修改系统后用户不会获得任何 OTAOver The Air Updates 无线下载 )更新 。
所以现在,只讲 Magisk
## **升级系统时 Magisk 的保留**
安装了 Magisk 后记得关掉系统的自动更新。有更新的时候,写点卸载 Magisk > 还原原厂镜像,不重启。就能正常进行 OTA。A/B 分区的设备可以保留 Magisk 更新。
如果没有第三方rec的情况下有两种办法[^23]
1. 如果你是vab机型不知道你是不是vab机型的话去面具里面点安装看看有没有安装到未使用槽位的选项有就是vab机型没有则不是vab机型接着往下看
2. 点击系统更新,在下载完升级包以后,不要立马点安装或者重启,这个时候打开面具,关闭所有模块,点安装到未使用槽位,安装好以后提示你重启不要去点,打开系统更新,点重启或者安装,重启手机即可成功
再说说有第三方rec的方法
1. twrp为例下载全量升级包先关闭所有模块去rec设置里面勾选升级后重装twrp升级后用Magisk修补boot等选项点安装选择升级包以后把这三个勾都打勾升级即可开机拥有权限所有需要打勾的参考下图有些机型可能无法直接去修补自行测试吧有一定风险损失数据如果不愿意冒险就选择另一种方法
2. 也可以只勾选重装twrp升级好了之后再刷入面具的卡刷包就好了有些twrp自带面具的直接去高级里面安装Magisk就可以了。
目前各大品牌的旗舰手机均采用A/B架构即同时有两套系统共存、其中一个作为备份、共用一份用户数据。这就为我们升级系统提供了极大的便利。当我们安装更新后在重启手机以前新的系统将作为备份系统存在这时我们可以利用现有系统仍保留的root权限修改备份系统的分区刷入 Magisk 。
不支持的话,只能按[这篇文章](https://sspai.com/post/53075)的方法 OTA 之后重新刷一次 Magisk。
[文章AB分区保留面具升级系统](https://mi.fiime.cn/Dtech/65.html)
### **具体步骤**
关闭系统自动更新。设置-系统-开发者选项。
下载更新并安装更新。此时会提示检测到root需要下载全量包为正常现象。
!!! warning
待其安装好后千万不要重启否则你Magisk就没了又得重装一遍。
这时候打开Magisk Manager。卸载-还原原厂镜像。安装-安装-安装到未使用的槽位OTA后
接着按提示重启即可。重启完成后系统应该是新系统Magisk应该还在。
[Redmi K50 ROOT刷Magisk面具教程](https://zhuanlan.zhihu.com/p/507103088)
## 突发救砖
---
1. 刷机包与手机自带的BOOT版本不匹配这个时候只需要从ROM包里提取boot.img文件单刷然后再重新刷机就好了。
2. 刷完后卡在第一屏或重启,可以进 RECOVERY 里面双WIPE (**清除手机数据) 之后再刷机就可以解决问题**一些ROM包会提示不用WIPE但如果你出现上述情况也可以双WIPE试试。
3. 如果你实在不行了,那么准备好保存好的原始 boot.img 和 vbmeta.img 刷入。
!!! note
因为未知原因导致安装失败也不要怕,操作中你应该保留了一份原来的镜像,按照最后一步的方法将原来的镜像重新刷回去就能正常开机。**
### 防护策略
- 安装 MM管理器 或 自动神仙救砖 插件
- 备份 Root 后的系统
移除模块重新开机
而如果你因为安装了未知模块而翻车无法顺利进入系统,请先冷静下来:解决此类问题有一个万能的命令`adb wait-for-device shell magisk --remove-modules`,此条指令将会在手机启动过程中生效。
### **MTK恢复**
如果移除模块仍然无法开机刷入系统备份上文MTK提到了
自救命令使用mtkclient写入备份的镜像
`python mtk wl out`
## 系统分区解锁
现在几乎所有手机都不能动 system.
需要安装模块才能修改 system.
## 小米刷原生
刷机有风险 如果不会刷还请不要刷
### 刷底包
首先要解锁手机BL锁 。
解锁完下载MIUI系统底包 必须要和类原生安卓版本一样 安卓9=安卓9 安卓10=安卓10请前往官网或者mi.fiime.cn下载相对应的系统底包然后参考上面的教程刷第三方REC。
刷完第三方rec会自动进入 进去之后把下载好的底包移动到手机里面进入清除 把按钮滑到右边 双清完再刷系统点击安装 选择下载好的底包 有个滑动按钮 滑到右边就开始刷了 记住 钩子不要勾
### 通用教程
刷完底包后请不要清除任何东西
请直接刷完底包接着刷原生ROM包
刷完,返回主页面 。
进入清除 格式化Data分区 。输入yes 三清就可以重启手机了。
**注意:如果不格式化DATA可能导致卡开机动画且无法连接电脑读盘**
三清:Dalvik/ART CacheCacheData刷机前基本上必选三清目的是新系统的兼容性达到最佳。
进入系统如果有谷歌验证的话 过不了建议格frp锁。
[如何跳过Google开机设置/验证/向导](https://atmb.top/guide/advanced/jump_google/)
> 或者刷入[https://mi.fiime.cn](https://mi.fiime.cn/) 的跳过包?
>
💡 第三方rec需要选择和安卓版本一样的包如果无限重启REC 请尝试刷入一次
## 隐藏 Root
!!! warning
Riru 已经停止维护,所以本节只讲 Zygisk
****ROOT目前主流的检测方法****
1、检查常用目录是否存在su
2、使用which命令查看是否存在su
3、主动申请root权限
4、执行busybox
5、访问私有目录如/data目录查看读写权限
6、读取build.prop中关键属性如ro.build.tags和ro.build.type
7、检查市面主流的模拟器
8、检测frida、xposed等Hook框架的特征
!!! tip "注意"
本节内容部分都是 @MiaoHan 的 酷安专栏内容。
### 开启 Zygisk 的面具
如果你现在用的阿尔法(Alpha)版面具,开了 MagiskHide 功能,要先关闭 MagiskHide 功能然后开启Zygisk才能用本期教程的方案。(Hide不是过时了吗)
**不管哪一个版本只开启Zygisk不要开启遵守排除列表**
开启Zygisk后要重启手机Zygisk才能生效。
**如果**你每次打开面具它都会提示“检测到不属于Magisk的su文件”对于这种情况你一定要安装一个名为“隐藏系统root”的面具模块文件包里有或者删除system\xbin目录下一个名为“su”的文件。我建议你安装模块不建议你删除su文件。因为个别系统System只读删不掉此文件。个别系统删掉开机也会自动恢复。
!!! danger
**如果没提示这个不要试图安装“隐藏系统root”模块。**
刷了这个“隐藏系统root”模块会导致Momo提示找到Magisk但是影响不大更不会影响隐藏root。我个人建议如果不是强迫症建议不要在意这个了。如果你是MIUI开发版系统比较在意Momo的提示想让Momo不提示找到Magisk那么你需要重刷一遍当前开发版系统(重刷系统这一步是为了关闭系统自带的root)。重刷完不要打开系统自带的root不能用面具接管系统root的方式刷面具你应该用第三方recovery或者修补boot的方式刷入面具。
### 面具随机包名
面具设置里找到“隐藏Magisk应用”选项点开会跳出一个对话框。这个对话框里已经有默认名称“Settings”你可以把它删掉并输入你喜欢的名字。比如我输入MiaoHan点确定就不用管它了它最后会自动跳转到新生成的面具界面里。期间无论跳转什么界面你只需要点确定或者允许就行了。面具随机包名成功后会看到原来的面具消失桌面出现新生成的面具“MiaoHan”。如果随机包名失败或者“隐藏Magisk应用”一直转圈圈那么你需要使用代理隧道。
!!! help
如果面具随机包名后,出现 “ 还原Magisk 应用”的提示,重启一下手机就好了。**不用点安装,只需重启一遍手机。**
### SHamiko
一个面具模块可以在面具开启Zygisk的情况下实现类似于MagiskHide的隐藏root效果可以对应用隐藏Magisk、Zygisk本身和二进制文件“su”。你可以把它简单理解为就是隐藏root的模块。
### 安装 Momo APP检查情况
打开面具右上角点击齿轮进入面具设置界面。在面具设置界面下滑找到配置排除列表选项点配置排除列表选项进入排除列表界面。在“Shamiko”模块的加持下理论上你在排除列表勾选哪个应用哪个应用就检测不到root。
建议在面具排除列表勾选应用(即对应用隐藏root)后,最好检查一下应用是否在后台运行。如果是在后台运行,你最好结束一下,再打开应用。如果不是在后台运行,你就可以直接打开应用。**注意彻底结束进程**
当面具排除列表勾选Momo后打开Momo可以看到Momo已经不再提示找到可执行程序“su”、Magisk、Zygisk说明“Shamiko”模块配合面具排除列表隐藏root是有效的。接下来我们如法炮制在排除列表勾选那些检测到root后无法运行或者闪退的应用比如银行类、金融类、游戏类应用。这样它们就检测不到root也就可以正常运行了。
### 用排除列表对 ZFB 隐藏root
玩机的朋友可能会知道当root后ZFB可能会无法刷脸归根结底还是因为ZFB检测到了root。我们需要对ZFB隐藏root相关步骤如下
进入面具排除列表然后右上角搜索找到ZFB点击ZFB图标把它展开如图四这里面显示的一条条都是ZFB的进程。当我们勾选ZFB的所有进程ZFB就检测不到root了也就是对ZFB隐藏root了。不用一个个点展开后点ZFB右边的方框即可全部勾选这些进程。把这些进程全部勾选后如图六可以看到ZFB上面的进度条全满。这个进度条表示里面的进程有没有全部勾选如果没有全部勾选进度条就不会全满。就像图七图八进度条不全满里面的进程就没有全部勾选这样是不行的。必须全部勾选里面的进程才能完全隐藏root。
非必需操作排除列表勾选完ZFB后退出面具。然后长按桌面的ZFB图标ZFB图标上会出现“应用信息”四个字点“应用信息”进入“应用信息”界面。如果你是显示图一那样你就直接去打开ZFB也不用点“结束运行”。如果你是显示图二那样就点一下“结束运行”然后再去打开ZFB。
好了不出意外的话当排除列表勾选ZFB后打开ZFB就会发现刷脸功能又可以使用了。
### 排除列表对手机管家隐藏root(MIUI系统专属)
如果你是MIUI系统的用户对ZFB或者薇信以及其他金融类应用隐藏root后用它们ZF时可能会弹出以下提醒。
当看到以上提醒一些朋友可能会觉得你这方案不行啊。SHamiko模块生效了也在排除列表勾选了ZFB所有进程居然还会提示手机已被root。其实这真不是ZFB检测到了root而是MIUI系统的系统应用“手机管家”检测到了root发出的弹窗提醒。至于为什么会弹窗这个因为你排除列表没勾选手机管家啊
进入面具排除列表,然后右上角搜索手机管家,大概率都会搜索不到,主要是方法不对,以下教大家查找手机管家的正确方法。
![Untitled](https://s1.328888.xyz/2022/08/13/TGDNR.png)
??? help "**Momo提示找到Magisk解决方法**"
安装了“Shamiko”模块并且“Shamiko”模块也生效了(显示笑脸)排除列表也勾选了Momo的所有进程打开Momo还是提示找到Magisk。
**解决方法**
(1)去面具模块界面检查有没有安装“隐藏系统root”模块。如果是安装了“隐藏系统root”模块那就不要解决Momo提示找到Magisk了。因为就是这个模块导致Momo提示找到Magisk。但是你又不能停用这个模块停用它你就更加隐藏不了root。
关于“隐藏系统root”这个模块的作用我发现许多人对这个模块的作用存在很大误解。
如果你每次打开面具时它都会提示“检测到不属于Magisk的su文件”那么你需要安装这个“隐藏系统root”模块如果你打开面具没提示这个就不能安装也不要安装。
(2)去面具模块界面检查有没有安装“隐藏系统root”模块。如果没安装这个模块那说明是其他模块导致Momo提示找到Magisk。
怎么排查是哪个面具模块引起Momo找到Magisk呢我建议停用除“SHamiko”以外的所有模块即“SHamiko”模块你不要停用其余模块全部停用。PS:停用的面具模块,主要包括字体模块、桌面模块、调节音质、优化触控、停用温控、开启高刷、调整扬声器马达、开启快充等等这一类优化模块。
停用后重启手机打开Momo再看看如果停用面具模块解决了Momo找到Magisk的问题那么我建议大家重新启用面具模块时一个一个或者两个两个来启用。每启用一个或者两个就重启下手机打开Momo再看看。直到Momo再次提示找到Magisk就可以知道是哪个模块引起的了。知道是哪个模块引起的就把哪个模块移除不用就行了。
??? help "**Momo提示找到二进制文件“su”解决方法**"
安装了“Shamiko”模块并且“Shamiko”模块也生效了(显示笑脸)排除列表也勾选了Momo的所有进程特定用户也安装了“隐藏系统root”模块打开Momo还是提示找到二进制文件“su”。
**解决方法**
我建议停用除“SHamiko”以外的所有模块即“SHamiko”模块你不要停用剩余模块全部停用。如果你是安装了“隐藏系统root”模块的特定用户那么你就停用除“隐藏系统root、SHamiko”以外的所有模块。即这两个SHamiko模块和隐藏系统root模块你不要停用剩余模块全部停用。
停用后重启手机打开Momo再看看如果停用面具模块解决了Momo找到二进制文件“su”的问题那么我建议大家重新启用面具模块时一个一个或者两个两个来启用。每启用一个或者两个就重启下手机打开Momo再看看。直到Momo再次提示找到二进制文件“su”就可以知道是哪个模块引起的了。知道是哪个模块引起的就把哪个模块移除不用就行了。
??? help "**Momo提示找到Zygisk的解决方法**"
安装了“Shamiko”模块并且“Shamiko”模块也生效了(显示笑脸)排除列表也勾选了Momo的所有进程打开Momo还是提示找到Zygisk。
**解决方法**
如果你隐藏应用列表的生效应用里选择了Momo那么你应该取消对Momo的隐藏。Momo不会检测应用列表你对Momo隐藏应用列表反而会导致Momo检测到Zygisk。
如果隐藏应用列表生效应用里没选择MomoMomo还是提示发现Zygisk。那么一般可能是因为面具版本太低或者Shamiko版本太低总之发现Zygisk这个不太好解决。有时候你升级Momo版本(升级后的Momo)就有可能发现Zygisk或者你升级面具版本也有可能导致Momo发现Zygisk。
>0.5.2版本的Shamiko模块是配合25.1以上版本的面具才能对Momo隐藏Zygisk。想让Momo检测不到Zygisk你可以升级面具版本到最新25.2。
启用“Shamiko”白名单模式后你手机里安装的所有应用(也包括系统应用)都检测不到root了。你不用再像第(一)期教程中的那样想对哪个应用隐藏root还必须得在面具排除列表勾选哪个应用才行。启用白名单模式后你可以跟排除列表繁琐的勾选步骤说再见了不用再去配置排除列表了。
??? help "还不行?停用部分面具模块"
适用场景:
也安装了“Shamiko”模块并且“Shamiko”模块也生效了(显示笑脸)排除列表也勾选了Momo的所有进程打开Momo还是提示找到Magisk或者找到二进制文件“su”或者找到Zygisk。进而打开银行类金融类游戏类应用提示root无法运行或者功能不正常。
原因分析这种情况不是因为“Shamiko”模块失效了而是你们装了太多系统优化类面具模块。部分系统优化类面具模块让你们手机不再纯净破坏了系统的完整性让设备处于被修改的状态。进而导致“Shamiko”模块隐藏失效Momo从而找到以下三个提示。而我从来不用系统优化类面具模块只用寥寥可数的几个模块(还不是系统优化类)所以可以很容易的过掉Momo以下三个提示。
### **“Shamiko”白名单模式**
**需要注意的事项**
既然SHamiko白名单模式比黑名单模式有优势那是不是可以不加分辨的启用白名单模式呢还真不是这样的在决定使用白名单模式前我建议你知道一些注意事项
⑴白名单模式存在一些较为严重的Bug
部分机型启用“Shamiko”白名单模式后打开一些应用会闪退并且部分应用自带的浏览器打不开网页。还有就是开启白名单模式会造成手机性能的损耗不过这点感知不强。
⑵新安装应用无法获取root权限
有些酷友不明白这句话的意思我给大家详细解释一下首先打开面具进入超级用户界面可以看到你授权过root的应用。当你启用“Shamiko”白名单模式后也只有超级用户界面的应用能获取root了。你新安装的(需要root的)应用,以及你之前你没打开过(需要root)的应用都获取不了root。我举个例子比如你启用“Shamiko”白名单模式后安装搞机助手(搞机助手需要root才能运行)那么搞机助手就会获取不了root进而无法运行。
**“Shamiko”白名单模式的隐藏root方案**
> 面具启用随机包名+开启Zygisk+遵守排除列表(不能开)+安装“SHamiko”模块+启用“Shamiko”白名单模式+安装“隐藏系统root”模块(特定用户安装)→若无效→停用或移除部分面具模块
>
“ Shamiko”白名单模式跟黑名单模式一样也需要关闭遵守排除列表“Shamiko”模块才能生效。
关于特定用户的安装“隐藏系统root”模块还是得再讲一下。如果你每次打开面具它都会提示“检测到不属于Magisk的su文件”那么你一定要安装一个名叫“隐藏系统root”的面具模块。如果没提示这个你不能安装也没必要安装。
PS这个“隐藏系统root”模块文件包里就有下载后在面具里刷入即可。刷完记得重启手机
**启用“SHamiko”白名单模式的方法**
既然要启用“Shamiko”白名单模式首先要学会判断当前“Shamiko”模块是处于哪种模式如何判断呢我们要看“Shamiko”的模块描述。首先我们打开面具进入模块界面可以看到“Shamiko”笑脸正在工作。如果“Shamiko”的模块描述里显示的是“blacklist mode”说明“Shamiko”处于黑名单模式正在以黑名单模式运行如果“Shamiko”的模块描述里显示的是“whitelist mode”说明“Shamiko”处于白名单模式正在以白名单模式运行。
正常情况下你的“Shamiko”模块描述里都应该显示“blacklist mode”因为这是“Shamiko”模块的默认工作方式。
**如何切换为“Shamiko”白名单模式呢**
有以下两种方法:
⑴安装一个名叫“Shamiko”的软件
这是个APP应用我置顶评论的链接里就有下载。这是咱们酷安某位大佬开发的软件我不知道是哪个大佬开发的如果有知道的兄弟麻烦告诉我下。这个软件可以一键开启和关闭“Shamiko”黑名单模式非常的方便使用方法也很简单。
首先确保“Shamiko”模块处于黑名单模式然后下载和安装这个“Shamiko”软件。安装后打开会有超级用户弹窗提示“Shamiko”软件要申请root权限你点允许。给完“Shamiko”软件root权限后打开中间那个“whitelist mode”选项“Shamiko”模块就切换为白名单模式了。这时你进面具里就会发现“Shamiko”模块已经处于“whitelist mode(白名单模式)”了甚至不用重启手机立即生效。切换回“blacklist mode(黑名单模式)”也很简单关闭“whitelist mode”选项就行了。切换回也是不用重启手机立即生效。
PS无论“Shamiko”模块是从黑名单模式切换为白名单模式还是从白名单模式切换回黑名单模式。用这个“Shamiko”软件切换后无论关机还是重启都会一直有效哦。还有这个“Shamiko”软件也不用保持后台运行用完你可以在最近任务卡片里划掉它。
⑵用MT管理器新建“whitelist”空文件
首先确保“Shamiko”模块处于黑名单模式打开MT管理器点左上角三条横杠进根目录。此时MT管理器若申请root权限你要点允许否则无法访问根目录下的文件夹。给MT管理器root权限后按/data/adb/shamiko的路径点进去 在shamiko文件夹里建一个名为whitelist文件。文件名不好记大家复制粘贴就好了。当文件建完也不用重启“Shamiko”就启用了“whitelist mode(白名单模式)”。切换回“blacklist mode(黑名单模式)”也很简单用MT管理器删除whitelist文件就行了。切换回也是不用重启手机立即生效。
PS大家还记得我这篇教程第二部分讲的内容吗当你开启“Shamiko”白名单模式后你新安装的(需要root的)应用,以及你之前你没打开过(需要root)的应用都获取不了root。当你现在“Shamiko”处于白名单模式遇到新安装的应用申请不了root时你可以先关闭白名单模式。关闭后白名单模式后在黑名单模式下打开所需要root的应用让它申请一遍root。然后再用“Shamiko”软件或者MT管理器打开“Shamiko”白名单模式。
**测试“Shamiko”白名单模式隐藏root效果**
当我们启用“Shamiko”模块白名单模式后如何判断它有没有隐藏root的效果呢还是需要用上我们强大的“Momo”APP了。PSMomo是一个检测设备是否root的应用如果打开MomoMomo提示找到可执行程序“su”、Magisk、Zygisk说明检测到了root如果打开MomoMomo没有提示找到可执行程序“su”、Magisk、Zygisk说明隐藏root有效或者未root。
如果你是从“Shamiko”黑名单模式切换为白名单模式的我建议先去排除列表取消对Momo的勾选再打开Momo看看检测结果。因为这样做有助于判断“Shamiko”白名单模式是否有效隐藏root。当你排除列表取消对Momo的勾选再次打开MomoMomo依旧没有提示找到可执行程序“su”、Magisk、Zygisk说明白名单模式隐藏root是有效的。
当确定“Shamiko”白名单模式隐藏root有效后我们可以打开任何因为root打不开的银行类、金融类、游戏类应用。记住你现在是白名单模式了不需要用排除列表勾选了。若你切换回黑名单模式一定要在排除列表勾选要隐藏root的应用。
**如果隐藏无效就停用面具模块**
适用场景:
也安装了“Shamiko”模块并且“Shamiko”模块也生效了(显示笑脸)模块描述里也显示的是“whitelist mode(白名单模式)”打开Momo还是提示找到Magisk或者找到二进制文件“su”或者找到Zygisk。进而打开银行类金融类游戏类应用提示root无法运行或者功能不正常。
原因分析这种情况不是因为“Shamiko”模块白名单模式失效了而是你们装了太多系统优化类面具模块。部分系统优化类面具模块让你们手机不再纯净破坏了系统的完整性让设备处于被修改的状态。进而导致“Shamiko”模块隐藏失效Momo从而找到以下三个提示。而我从来不用系统优化类面具模块只用寥寥可数的几个模块(还不是系统优化类)所以可以很容易的过掉Momo以下三个提示。
### 隐藏应用列表
隐藏应用列表完全没有隐藏root的作用。
银行类金融类游戏类应用检测设备环境的优先级永远是先检测root然后再检测应用列表或者不检测应用列表。大部分应用都不检测应用列表。
但是可以隐藏你的模块应用,隐藏 LSPosed 相关特征.
[^23]:保留root去更新系统 https://www.coolapk.com/feed/37647626
[^8]:**Root隐藏教程**[图文分享 - 酷安 (coolapk.com)](https://www.coolapk.com/feed/37950576)
[^14]:****小米如何刷入第三方Recovery**** [https://zhuanlan.zhihu.com/p/428730333](https://zhuanlan.zhihu.com/p/428730333)

118
docs/index.md Normal file
View File

@ -0,0 +1,118 @@
# 前言
Welcome to IdontKnowRoot ,本站基于 [mkdocs.org](https://www.mkdocs.org),致力于给予小白全详细的刷机起步指导,不必因为教程老旧,描述不清而发愁。
如果你发现了本文的的错误或不足,欢迎向[项目仓库](https://github.com/sudoskys/Root/)提 issue 和 PR
>本站大多数资料都是综合收集来的,不许商用,需要商用请和引用页内的源取得授权
## **资料连结**
原始导出的长文PDF版本在 [这里](https://github.com/sudoskys/Root/)
你也可以在 [这里](https://github.com/sudoskys/Root/) 看到这篇教程
你可以在 [这里](https://push.dianas.cyou/LIS/Share/Root/) 下载相关文件包。
工具包备份分流地址如下
- 暂无
你可以在以下平台获取相关若有若无的支持
- https://kamiui.ml/E52shuaji/
- https://orangefox.download/zh-CN
- https://mi.fiime.cn
- https://twrp.me/Devices
## **文档结构**
本教程仅供参考,阅读者**需要自己承担因尝试解锁导致的后果**。
如果你对自己的动手能力感到怀疑,可以选择付费请人!**这个教程需要一台 WIN7及以上/Linux 的电脑。请先提前阅读一遍教程,而不是一步一步来。最好使用 Win10 ,避免驱动问题**
**刷机大概有几种方法:** recfastbootfastbootd9008mtk端口。
![c3v64ptb34tc8qacv7jg.png](https://s1.328888.xyz/2022/08/13/TGFaP.png)
同时因为 Android 阵营厂商众多,的确很难保证他们步伐齐一,也就不存在某种一定通行的「通法」能够搞定任一 Android 设备的 `Magisk` 刷入。
但是本文档会从
- 准备
- 刷机
- 优化
三个章节展开相关叙述,其中在第二节会描述不同的常用对策方法
## 贡献者
本教程由 Sudoskys 引录编辑
[Jasmine](https://blog.dianas.cyou/)
**由以下人士参与校对**
- [ZH/NSFW]狼-公开备忘录
- 笨蛋ovo
- Aidenpers Ultra
- 小迅的皮套
- Chi_Tang
## 引录
[^1]:**所需资料打包**<https://push.dianas.cyou/LIS/Share/Root/>
[^2]: ****root、刷rec、rom通用教程<****[sudo0m.github.io/2022/05/29/root、刷rec、rom通用教程/](http://sudo0m.github.io/2022/05/29/root%E3%80%81%E5%88%B7rec%E3%80%81rom%E9%80%9A%E7%94%A8%E6%95%99%E7%A8%8B/)****>****
[^3]:[Android 玩家必备神器入门:从零开始安装 Magisk - 少数派 (sspai.com)](https://sspai.com/post/67932)
[^4]:Magisk官方教程<[https://topjohnwu.github.io/Magisk/](https://topjohnwu.github.io/Magisk/)>
[^5]:Magisk官方论坛<[https://forum.xda-developers.com/f/magisk.5903/](https://forum.xda-developers.com/f/magisk.5903/)>
[^6]:[每个 Android 玩家都不可错过的神器Magisk 初识与安装 - 少数派 (sspai.com)](https://sspai.com/post/53043)
[^7]:[Android 玩机「神器」的矛盾与新生Magisk Canary 更新详解 - 少数派 (sspai.com)](https://sspai.com/post/69945)
[^8]:**Root隐藏教程**[图文分享 - 酷安 (coolapk.com)](https://www.coolapk.com/feed/37950576)
[^9]:**酷安MiaoHan 的专栏** [https://www.coolapk.com/feed/32286938](https://www.coolapk.com/feed/32286938)
[^10]:[APKMirror - Free APK Downloads - Free and safe Android APK downloads](https://www.apkmirror.com/)
[^11]:[Clash For Magisk简介 - CFM (adlyq.ml)](https://docs.adlyq.ml/)
[^12]:****小米手機各種刷機方式的疑問?**** [https://www.mobile01.com/topicdetail.php?f=634&t=3725269](https://www.mobile01.com/topicdetail.php?f=634&t=3725269)
[^13]:****[通过 ADB 给手机刷入第三方 Recovery](https://blog.linioi.com/posts/8/)****
[^14]:****小米如何刷入第三方Recovery**** [https://zhuanlan.zhihu.com/p/428730333](https://zhuanlan.zhihu.com/p/428730333)
[^15]: 告诉大家如何防止掉基带问题 [https://www.coolapk.com/feed/21305538](https://www.coolapk.com/feed/21305538)
[^16]:酷安Rannki原创 [https://www.coolapk.com/feed/21305538](https://www.coolapk.com/feed/21305538?shareKey=NWMzMGQxYTU4OWMwNWZlNzJjZTc~&shareUid=1294855&shareFrom=com.coolapk.market_10.5.3)
[^17]:常识基础 [https://mi.fiime.cn/tutorial](https://mi.fiime.cn/tutorial)
[^18]:**刷入原生ROM的通用教程等教程** [https://fiime.cn/thread/359](https://fiime.cn/thread/359)
[^19]:****[Violet 机型 PE/Plus 刷入教程](https://blog.linioi.com/posts/10/)****
[^20]:****[如何在 Redmi Note 7 Pro 上刷机?](https://blog.linioi.com/posts/11/)****
[^21]:[https://wiki.pchelper666.com/底层刷机教程](https://wiki.pchelper666.com/%E5%BA%95%E5%B1%82%E5%88%B7%E6%9C%BA%E6%95%99%E7%A8%8B)
[^22]:**高通9008线刷救黑砖教程** [https://www.bilibili.com/read/cv15031395/](https://www.bilibili.com/read/cv15031395/)

356
docs/prepare.md Normal file
View File

@ -0,0 +1,356 @@
# 准备
## 了解术语[^17]
**双清:** Dalvik/ART Cache Cache 其目的就是清除分区以及数据,简称重置手机。
**三清:** Dalvik/ART Cache Cache Data 刷机前基本上必选三清,目的是使新系统的兼容性达到最佳。
**四清:** Dalvik/ART Cache Cache Data System 四清针对版本差异过大的系统。
!!! warning end
重要!
四清后不刷入系统无法开机进系统!!只能电脑刷或者储存卡刷。
**五清:** Dalvik/ART Cache Cache Data System Internal Storage内置储存
!!! warning end
一旦选了这个清除,那手机内置存储上的东西就都没有了!就不能从手机选择卡刷包了!
**六清:** Dalvik/ART Cache Cache Data System.
**底包:**既不是ROM也不是OTA软件包它是一组**低级驱动程序**,可帮助操作系统完成其想做的任何事情。 它包括调制解调器蓝牙引导程序DSP等各种内容。支持所有Snapdragon和MTK设备包括仅限中国的设备。底包就相当于一个纯净版或者内核版的系统包
**MTK**:联发科。
MTK和高通是生产手机CPU的厂家。MTK平台和高通平台指的是这两家的操作系统。
**A/B分区**
Android从7.0开始引入新的OTA升级方式A/B System Updates这里将其叫做A/B系统。顾名思义A/B系统就是设备上有A和B两套可以工作的系统用户数据只有一份为两套系统共用简单来讲可以理解为一套系统分区另外一套为备份分区。其系统版本可能一样也可能不一样其中一个是新版本另外一个旧版本通过升级将旧版本也更新为新版本。当然设备出厂时这两套系统肯定是一样的。之所以叫套而不是个是因为Android系统不是由一个分区组成其系统包括boot分区的kernel和ramdisksystem和vendor分区的应用程序和库文件以及userdata分区的数据
A/B系统实现了无缝升级(seamless updates),有以下特点:出厂时设备上有两套可以正常工作的系统,升级时确保设备上始终有一个可以工作的系统,减少设备变砖的可能性,方便维修和售后。
!!! info end
OTA升级在Android系统的后台进行所以更新过程中用户可以正常使用设备数据更新完成后仅需要用户重启一次设备进入新系统。如果OTA升级失败设备可以回退到升级前的旧系统并且可以尝试再次更新升级。
**VAB架构**
又称虚拟AB分区出厂安卓11的新机型**几乎都是VAB架构**。
安卓分区架构发展史为onlyAABonlyA动态分区AB动态分区VAB架构。 所谓的VAB架构其实就是AB分区套上了动态分区再解决了AB分区的空间占用问题。
刷机时经常会刷写的分区(system,vendor,boot,recovery等等)。userdata分区就是用户分区格式化data就是格式化的这个分区。需要注意的是格式化data和清空data是两个不同的概念经常会有小白把这两个概念搞混淆。
格式化data就是把userdata的分区进行格式化操作就像你格式化U盘一样是格式化操作。
而清空data是删除data分区的所有文件及文件夹。当你遇到data挂载不上时你清空data是没有效果的这个时候你需要进行格式化data操作才能挂载data所以这两个不要搞混淆了
**通用系统映像(GSI/SGSI)**
[https://source.android.google.cn/devices/tech/ota/dynamic_partitions/implement](https://source.android.google.cn/devices/tech/ota/dynamic_partitions/implement)
从Android 9开始Google更改了要求所有设备都必须使用[system-as-root]
GSI则由A-only和A/B进行区分刷入
GSI则是一种可以忽略厂商定制的通用刷机包
**动态分区**
Google在Android 10开始引入了动态分区Dynamic Partitions 简单来说就是把原来的system , vendor , product还有odm分区整合到了一起构成super分区 在刷入设备的时候动态调整system等分区的大小
**什么是GSI**
GSI代表通用系统映像。这是一个文件系统映像您可以将其刷到设备的系统分区。之所以具有通用性是因为它使用新的标准化硬件API访问硬件因此它可以在任何启用treble的设备上运行
**字库(分区)**
字库是硬件,就相当于电脑的硬盘。
功能机时代很多手机程序、控制信息、字库信息是存储在一个专用芯片里面芯片中主要部分是字库所以一些售后和维修人员就习惯把这个存储芯片称做字库芯片。不过到了智能机时代这个存储芯片的功能已经远远超越了存储字库这么简单所以它也远不是“字库”所能概括的更准确的表述应该为eMMC芯片(embedded MultiMediaCard 
简单来说,“字库”(eMMC芯片)就相当于电脑中的BIOS+硬盘一方面它里面固化有手机的启动程序、基本输入输出程序、系统设置信息等等另一方面它还起到了存储照片、音乐等文件的作用也就是我们经常提到的手机xxGB存储空间而且手机的ROM(系统固件)也在这颗芯片当中,由此可见它对于一部手机的重要性。 
与手机一样,“字库”(eMMC芯片)也有相应的分类。
1、原装专用字库即原厂生产、针对相应型号专门使用的芯片
2、原装代用字库同样是由生产在原装字库货源短缺的情况下替代原装字库使用的芯片由于不是专门适用某型号机器的字库芯片所以在体积上与原装字库存在差异一般都要稍大一些
3、其他品牌的字库例如某芝部分型号的芯片可以替换原装字库使用。
!!! tip "简单来说"
字库要是坏了,换主板吧
**ROM包**
华为小米OPPO等都是安卓手机但它们的系统又各不相同。这些系统本质上都是基于安卓系统的他们对安卓系统进行定制加入自己特有的服务。比如我们看到很多手机出厂就自带APP这些就是 定制化之后的安卓系统 , 这些安卓系统就叫做ROM包。
**Recovery**
当手机系统文件被损坏从而不能正常启动时我们可以进入recovery小系统对主体系统进行修复。
**第三方Recovery**
官方的recovery功能较少一般可以清除缓存擦除所有数据刷入官方指定的系统而不能刷第三方系统所以就有人做 Recovery 去代替官方 (即第三方Recovery) 的这样就能刷非官方的ROM了。
**FastbootD**
据我所知, fastbootd 是用户空间中的 fastboot。
在动态分区手机. `data`, `system`等原来的物理分区, 现在都被放到一个共同的`super`分区下. 这种"虚拟分区"只在用户空间(Android系统里)可见, 也就是说原版fastboot只能识别到整个`super`, 而`super`里的`data`这些却不行.
所以fastbootd 就是动态分区手机的 fastboot(指非动态分区手机的).
![a5nZlt.png](https://s1.328888.xyz/2022/08/13/TGOJ6.png)
[What is FastbootD? How to Boot to FastbootD Mode - DroidWin](https://www.droidwin.com/fastbootd-mode/)
## 了解刷机
### **深刷**
深刷就是底层刷机顾名思义这是一种从底层刷写手机分区的方式与正常的程序相比这种方式更为彻底无视所有软件层面的权限例如BL锁。
底层刷机模式常用于使用卡刷Recovery下以及一系列使用ADB刷机方式的统称或者线刷Bootloader下使用Bootloader命令刷机的方式刷成砖后救砖的场景下。按照主流处理器高通为9008刷机模式MTK为MTK PreLoader模式海思麒麟为eRecovery模式类rec操作和eDownload模式。
!!! note
MTK联发科芯片机型的深刷口被小mi提交修复目前 天矶920 以后少有能使用此方法的。高通需要9008端口即可。详见刷机部分。
[底层相关刷机教程示例?](https://wiki.pchelper666.com/%E5%BA%95%E5%B1%82%E5%88%B7%E6%9C%BA%E6%95%99%E7%A8%8B)
### **OTA**
**这是升级,谈不上刷机**
OTA 意思就是**增量升级**,就是在原先系统的基础上增加新功能,也许是给手机打个补丁,也许是对性能的优化。**手机要活着能进系统且未修改才能用**。OTA 不会删除资料和系统的设定。备份资料放的位置要问官方,但通常不需要知道位置,内建备份也有还原功能,还能选择要还原的东西,还原的时候有问题的部分可以选择略过。
有些档案用 patch 的方式处理了, 有些用覆盖的方式 (要看做这个 OTA 包的人怎么做), 所以, 如果有档案与预期的不同 (通常是 root 后会删除或修改档案), OTA 会失败。
你也可以解 OTA 的包进行修补获取Root权限。
### **软刷**
软件刷就是刷机大师,刷机精灵等的第三方刷机软件刷,现在已经绝迹了;
### **厂刷**
寄回厂子……
### **线刷**
线刷是 Fastboot 模式刷机。
线刷是用 Fastboot一般都是直接刷镜像由 uboot 以直接写入闪存的办法把镜像直接写到闪存对应的位置(或者说分区)。
线刷时备份资料可以使用PC端的程式来管理出问题的话三清之后再选择性恢复再不行就全部设定和资料重头来过。线刷 要有电脑, 执行特定的程式. (通常就算手机挂到都进不去 Recovery 也能刷)
所以线刷包实际一般就是包含了 Fastboot 程序和各个系统镜像以及一个可执行的脚本的包,用户直接运行那个脚本,脚本调用 Fastboot 来刷。
### **卡刷 /第三方 REC**
卡刷就是 Rcovery 模式刷机
!!! tip "Do you know?"
区别卡刷包 和线刷包最明显的区别是 (卡刷包的文件内容)里有 **Recovery 文件,而(**线刷包的文件内容)里有 FLASH 文件,如果你注意到上方路径,从文件名可以看到线刷包文件名里有 “FASTBOOT” 。
一般是在 recovery 里进行的,有直接刷镜像的比如 kernel 部分,但像 system 都是挂载 system 分区后再个别的更新里面的文件(差分或者直接覆盖),而不是像线刷那样把整个 system 镜像重刷一次。如果是通过打二进制补丁差分更新的话(绝大部分官方 OTA 包的做法),就要求被更新的文件和出厂时一样,否则就会失败,这是 OTA 失败的原因。优点是比较简单快捷,非常适合不会刷机的新手。
具体卡刷应该分两种, 一种是**小的更新包** (作法与 OTA 一样, 当然结果也一样), 另一种是完整的系统包, 这种通常是把系统的 partition 重新 format 再把资料放上去. (不会动到使用者资料的分区)。
卡刷可以用手机直接下载卡刷包更名Update.zip后进入recovery刷机刷后资料还会在但是通常不做资料清除的话很容易发生问题严重的就是一直出现系统错误轻的则是偶尔出现闪退。
所以基本上刷完机最好进Recovery三清刷前做三清也行重点就是该清的要清一清不然问题很多。接着要还原备份的时候如果系统本差异太大最好不要还原系统设定和App之类的资料还原一些使用者data就好。卡刷需要存储空间一般能进 recovery 就能刷。
卡刷包有比较复杂些的目录结构除了用来更新的文件外也包括一个可执行文件和脚本但这两个脚本是给recovery来用的而不是用户。
!!! info "**什么是第三方REC**"
Recovery像是一个独立的微型系统可以不依赖于安卓操作系统主体单独运行。Recovery的中文名是恢复顾名思义当手机系统文件被损坏从而不能正常启动时我们可以进入recovery小系统对主体系统进行修复。可是官方的recovery功能较少一般可以清除缓存擦除所有数据刷入官方指定的系统而不能刷第三方系统所以就有人做 Recovery 去代替官方 (即第三方Recovery) 的这样就能刷非官方的ROM了。像是所有的官改包第三方是配的包国际版的包以及原生系统都是用第三方REC刷入。可以说有了第三方REC是你刷机的出发点想刷什么都可以当然刷的东西兼容你的设备有了它你就可以各种不同的系统开始真正的刷机之路。但是大部分的第三方REC不支持OTA升级也就是说每次你收到系统更新的时候都必须要下载完整包更新。
#### 第三方Recovery
第三方Recovery有很多种最常用的是 `TWRP` ,还有很多基于 `TWRP` 修改的种类,比如 `橙狐Recovery``SHRP``PBRP``奇兔Recovery` 等等。
可以去 TWRP 官网 [Here](https://twrp.me/Devices/) 搜索,或者在 TWRP 官方APP下载但是速度可能不是很好,也可以去[橙狐官网](https://orangefox.download/zh-CN)找。
如果以上途径都找不到,可以去酷安找你机型的话题,在话题内搜索关键词:`TWRPrec橙狐oringepbrp沥青shrp。`
## 准备设备
---
本教程用到的工具我**已经打入附带的文件包** [^1]
### 提前注意
**安卓系统的版本需要是 5.0~12.0 之间 (2022)**
!!! warning "注意"
**解锁BL或救砖都会让你的文件被清空需要备份**
!!! warning "注意"
- 解锁设备将允许修改系统重要组件,并有可能在一定程度上导致设备受损
- 解锁后设备安全性将失去保证
- 解锁后部分对系统安全性依赖高的功能和服务失效
- 解锁后部分系统功能遭到修改后,将影响系统新版本升级
- 解锁后由于刷机导致的硬件故障,售后维修网点可以按非保修处理
- 三星设备解锁后会永久性熔断 KNOX 安全认证
- 大部分手机的版权认证 DRM 等级也会从 L1 下降至 L3、无法通过 Play 商店认证等。
不建议你在主力机上解锁 Bootloader而且如果厂商明确表示不能解锁 Bootloader **请放弃**。如果一定要刷机并且报着变砖的觉悟,可以尝试**深刷**强解。
### 准备驱动文件
准备你的手机对应的机型的驱动文件,文件包提供 Vivo 和 Oppo 的两种驱动文件[1^]。
个人建议下载一个泛用型驱动 [universal adb drivers](https://adb.clockworkmod.com/)。少数情况下不能识别的话,需要我们用「手机厂商名 + adb driver」的关键词搜索得到相关的下载和安装教程。
安装完驱动请重启。 [相关手机驱动下载-FiimeROM](https://mi.fiime.cn/qudong)
[相关驱动站点](https://kamiui.ml/E52shuaji/)
!!! tip "**对于非深刷玩家如何检查是否链接?**"
💡 重启后在设备开机状态下连接电脑,打开终端,输入`adb devices`,如果返回了设备名称,说明 adb 配置完成;用 `adb reboot bootloader`进入 fastboot 界面这步不适用fastbootd设备,即安卓十),键入 `fastboot reboot`后,若设备重启,说明 fastboot 正常。
### 准备设备和平台工具
Win7 或以上电脑一台,能传输文件的数据线一条(**最好是原装线**),电脑下载解压[安卓平台文件包](https://dl.google.com/android/repository/platform-tools_r33.0.2-windows.zip)或[Linux版本安卓平台工具包](https://dl.google.com/android/repository/platform-tools-latest-linux.zip)或[Mac版本](https://dl.google.com/android/repository/platform-tools-latest-darwin.zip),退出所有手机助手类软件。
解压工具包,你会看到 adb 和 fastboot ,这是我们针对 Android 设备进行高级调试和安装的工具。
!!! tip "提示[^3]"
如果你已经安装了 [choco](https://chocolatey.org/) 或 [homebrew](https://brew.sh/) 等包管理工具的话Windows 输入`choco install adb universal adb-drivers -y`Mac 输入 `brew install android-platform-tools`能最方便的完成 adb 和 fastboot 的配置。Windows 用户可以参照  [Windows 操作系统下的 ADB 环境配置](https://sspai.com/post/40471) 这篇文章macOS 用户可以尝试  [此脚本](https://github.com/corbindavenport/nexus-tools) 或是参考 [使用 Mac 为 Android 手机刷原生系统](https://sspai.com/post/38535) 进行手动配置。最后最最不济,可以尝试在 Google  [开发者页面](https://developer.android.com/studio/releases/platform-tools?hl=zh-cn) 下载对应 adb 包,解压后在对应的目录下执行指令亦可,或者是尝试 [WebADB](https://app.webadb.com/#/) 或  [adb 在线执行器](https://adb.http.gs/) 这样的在线 adb 工具,比较考验浏览器的兼容性。
### 准备深度测试或申请解锁BL深刷可跳过
> BL 是 bootloader 的简称 就是 手机开机时,最先运行的小程序:开机引导程序 Bootloader 锁,主要是在引导过程中对系统签名,内核签名及 Recovery 签名进行检验如果签名不一致即终止引导。绿机器人儿用它来进行开机自检和初始化手机硬件它会指引手机找到系统分区并启动操作系统相当于电脑上的BIOS。
>
厂商通常会对手机的bootloader上锁这样它就只能运行厂商认证过的操作系统和recovery了。如果boatloader发现要运行的系统不是指定的系统就会阻止它运行。
在开发者选项中打开「OEM 解锁」(除了少部分流入我国市场的国外运营商有锁机外,此选项基本都可供用户开启。)
!!! danger
**解bl锁会清除手机恢复出厂设置所有数据记得提前备份好。**
不同的手机解锁方式不同,你甚至可以去线下店让服务人员解锁。或者从自己的社区中获取本机型的解锁信息。部分手机解锁很麻烦,比如华为,想要解锁只能去淘宝买解锁码,而且当你刷回官方 ROM 时,会自动加锁。当然,华为的解锁码是和硬件相关的,买到解锁码把它记下,下次进 FASTBOOOT 输入`fastboot oem unlock 解锁码`就可以了。
而对于小米手机,可以通过这个地址 [申请解锁](https://www.miui.com/unlock/download.html) 下载工具,然后打开手机设置,进入关于手机–>系统版本点10下在`设备解锁状态`中绑定账号和设备,进入`Fastboot`模式(关机后,同时按住开机键和音量下键),打开刚才下载的工具,点击 `解锁` 后系统会恢复出厂系统并解锁。也可以通过OEM解锁
**如果你的设备不能进行官方解锁,可以尝试深刷强解 。**
!!! note
一些古董机型是没有BL锁的比如红米Note。
附上[小米解锁教程](https://web.vip.miui.com/page/info/mio/mio/detail?postId=28646781&boardId=5415551&isComment=&isRecommend=0&app_version=dev.211029&ref=share).
### 准备获取文件
[FiimeROM-小米红米原生|移植|官改|SGSI|驱动|插件](https://mi.fiime.cn/Dtech/66.html)
这时候你要确认手机已经解锁BL锁。
上述工具已经打入附带文件包。
**如果你是深刷玩家,请单独查看刷入节:深刷。**
### 备份完整分区[^15]
这里的分区就是字库。
什么是备份完整字库我们说的64GB128GB256GB等等这个就是说的主板的储存容量也就是字库。某个分区的数据损坏好听的说法是分区数据坏了难听的说法是字库损坏了。
所以解锁bl后第一件事就是备份完整字库以防不测。有人会说不是有9008吗有必要备份完整字库吗有必要。
原因假如一个手机所有分区加起来有100个9008大概会刷写30个左右剩下的70个不会刷写。
那么这个70个当中有某个分区数据损坏了9008是无法救砖的必须返厂用工厂售后非卖手机的那种售后的工厂包方可救砖。当然如果这个工厂包没有刷写完100个分区的话基本上也是无法救砖的。
备份文件下载链接 [pan.baidu.com/s/1Yp3ljJWWvKMdpUpSUkt_Sw](http://pan.baidu.com/s/1Yp3ljJWWvKMdpUpSUkt_Sw) 提取码:vo15 ,或者我打包的文件中[^1],文件来自[^15]
**高通机型备份字库**
安装个MT管理器使用root权限执行【高通字库备份.sh】即可。备份的文件在/sdcard/Rannki目录中。
**高通机型还原字库**
提前把之前备份好的Rannki文件夹复制到 `/sdcard/Rannki`安装个MT管理器使用root权限执行【高通字库还原.sh】即可。
**MTK 机型备份字库**
安装个MT管理器使用root权限执行【MTK字库备份.sh】即可。备份的文件在/sdcard/Rannki目录中。
**MTK 机型还原字库**
提前把之前备份好的Rannki文件夹复制到 `/sdcard/Rannki`安装个MT管理器使用root权限执行【MTK 字库还原.sh】即可。
字库备份还原,解决的不只是基带问题,
除硬盘物理损坏外的所有问题解决率为100
**以上如何防止掉基带教程由酷安 Rannki 原创**
??? note "详细叙述"
**UFS闪存手机**
主板一般被分成了6个硬盘即**sdasdbsdcsddsdesdf。**
所以,主板设备代码分别是:`/dev/block/sda/dev/block/sde/dev/block/sdc/dev/block/sdd/dev/block/sde/dev/block/sdf`
备份分区的代码举例:`dd if=/dev/block/sda1 of=/sdcard/1.img,dd if=/dev/block/sda2 of=/sdcard/2.img`等等等等............................
还原分区的代码举例:`dd if=/sdcard/1.img of=/dev/block/sda1,dd if=/sdcard/2.img of=/dev/block/sda2` 等等等等............................
**Emmc闪存手机**
主板设备代码:**/dev/block/mmcblk0**
备份分区的代码举例:`dd if=/dev/block/mmcblk0p1 of=/sdcard/1.img,dd if=/dev/block/mmcblk0p2 of=/sdcard/2.img`等等等等............................
还原分区的代码举例:`dd if=/sdcard/1.img of=/dev/block/mmcblk0p1,dd if=/sdcard/2.img of=/dev/block/mmcblk0p2`等等等等............................
当然,像 system 分区, vendor 分区userdata 分区super 分区,这些分区就没必要进行备份还原了。
查看分区信息的命令:
先安装busybox的面具模块链接: `pan.baidu.com/s/1hFQr0nvXprzcz2gyQxtFzQ` 提取码: `y61r`
然后终端命令:`busybox fdisk /dev/block/sda` 回车然后再输入p回车就可以看到sda这块硬盘的所有分区信息了。adb,adc,add,ade,adf
同理,emmc闪存手机的命令是busybox fdisk /dev/block/mmcblk0回车再输入p回车就能看到所有分区信息了。
如果你的手机已经出现问题,且没有备份完整字库……去售后换主板,或者找个同机型的,用他的完整备份字库刷入,当然我并不确定是否成功,因为会不会黑砖,这是个待验证的问题。
而且最好别全部使用别人的手机的全字库备份,就算不黑砖,也会大概率出现 bootlocker 永久锁定,永久无法再次解锁,只能换主板。
[^1]:**所需资料打包**<https://push.dianas.cyou/LIS/Share/Root/>
[^3]:[Android 玩家必备神器入门:从零开始安装 Magisk - 少数派 (sspai.com)](https://sspai.com/post/67932)
[^15]: 告诉大家如何防止掉基带问题 [https://www.coolapk.com/feed/21305538](https://www.coolapk.com/feed/21305538)
[^17]:常识基础 [https://mi.fiime.cn/tutorial](https://mi.fiime.cn/tutorial)

358
docs/root.md Normal file
View File

@ -0,0 +1,358 @@
# 刷机
!!! warning "须知"
阅读者**需要自己承担因尝试 Root 导致的后果**。如果你对自己的动手能力感到怀疑,可以请人!
熟悉 Linux 的童鞋都知道,我们只需要打上 su 的命令,就可以拥有管理员权限。
su是运行环境变量PATH下面的一个可执行文件当任意软件运行su时软件的权限就会被提升到Root权限。
未Root的安卓系统是没有su这个文件的所以Root一个手机就是将su文件放入到系统运行环境变量PATH下面。 之后软件运行su程序就可以提升到Root权限。
所以Root就是赋予手机管理员权限本质就是将su程序放入手机系统文件夹下面。
取得 Root 的方式大致分为两种
- 第三方 Rec 接管
- Magisk 修补 Boot 镜像
**用户手段有深刷,实现方式有卡刷,线刷。**
!!! tip "Do you know?"
Magisk 是一个强大的 Android 框架,是一个通用的第三方 systemless 接口通过这样的方式实现一些较强大的功能。它修改启动分区并保留了系统文件。这种修改只是虚拟地覆盖在原始文件上。当某些东西请求系统文件时修改后的版本将被发送到magisk指定的位置。但是由于所有系统文件都是完整的因此可以欺骗SafetyNet认为一切正常。应用仍然可以在有被root的手机上运行。它通过挂载一个与系统文件相隔离的文件系统来加载自定义内容为系统分区打开了一个通往平行世界的入口所有改动在那个世界Magisk 分区)里发生,在必要的时候却又可以被认为是(从系统分区的角度而言)没有发生过。当被挂载的 Magisk 分区被隐藏甚至被取消挂载时,原有系统分区的完整性丝毫未损。因此严格来说 Magisk 可以被看作是一种文件系统。
## 线刷/深刷 修补 Boot 提取权限
!!! warning
线必须是原装线或者质量靠谱的线,否则会出现 `USB Error`
如果你没有使用 MTK ,请通过`adb devices`命令再次确认已经连上手机。
### 准备 **Magisk**
你可以从 [Github](https://github.com/topjohnwu/Magisk/releases) 或者 文件包 [1^] 下载它,推荐去 Github 下载,越新越好。
**安装Magisk Manager APP后如果它显示`Ramdisk` 为"是",那么你才可以进行下面的操作。**
!!! help
Ramdisk 是系统中的一个小分区Ramdisk 告诉系统接下来要加载哪些东西。Magisk 的目的是修改 Ramdsik把自己加进开机需要加载的系统组件中。App 中 Ramdisk 的值为「否」时,表示需要修改的 Ramdisk 被放在了 recovery.img 中,我们需要提取并修改 recovery.img。具体操作方法见节尾。
Tips极少数小米设备存在检测设备信息错误的问题Ramdisk 虽然显示为「否」,但实际上是需要修改 boot.img。
>
### 准备修补的img
官方 ROM 的压缩包,例如 [Google](https://developers.google.com/android/images)、[小米](https://www.miui.com/shuaji-393.html)、[Moto](https://mirrors.lolinet.com/firmware/moto/),由厂商发布,可从固定的发布页面、机型论坛等获取相关链接。一些厂商同时提供了 OTA 包和全量包,我们优先下载全量包,解压后即可获得 boot.img也就是我们所需要的 boot 分区的镜像文件。请去官网或者其他平台下载**符合**你的**机型和型号**的rom包
使用ZIP解压工具解压完整的ROM卡刷包最新MIUI系统安装包找到`boot.img`
和`vbmeta.img`两个文件,复制出来备用。
接下来,寻找 Recovery 包或 img 镜像放电脑上,如果是 img 文件则可以直接使用,如果是压缩包则解压找出 img 或者 payload 解包。
如果你使用的是第三方开发者制作的 ROM也同样需要下载系统全量包解压获取而部分开发者也会单独释出 boot.img 为玩家提供便利。如果你比较幸运,在论坛中有人分享了自己修改好的镜像,可以直接获取进行刷写。
!!! info "**payload 解压 OTA 包获取其中的 boot.img**"
*Payload 工具已经在工具包中给出,目前此工具因为依赖版本问题难以运行。*
像Google 给出的刷机包,解压其中的 image 包可以直接获得我们想要的各种镜像文件。但部分厂商给出的升级包以及部分第三方 ROM 的刷机包中解压出来只有 payload.bin无法进一步解压获得我们想要的各种镜像文件。
解压 payload.bin 需要用到特殊的工具,我们可以在 Github 上找到开源的 [payload dumper](https://github.com/vm03/payload_dumper),这是一个基于 python 3 的命令行工具。
以 zip 格式下载源代码,本地解压得到 payload_dumper-master 文件夹,下属两个 py 后缀的 python 文件。将 ROM 的 .zip 包解压缩后,把其中的 payload.bin 文件移送到 payload_dumper-master 中。
```bash
pip3 install protobuf #安装 protobuf
## 定位到 payload_dumper-master 文件夹
python3 -m pip install protobuf
python3 -m pip install -r requirements.txt
python3 payload_dumper.py payload.bin
```
**如果没有,且你是联发科(天矶<920使 MTK MTK Bootloader **
准备好 boot.img 后,打开打开`Magisk Manager`APP点击`Magisk`后边的`安装`,选择安装方式为`选择并修改一个文件`,从电脑端复制 `boot.img` 文件到手机并选中该文件,点击`开始` 仔细阅读修改结果并从结果中复制patch后的文件一般在`Download`文件夹下,文件名类似`magisk_patched-24100_gk0te.img`)到电脑。
!!! danger "警告"
⚠️ **你所用到的镜像(提取或修改)都要留存副本!否则变砖警告!**
## 卡刷 第三方 Recovery
有的Recovery作者附带了刷入脚本这样的直接运行脚本按着走就行了这里讲一下通用方法。
手机关机,**长按 音量减键 + 电源键** 进入 `FASTBOOT` 模式。用数据线把手机和电脑连接起来。以 `OrangeFox` 为示例。在上述步骤的下载后会得到一个压缩包,打开该压缩包,解压其中的 `recovery.img` 到任意一个位置。 压缩包是为了在有第三方 Recovery 的情况下刷入/更新 OrangeFox ,但是我们目前并没有,所以我们需要解压其中的 `recovery.img` 来使用 `fastboot` 刷入。如果你选择使用 LR.Team 定制版 TWRP可以选择一键刷入版就不会有下一步~~复杂~~
的操作。
然后打开终端,输入 `fastboot flash recovery 上一步解压的 recovery.img 的文件地址` (或者 `.\fastboot` **这一步需要配置好 ADB 环境。**
不出意外,会输出:
```
sending recovery OKAY传输Recovery
writing recovery OKAY刷入Recovery
finished.
```
**执行完毕后长按 音量加键 + 电源键**,出第一屏即一秒左右可松手,进入 `Recovery`模式。当然你也可以使用 `fastboot reboot recovery`来进入 `Recovery`模式。
一般情况下,会出现一个英文界面,从上往下依次写着 `Mount` `Dectypt` ,这是让你解密 Data 。输入你的锁屏密码即可,**记得输入完后点击右下角的勾**。
解密DATA分区后才能刷入第三方ROM可以理解为是对官方系统的保护.
解密DATA会格式化数据解密完成后DATA被清空当然也包括内置卡上也空了。**所以一定先备份好手机上的一切重要资料,包括手机存储/内置卡/外置卡上重要数据!**
经过十秒左右秒钟的解密后,不出意外会显示欢迎界面,点击屏幕下方勾即可。然后就是挂载 `System` 的界面,滑动下方滑块即可。
最后就进入了主界面。
!!! info
💡 如果你是卡刷官方包后不做任何操作是肯定会恢复官方recovery的关于如何防止恢复官方recovery办法。进入Recovery后不是特别老的机型一般都需要做一下防覆盖否则重启进系统后刷的Recovery会被官方Recovery覆盖。最常用的办法是卡刷完官方ROM包后刷个Magisk.zip就OK了。如果你并不想ROOT但是又不想恢复官方recovery可以再卡刷完ROM后。签名boot、当然有的TWRP高级里没有签名boot功能但是一般情况下都会有防止覆盖TWRP功能这俩个功能实现原理不一样但是它俩都可以防止恢复官方recovery (资料来自搞机助手,非常感谢).(如果你不想使用 Magisk可以试试 OrangeFox 的防止还原 Recovery 的功能,在 `设置`> `OTA`下。
!!! help
橙狐改简体中文:点击底部的 `Menu` > 右上角的齿轮图标 > `Regional` > 点击 `Language` 下的 `English` ,选择 `Chinese Simplified` 。
>
[^13]
💡 给手机刷入 Recovery 其实也不需要电脑,用另一部手机借助 [Termux](https://f-droid.org/zh_Hans/packages/com.termux/) 也是同样可以的。在 Termux 配置好 ADB 环境后,照上述步骤刷入即可。安装 Termux 的那部手机无需 ROOT。
### 特殊情况说明
**新款联发科机型必须关闭AVB2.0校验**
否则任何对系统的修改都会导致卡在Fastboot。涉及的机型包括但不限于红米66A99A红米Note8Pro红米10X4G5G红米K30U小米Play以及之后的联发科机型。至于AVB2.0怎么关闭不同机型不同安卓版本方法不用可以在TWRP里找这个功能或者找刷过的大佬问方法。
**红米3S进入Recovery模式的方法是长按三键**
附上 Redmi Note 7 Pro教程
[如何在 Redmi Note 7 Pro 上刷机?](https://blog.linioi.com/posts/11/)
相关Recovery下载
[小米Recovery下载|Recovery大全-FiimeROM](https://mi.fiime.cn/Recovery)
[Devices](https://twrp.me/Devices/)
[OrangeFox Recovery Downloads](https://orangefox.download/zh-CN)
[偶然发现的仓库](https://kamiui.ml/E52shuaji/)
## 深刷 高通9008刷机
**理论上高通处理器都可以用这个方法**
!!! info "用这个方法必须要满足两个最基本条件"
1.能找到 QPST 专用刷机包
2.确认手机能进9008端口
*💡 高通 QPST 线刷其实就是利用高通芯片自带的9008端口将手机系统内的所有分区的镜像文件直接刷写手机。这个刷机方式比 REC卡刷 和 fastboot 线刷,更底层、高效、强大。这种方式,不需要进入手机的任何分区,就可以直接刷写手机固件。*
!!! note
高通的 QPST线刷模式因联机之后端口名字叫Qualcomm HS-USB QDLoader 9008 (COMx)而得名。该模式下用户可通过QPST及其衍生工具本质为QPST命令行调用直接对手机的Flash芯片进行读写操作而不需要解锁Bootloader。常见刷机工具有QPSTMiFlashPro等工具刷机包中一般会有一个分区表xml文件。以及一个eif文件。XML文件命名一般为Rawprogram数字.XML和Patch数字.XML,EIF文件一般命名为prog_存储芯片类型比如UFS和EMMC*firehose*(SOC型号比如MSM8998或者SDM855)_内存类型一般是DDR.eif只要带有这两个文件的一般都是高通支持9008的刷机包。 进入9008模式高通略为麻烦。MSM8994及以前的SoC可以通过Fastboot命令直接进入9008模式`adb reboot edl`
>
---
此方案无需改线,无需触点短接等操作,需要电脑进行操作
我们将手机的变砖分为四个程度
1. 能亮屏,按键有反应 开机卡住 连接USB电脑有反应
2. 黑屏 ,按键有反应 连接电脑有反应
3. 屏幕不亮 按键无反应 连接电脑有反应
4. 砖头什么样 手机什么样---黑砖
**首先去下载高通的线刷工具,一般下载最新版本的即可。**
`https://qpsttool.com/category/download`
运行该线刷工具需要电脑识别到端口9008在电脑设备管理器中可以找到如果没有反应需要电脑安装9008的驱动。
`https://www.aliyundrive.com/s/KTLkyyjTsDB`
接着需要下载官方固刷包进行刷入就可以了
### 刷包成功后出现的几种情况
1.数据线自动断开链接,手机充电灯亮起-----刷写成功
2.无反应!------换包刷写,或试另一种刷写方式
**💡 按住手机上下音量+电源调试手机进入9008模式其次电脑识别到9008端口**
## 深刷 MTK联发科 刷入/强解
!!! note
联发科的底层刷机模式没有高通那么麻烦。该模式在 MTK 内部被称为 MTK in-house developed loader。MTK 的该模式与高通略有不同该模式具有帮助系统寻找Uboot的功能。该模式除了具有启动功能之外还具有下载功能。首先还是需要明确的是mtk芯片都有一个boot rom如果没有这个rom那么程序是无法被下载到 Nand Flash中的然后此时的Flash上是为空的没有任何数据的。系统在上电之后它会检测是启动模式还是下载模式如果是下载模式它会初始化一个usb的串口将Preloader加载到内部的SRAM中跳转到Preloader中去执行初始化好Flash和外部RAM之后依次将preloader、lk、kernel、android下载到nand flash中去。刷机工具是SP Flash Tools 需要验证的对应的DA文件或者 MTKclinet
### 准备 MTK 工具/工具箱
💡 **解释**MTk 工具依赖安卓的一种漏洞来实现 Root ,提取 boot.img在使用前请关注你的社区酷安等。工具箱的使用都有说明请自行咨询或查阅资料。
!!! warning
**天矶920 以后的设备不受此方法支持天矶1200仍旧支持**
[GitHub - bkerler/mtkclient: Inofficial MTK reverse engineering and flash tool](https://github.com/bkerler/mtkclient)
MTK 提供不同平台的版本,但是因为依赖 Python所以你需要从文件包或从 [Download Python | Python.org](https://www.python.org/downloads/) 安装Python**确保安装时勾选 ADD PYTHON to PATH**
并使用 `pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple` 配置国内镜像源。
这里以Windows系统为演示系统。乌班图看[这里](https://zhuanlan.zhihu.com/p/452973221)
### 初始化
在 mtkclient-main 文件夹下右键打开命令行
执行 `python setup.py install`
🛠 下面每执行一次命令,都需要重复关机状态下 “插上USB同时按住音量加减及开机键待到看到命令行变成这个后就松手”步骤。 **一定不要输错命令!!!!!!!**
**备份 Root 前手机全部分区**
`python mtk rl out`
自救命令使用mtkclient写入备份的镜像
`python mtk wl out`
**这个步骤如果备份用户数据会耗费8小时你可以备份到userdata时中断并删除 usedata.img。**
!!! warning
**将项目目录下的out文件夹复制出来防止后续覆盖**
### 强解 Bootloader
如果你OEM已经解锁且Bl也已经解锁的请跳过这步。
如果你没有获取到深度测试或者官方解锁的,可以用 `python mtk da seccfg unlock` 尝试解锁,风险自担,**这一步会清除你手机的全部数据,请注意**
强解后请重置手机,输入 `python mtk reset` **如果是MTK 可以不清除设备所有数据**重置。完毕后长按开机键开机开机第一屏会有提示按一下开机键即可解决因为重置过手机所以第一次开机时间会有点长耐心等待即可。待到开机后设置中打开开发者选项就可以看到OEM解锁选项变灰出现一行小字引导加载程序已解锁。开机前会有一段英文提示即为解锁成功可以用 `fastboot oem lks` 验证,返回 0 代表解锁成功)
附:重新锁回使用 `python mtk da seccfg lock` ,谨慎使用。
### 提取boot与vbmeta
使用如下命令,提取手机中的 boot 和 vbmeta.img 镜像
`python mtk r boot,vbmeta boot.img,vbmeta.img`
手机关机待到关机完成插上USB同时按住音量加减及开机键待到看到命令行提取的数字闪动后请松手。
提取完毕后boot与vbmeta 的镜像文件会在目录中,然后**请备份它们到一个其他的文件夹**
!!! note
**按照上文【准备修补的img】小节准备修补后的镜像注意一定要使用最新版本的面具会解决很多问题。**
有的手机没有 vbmeta 分区,会有提示,没关系。
**准备修补后的镜像**,重命名为`boot.patched`,放入项目根目录
!!! help
🛠 个别如遇无法开机等问题可尝试保持boot镜像中的vbmeta,此选项在最新版面具中已支持。
执行命令刷入重启手机安装面具即可发现root成功
`python mtk w boot,vbmeta boot.patched,vbmeta.img.empty`
### 备份 Root 后的手机
使用如下命令备份手机全部镜像,以便可以在手机变砖时进行自救。
`python mtk rl out`
自救命令使用mtkclient写入备份的镜像
`python mtk wl out`
!!! tip
**这个步骤如果备份用户数据会耗费8小时你可以备份到userdata时中断并删除 usedata.img。**
**然后将项目目录下的out文件夹复制出来防止后续覆盖还有就是一定不要输错命令**
!!! help
🛠 如果在解锁中遇到问题请先去 [https://github.com/bkerler/mtkclient/issues](https://github.com/bkerler/mtkclient/issues) 搜索遇到的问题如果是新的bug欢迎向作者反馈。需注明机型和提供相应的preloader。还有就是花钱请人救砖。
## 线刷 Fastboot刷入镜像
卡刷是最值得推荐的,过程也不复杂,只要刷机过程保持电量充足,刷机包正确,刷机过程不对手机进行操作,一般都是能成功刷入的。
1. 无需第三方 **Recovery**
2. 不影响系统升级(完整包升级)
复制修改镜像后的完整路径(**在 Windows 中,选中文件 > Shift + 右键,会多出「复制为路径」命令**),在终端中输入:
```
## 手机重启到 Bootloader
adb reboot bootloader
## 如果 Ramdisk 为 yes
fastboot flash boot <修改后的 boot.img 路径>
## 刷入完成后重启
fastboot reboot
```
如果想要谨慎一点,比如说修改的镜像文件是从网上下载的,想先试试看能否正常启动,则可以用命令:`fastboot boot`。这样顺利启动系统后即可暂时拥有 Magisk ,不过重启后就会失效。
文件包中有Han.GJZS-v2.12.1附带了很多工具可以使用ADB和FastBoot不懂不要用
-----
## 结束
确认 Root 没有问题后,再打开 Magisk App 中选择**安装 > 直接安装**,来「永久」写入 Magisk。
系统更新时想要保留 Magisk 的,重新打包刷入一次是最为通用稳妥的办法。
!!! info
Magisk 工作机制是「拦截」Magisk通过挂载一个与系统文件相隔离的文件系统来加载自定义内容为系统分区打开了一个通往平行世界的入口所有改动在那个世界Magisk 分区里发生在必要的时候却又可以被认为是从系统分区的角度而言没有发生过。Magisk 可以被看作是一种文件系统,这种文件系统通过巧妙的实现方式避开了对系统文件的直接修改
## **面具 Ramdisk 为「否」的机型?**"
1. 下载当前系统的全量包,如果你使用了第三方 Recovery那么 recovery.img 就是这个第三方的镜像。提取 recovery.img **或者** MTK 中执行 `python mtk r recovery recovery.img`,备份,然后传到手机上
2. 修改镜像打开面具在选择修补文件后会多出一个「Recovery Mode」的选项。记得勾选
3. 刷入镜像:使用的命令是 `fastboot flash recovery <修改后的 recovery.img 路径>` **或者** `python mtk w recovery <修改后的 recovery.img 路径>`
这几步完成后,重启手机。和修改 boot.img 不同的是,我们需要立即按下设备进入 Recovery 的组
合键,这样才能挂载 Magisk 。这是因为我们是通过修改 recovery.img 的方式挂载 Magisk 的,只有在按下组合键的情况下,设备才会启动 recovery 分区,从而实现 Magisk 的挂载。
按下组合键后,设备不会进入 Recovery 模式,而是会闪屏过后直接进入一个有 Magisk 的系统。每一次重启都要这样做才能挂载 Magisk。进入系统后就没有特别需要注意的问题了。
而想要进入真正的 Recovery ,我们需要在按下组合键后的闪屏界面长按音量 + 键。
[^13]:**[通过 ADB 给手机刷入第三方 Recovery](https://blog.linioi.com/posts/8/)**

File diff suppressed because one or more lines are too long

BIN
logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 186 KiB

33
mkdocs.yml Normal file
View File

@ -0,0 +1,33 @@
site_name: IdontKnowRoot
site_url: https://root.dianas.cyou/
nav:
- 前言: index.md
- 准备: prepare.md
- 刷机: root.md
- 优化: better.md
- 关于: about.md
theme:
name: material
language: zh
logo: logo.png
palette:
primary: indigo
markdown_extensions:
- tables
- attr_list
- footnotes
- admonition
- pymdownx.details
- pymdownx.superfences
extra:
social:
- icon: fontawesome/brands/telegram
link: https://t.me/gjzsr
plugins:
- git-authors
repo_url: https://github.com/sudoskys/Root
copyright: Copyright &copy; 集体所有,商用需申请所有作者

View File

@ -2,7 +2,7 @@
>本文大多数资料都是综合收集来的,不许商用,需要商用请和引用列表内的源取得授权
文档已经上线 。
💡 **前言**:本教程仅供作者参考,阅读者**需要自己承担因尝试解锁导致的后果**。如果你对自己的动手能力感到怀疑,可以选择付费请人!**这个教程需要一台 WIN7及以上/Linux 的电脑。请先提前阅读一遍教程,而不是一步一步来。最好使用 Win10 ,避免驱动问题**

320
site/404.html Normal file
View File

@ -0,0 +1,320 @@
<!doctype html>
<html lang="zh" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="icon" href="/assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.3.1, mkdocs-material-8.4.0">
<title>IdontKnowRoot</title>
<link rel="stylesheet" href="/assets/stylesheets/main.69437709.min.css">
<link rel="stylesheet" href="/assets/stylesheets/palette.cbb835fc.min.css">
<meta name="theme-color" content="#4051b5">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL("/",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="indigo" data-md-color-accent="">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="页眉">
<a href="/." title="IdontKnowRoot" class="md-header__button md-logo" aria-label="IdontKnowRoot" data-md-component="logo">
<img src="/logo.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
IdontKnowRoot
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
</span>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/sudoskys/Root" title="前往仓库" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="导航栏" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="/." title="IdontKnowRoot" class="md-nav__button md-logo" aria-label="IdontKnowRoot" data-md-component="logo">
<img src="/logo.png" alt="logo">
</a>
IdontKnowRoot
</label>
<div class="md-nav__source">
<a href="https://github.com/sudoskys/Root" title="前往仓库" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="/." class="md-nav__link">
前言
</a>
</li>
<li class="md-nav__item">
<a href="/prepare/" class="md-nav__link">
准备
</a>
</li>
<li class="md-nav__item">
<a href="/root/" class="md-nav__link">
刷机
</a>
</li>
<li class="md-nav__item">
<a href="/better/" class="md-nav__link">
优化
</a>
</li>
<li class="md-nav__item">
<a href="/about/" class="md-nav__link">
关于
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="目录">
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1>404 - Not found</h1>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 集体所有,商用需申请所有作者
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://t.me/gjzsr" target="_blank" rel="noopener" title="t.me" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M248 8C111.033 8 0 119.033 0 256s111.033 248 248 248 248-111.033 248-248S384.967 8 248 8Zm114.952 168.66c-3.732 39.215-19.881 134.378-28.1 178.3-3.476 18.584-10.322 24.816-16.948 25.425-14.4 1.326-25.338-9.517-39.287-18.661-21.827-14.308-34.158-23.215-55.346-37.177-24.485-16.135-8.612-25 5.342-39.5 3.652-3.793 67.107-61.51 68.335-66.746.153-.655.3-3.1-1.154-4.384s-3.59-.849-5.135-.5q-3.283.746-104.608 69.142-14.845 10.194-26.894 9.934c-8.855-.191-25.888-5.006-38.551-9.123-15.531-5.048-27.875-7.717-26.8-16.291q.84-6.7 18.45-13.7 108.446-47.248 144.628-62.3c68.872-28.647 83.183-33.623 92.511-33.789 2.052-.034 6.639.474 9.61 2.885a10.452 10.452 0 0 1 3.53 6.716 43.765 43.765 0 0 1 .417 9.769Z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "/", "features": [], "search": "/assets/javascripts/workers/search.ecf98df9.min.js", "translations": {"clipboard.copied": "\u5df2\u590d\u5236", "clipboard.copy": "\u590d\u5236", "search.config.lang": "ja", "search.config.pipeline": "trimmer, stemmer", "search.config.separator": "[\\s\\-\uff0c\u3002]+", "search.placeholder": "\u641c\u7d22", "search.result.more.one": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.more.other": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 # \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.none": "\u6ca1\u6709\u627e\u5230\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.one": "\u627e\u5230 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.other": "# \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.placeholder": "\u952e\u5165\u4ee5\u5f00\u59cb\u641c\u7d22", "search.result.term.missing": "\u7f3a\u5c11", "select.version.title": "\u9009\u62e9\u5f53\u524d\u7248\u672c"}}</script>
<script src="/assets/javascripts/bundle.9c69f0bc.min.js"></script>
</body>
</html>

630
site/about/index.html Normal file
View File

@ -0,0 +1,630 @@
<!doctype html>
<html lang="zh" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="canonical" href="https://root.dianas.cyou/about/">
<link rel="icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.3.1, mkdocs-material-8.4.0">
<title>关于 - IdontKnowRoot</title>
<link rel="stylesheet" href="../assets/stylesheets/main.69437709.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.cbb835fc.min.css">
<meta name="theme-color" content="#4051b5">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="indigo" data-md-color-accent="">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#_1" class="md-skip">
跳转至
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="页眉">
<a href=".." title="IdontKnowRoot" class="md-header__button md-logo" aria-label="IdontKnowRoot" data-md-component="logo">
<img src="../logo.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
IdontKnowRoot
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
关于
</span>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/sudoskys/Root" title="前往仓库" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="导航栏" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href=".." title="IdontKnowRoot" class="md-nav__button md-logo" aria-label="IdontKnowRoot" data-md-component="logo">
<img src="../logo.png" alt="logo">
</a>
IdontKnowRoot
</label>
<div class="md-nav__source">
<a href="https://github.com/sudoskys/Root" title="前往仓库" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href=".." class="md-nav__link">
前言
</a>
</li>
<li class="md-nav__item">
<a href="../prepare/" class="md-nav__link">
准备
</a>
</li>
<li class="md-nav__item">
<a href="../root/" class="md-nav__link">
刷机
</a>
</li>
<li class="md-nav__item">
<a href="../better/" class="md-nav__link">
优化
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
关于
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
关于
</a>
<nav class="md-nav md-nav--secondary" aria-label="目录">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
目录
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#_1" class="md-nav__link">
社区
</a>
</li>
<li class="md-nav__item">
<a href="#magisk" class="md-nav__link">
Magisk
</a>
<nav class="md-nav" aria-label="Magisk">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_2" class="md-nav__link">
资源分享
</a>
</li>
<li class="md-nav__item">
<a href="#_3" class="md-nav__link">
社区模块库
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#lsposed" class="md-nav__link">
LSPosed
</a>
</li>
<li class="md-nav__item">
<a href="#7" class="md-nav__link">
安全验证^7
</a>
<nav class="md-nav" aria-label="安全验证^7">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_4" class="md-nav__link">
附录
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="目录">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
目录
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#_1" class="md-nav__link">
社区
</a>
</li>
<li class="md-nav__item">
<a href="#magisk" class="md-nav__link">
Magisk
</a>
<nav class="md-nav" aria-label="Magisk">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_2" class="md-nav__link">
资源分享
</a>
</li>
<li class="md-nav__item">
<a href="#_3" class="md-nav__link">
社区模块库
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#lsposed" class="md-nav__link">
LSPosed
</a>
</li>
<li class="md-nav__item">
<a href="#7" class="md-nav__link">
安全验证^7
</a>
<nav class="md-nav" aria-label="安全验证^7">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_4" class="md-nav__link">
附录
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/sudoskys/Root/edit/master/docs/about.md" title="编辑此页" class="md-content__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25Z"/></svg>
</a>
<h1>关于</h1>
<h2 id="_1">社区</h2>
<p><a class="md-button" href="https://fiime.cn/">Fiime :fontawesome-solid-paper-plane:</a></p>
<p><a href="https://fiime.cn/">Fiime</a></p>
<p><a href="https://forum.xda-developers.com/f/magisk.5903/">Magisk</a></p>
<p><a href="https://www.akr-developers.com/">AKR社区</a></p>
<h2 id="magisk"><a href="https://github.com/topjohnwu/Magisk">Magisk</a></h2>
<p>使用任何模块之前请考虑格机风险。模块推荐请自己查社区(酷安等)</p>
<h3 id="_2">资源分享</h3>
<p><a href="https://kamiui.ml/E52shuaji/">刷机资源</a></p>
<p><a href="https://mi.fiime.cn/libcangku">插件仓库-FiimeROM</a></p>
<p><a href="https://shuajinet.com/">Magisk 资源分享</a></p>
<p><a href="http://tx48.top/">Magisk仓库模块</a></p>
<h3 id="_3">社区模块库</h3>
<p><a href="https://www.androidacy.com/magisk-modules-repository/?utm_source=old-repo-link&amp;utm_medium=web&amp;utm_campaign=redirects">Magisk Modules Repository - Androidacy</a></p>
<h2 id="lsposed"><a href="https://github.com/LSPosed/LSPosed">LSPosed</a></h2>
<blockquote>
<p>LSPposed是一个模块框架可以在不接触任何APK的情况下更改系统和应用程序的行为。这意味着模块可以适用于不同的版本甚至ROM而无需任何更改只要原始代码没有更改太多。它也很容易撤消。由于所有更改都在内存中完成因此您只需停用模块并重新启动即可恢复原始系统。
</p>
</blockquote>
<p>请使用Zygiskriru已经停止维护。如果你使用Zygisk那么Riru就无法使用这样的话Lsposed也无法使用。不过Lsposed已经推出了Zygisk版本。Zygisk模式下用Shamiko模块的白名单模式真的是yyds。就是默认全局对所有应用隐藏Root除了超级用户授权过的应用可以获得Root权限其他新装软件都完全请求不到和检测到Root。低于安卓9的版本的Miui不要开启Zygisk模式亲测卡米</p>
<p><a href="https://www.bilibili.com/read/cv14287396">MagiskHide没了Zygisk又是啥</a></p>
<p><a href="https://www.bilibili.com/read/cv17028007">LSPosed第三期 - Riru版和Zygisk版安装使用指南【手机改造计划】</a></p>
<p><a href="https://github.com/LSPosed/LSPosed">GitHub - LSPosed/LSPosed: LSPosed Framework</a></p>
<p><a href="https://github.com/Xposed-Modules-Repo">Xposed-Modules-Repo</a></p>
<p><a href="https://t.me/s/LSPosed">LSPosed</a></p>
<p>下载模块后,在面具的设置中开启 Zygsik同时在模块中从本地安装 LSposed。重启设备桌面就新增 LSPosed 的APP。</p>
<h2 id="7">安全验证^7</h2>
<p>Google 那边已经给开发者提供了一个基于 SafetyNet 认证的反盗版功能anti-piracy feature开发者如果使用这套机制那么已经 root、无法通过 SafetyNet 认证的设备就没办法在 Play 商店搜索、下载和更新对应的 App。</p>
<p>SafetyNet 是 Google 移动服务套件的功能,这意味着,只有装有 GMS 并且应用调用了相关接口的情况下,我们才需要通过 SafetyNet 验证。逃避国内应用的 root 检测大部分情况下并不需要通过 SafetyNet 认证,只要使模块和 Magisk 不对这些应用生效即可,无需在意 SafetyNet 结果。</p>
<p>推荐 <a href="https://play.google.com/store/apps/details?id=rikka.safetynetchecker">YASNAC</a>。下载此软件,然后进行一次测试,我们便知道自己的设备是否启用了基于硬件的安全验证。</p>
<p>留意 <code>evaluationType</code> 一项的结果,根据前文的解释,若此结果为 <code>basic</code>,则意味着没有启用基于硬件的安全验证,若此结果为 <code>hardware</code>,则增强安全验证已经启用。</p>
<p>如果选项为 <code>basic</code>,我们可以:</p>
<p>• 开启 Zygisk使用排除列表将需要的应用添加进排除列表中依照前面的说法排除列表中的应用是不受 Magisk 影响的,并且由于系统没有基于硬件的安全验证,此时设备仍然可以通过 SafetyNet然而<strong>其代价是所有模块在此应用上均无效果</strong></p>
<p>Zygisk模式下用Shamiko模块的白名单模式真的是yyds。就是默认全局对所有应用隐藏Root除了超级用户授权过的应用可以获得Root权限其他新装软件都完全请求不到和检测到Root配置教程请读</p>
<p><a href="https://www.coolapk.com/feed/37950576">图文分享</a></p>
<p>附:</p>
<p><a href="https://play.google.com/store/apps/details?id=rikka.safetynetchecker"></a></p>
<p><a href="https://shizuku.rikka.app/zh-hans/">Shizuku</a></p>
<h3 id="_4">附录</h3>
<div class="footnote">
<hr />
<ol>
<li id="fn:1">
<p><strong>所需资料打包</strong><a href="https://push.dianas.cyou/LIS/Share/Root/">https://push.dianas.cyou/LIS/Share/Root/</a>&#160;<a class="footnote-backref" href="#fnref:1" title="Jump back to footnote 1 in the text">&#8617;</a></p>
</li>
<li id="fn:2">
<p><strong><em>*root、刷rec、rom通用教程&lt;</em></strong><em><a href="http://sudo0m.github.io/2022/05/29/root%E3%80%81%E5%88%B7rec%E3%80%81rom%E9%80%9A%E7%94%A8%E6%95%99%E7%A8%8B/">sudo0m.github.io/2022/05/29/root、刷rec、rom通用教程/</a></em><strong><em>&gt;</em></strong>*&#160;<a class="footnote-backref" href="#fnref:2" title="Jump back to footnote 2 in the text">&#8617;</a></p>
</li>
<li id="fn:3">
<p><a href="https://sspai.com/post/67932">Android 玩家必备神器入门:从零开始安装 Magisk - 少数派 (sspai.com)</a>&#160;<a class="footnote-backref" href="#fnref:3" title="Jump back to footnote 3 in the text">&#8617;</a></p>
</li>
<li id="fn:4">
<p>Magisk官方教程&lt;<a href="https://topjohnwu.github.io/Magisk/">https://topjohnwu.github.io/Magisk/</a>&gt;&#160;<a class="footnote-backref" href="#fnref:4" title="Jump back to footnote 4 in the text">&#8617;</a></p>
</li>
<li id="fn:5">
<p>Magisk官方论坛&lt;<a href="https://forum.xda-developers.com/f/magisk.5903/">https://forum.xda-developers.com/f/magisk.5903/</a>&gt;&#160;<a class="footnote-backref" href="#fnref:5" title="Jump back to footnote 5 in the text">&#8617;</a></p>
</li>
<li id="fn:6">
<p><a href="https://sspai.com/post/53043">每个 Android 玩家都不可错过的神器Magisk 初识与安装 - 少数派 (sspai.com)</a>&#160;<a class="footnote-backref" href="#fnref:6" title="Jump back to footnote 6 in the text">&#8617;</a></p>
</li>
<li id="fn:7">
<p><a href="https://sspai.com/post/69945">Android 玩机「神器」的矛盾与新生Magisk Canary 更新详解 - 少数派 (sspai.com)</a>&#160;<a class="footnote-backref" href="#fnref:7" title="Jump back to footnote 7 in the text">&#8617;</a></p>
</li>
<li id="fn:8">
<p><strong>Root隐藏教程</strong><a href="https://www.coolapk.com/feed/37950576">图文分享 - 酷安 (coolapk.com)</a>&#160;<a class="footnote-backref" href="#fnref:8" title="Jump back to footnote 8 in the text">&#8617;</a></p>
</li>
<li id="fn:9">
<p><strong>酷安MiaoHan 的专栏</strong> <a href="https://www.coolapk.com/feed/32286938">https://www.coolapk.com/feed/32286938</a>&#160;<a class="footnote-backref" href="#fnref:9" title="Jump back to footnote 9 in the text">&#8617;</a></p>
</li>
<li id="fn:10">
<p><a href="https://www.apkmirror.com/">APKMirror - Free APK Downloads - Free and safe Android APK downloads</a>&#160;<a class="footnote-backref" href="#fnref:10" title="Jump back to footnote 10 in the text">&#8617;</a></p>
</li>
<li id="fn:11">
<p><a href="https://docs.adlyq.ml/">Clash For Magisk简介 - CFM (adlyq.ml)</a>&#160;<a class="footnote-backref" href="#fnref:11" title="Jump back to footnote 11 in the text">&#8617;</a></p>
</li>
<li id="fn:12">
<p><strong><em>*小米手機各種刷機方式的疑問?</em></strong>* <a href="https://www.mobile01.com/topicdetail.php?f=634&amp;t=3725269">https://www.mobile01.com/topicdetail.php?f=634&amp;t=3725269</a>&#160;<a class="footnote-backref" href="#fnref:12" title="Jump back to footnote 12 in the text">&#8617;</a></p>
</li>
<li id="fn:13">
<p><strong><em>*<a href="https://blog.linioi.com/posts/8/">通过 ADB 给手机刷入第三方 Recovery</a></em></strong>*&#160;<a class="footnote-backref" href="#fnref:13" title="Jump back to footnote 13 in the text">&#8617;</a></p>
</li>
<li id="fn:14">
<p><strong><em>*小米如何刷入第三方Recovery</em></strong>* <a href="https://zhuanlan.zhihu.com/p/428730333">https://zhuanlan.zhihu.com/p/428730333</a>&#160;<a class="footnote-backref" href="#fnref:14" title="Jump back to footnote 14 in the text">&#8617;</a></p>
</li>
<li id="fn:15">
<p>告诉大家如何防止掉基带问题 <a href="https://www.coolapk.com/feed/21305538">https://www.coolapk.com/feed/21305538</a>&#160;<a class="footnote-backref" href="#fnref:15" title="Jump back to footnote 15 in the text">&#8617;</a></p>
</li>
<li id="fn:16">
<p>酷安Rannki原创 <a href="https://www.coolapk.com/feed/21305538?shareKey=NWMzMGQxYTU4OWMwNWZlNzJjZTc~&amp;shareUid=1294855&amp;shareFrom=com.coolapk.market_10.5.3">https://www.coolapk.com/feed/21305538</a>&#160;<a class="footnote-backref" href="#fnref:16" title="Jump back to footnote 16 in the text">&#8617;</a></p>
</li>
<li id="fn:17">
<p>常识基础 <a href="https://mi.fiime.cn/tutorial">https://mi.fiime.cn/tutorial</a>&#160;<a class="footnote-backref" href="#fnref:17" title="Jump back to footnote 17 in the text">&#8617;</a></p>
</li>
<li id="fn:18">
<p><strong>刷入原生ROM的通用教程等教程</strong> <a href="https://fiime.cn/thread/359">https://fiime.cn/thread/359</a>&#160;<a class="footnote-backref" href="#fnref:18" title="Jump back to footnote 18 in the text">&#8617;</a></p>
</li>
<li id="fn:19">
<p><strong><em>*<a href="https://blog.linioi.com/posts/10/">Violet 机型 PE/Plus 刷入教程</a></em></strong>*&#160;<a class="footnote-backref" href="#fnref:19" title="Jump back to footnote 19 in the text">&#8617;</a></p>
</li>
<li id="fn:20">
<p><strong><em>*<a href="https://blog.linioi.com/posts/11/">如何在 Redmi Note 7 Pro 上刷机?</a></em></strong>*&#160;<a class="footnote-backref" href="#fnref:20" title="Jump back to footnote 20 in the text">&#8617;</a></p>
</li>
<li id="fn:21">
<p><a href="https://wiki.pchelper666.com/%E5%BA%95%E5%B1%82%E5%88%B7%E6%9C%BA%E6%95%99%E7%A8%8B">https://wiki.pchelper666.com/底层刷机教程</a>&#160;<a class="footnote-backref" href="#fnref:21" title="Jump back to footnote 21 in the text">&#8617;</a></p>
</li>
<li id="fn:22">
<p><strong>高通9008线刷救黑砖教程</strong> <a href="https://www.bilibili.com/read/cv15031395/">https://www.bilibili.com/read/cv15031395/</a>&#160;<a class="footnote-backref" href="#fnref:22" title="Jump back to footnote 22 in the text">&#8617;</a></p>
</li>
</ol>
</div>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav class="md-footer__inner md-grid" aria-label="页脚" >
<a href="../better/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 优化" rel="prev">
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</div>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
上一页
</span>
优化
</div>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 集体所有,商用需申请所有作者
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://t.me/gjzsr" target="_blank" rel="noopener" title="t.me" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M248 8C111.033 8 0 119.033 0 256s111.033 248 248 248 248-111.033 248-248S384.967 8 248 8Zm114.952 168.66c-3.732 39.215-19.881 134.378-28.1 178.3-3.476 18.584-10.322 24.816-16.948 25.425-14.4 1.326-25.338-9.517-39.287-18.661-21.827-14.308-34.158-23.215-55.346-37.177-24.485-16.135-8.612-25 5.342-39.5 3.652-3.793 67.107-61.51 68.335-66.746.153-.655.3-3.1-1.154-4.384s-3.59-.849-5.135-.5q-3.283.746-104.608 69.142-14.845 10.194-26.894 9.934c-8.855-.191-25.888-5.006-38.551-9.123-15.531-5.048-27.875-7.717-26.8-16.291q.84-6.7 18.45-13.7 108.446-47.248 144.628-62.3c68.872-28.647 83.183-33.623 92.511-33.789 2.052-.034 6.639.474 9.61 2.885a10.452 10.452 0 0 1 3.53 6.716 43.765 43.765 0 0 1 .417 9.769Z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": [], "search": "../assets/javascripts/workers/search.ecf98df9.min.js", "translations": {"clipboard.copied": "\u5df2\u590d\u5236", "clipboard.copy": "\u590d\u5236", "search.config.lang": "ja", "search.config.pipeline": "trimmer, stemmer", "search.config.separator": "[\\s\\-\uff0c\u3002]+", "search.placeholder": "\u641c\u7d22", "search.result.more.one": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.more.other": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 # \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.none": "\u6ca1\u6709\u627e\u5230\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.one": "\u627e\u5230 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.other": "# \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.placeholder": "\u952e\u5165\u4ee5\u5f00\u59cb\u641c\u7d22", "search.result.term.missing": "\u7f3a\u5c11", "select.version.title": "\u9009\u62e9\u5f53\u524d\u7248\u672c"}}</script>
<script src="../assets/javascripts/bundle.9c69f0bc.min.js"></script>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,18 @@
/*!
* Lunr languages, `Danish` language
* https://github.com/MihaiValentin/lunr-languages
*
* Copyright 2014, Mihai Valentin
* http://www.mozilla.org/MPL/
*/
/*!
* based on
* Snowball JavaScript Library v0.3
* http://code.google.com/p/urim/
* http://snowball.tartarus.org/
*
* Copyright 2010, Oleg Mazko
* http://www.mozilla.org/MPL/
*/
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.da=function(){this.pipeline.reset(),this.pipeline.add(e.da.trimmer,e.da.stopWordFilter,e.da.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.da.stemmer))},e.da.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA--",e.da.trimmer=e.trimmerSupport.generateTrimmer(e.da.wordCharacters),e.Pipeline.registerFunction(e.da.trimmer,"trimmer-da"),e.da.stemmer=function(){var r=e.stemmerSupport.Among,i=e.stemmerSupport.SnowballProgram,n=new function(){function e(){var e,r=f.cursor+3;if(d=f.limit,0<=r&&r<=f.limit){for(a=r;;){if(e=f.cursor,f.in_grouping(w,97,248)){f.cursor=e;break}if(f.cursor=e,e>=f.limit)return;f.cursor++}for(;!f.out_grouping(w,97,248);){if(f.cursor>=f.limit)return;f.cursor++}d=f.cursor,d<a&&(d=a)}}function n(){var e,r;if(f.cursor>=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(c,32),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del();break;case 2:f.in_grouping_b(p,97,229)&&f.slice_del()}}function t(){var e,r=f.limit-f.cursor;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.find_among_b(l,4)?(f.bra=f.cursor,f.limit_backward=e,f.cursor=f.limit-r,f.cursor>f.limit_backward&&(f.cursor--,f.bra=f.cursor,f.slice_del())):f.limit_backward=e)}function s(){var e,r,i,n=f.limit-f.cursor;if(f.ket=f.cursor,f.eq_s_b(2,"st")&&(f.bra=f.cursor,f.eq_s_b(2,"ig")&&f.slice_del()),f.cursor=f.limit-n,f.cursor>=d&&(r=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,e=f.find_among_b(m,5),f.limit_backward=r,e))switch(f.bra=f.cursor,e){case 1:f.slice_del(),i=f.limit-f.cursor,t(),f.cursor=f.limit-i;break;case 2:f.slice_from("løs")}}function o(){var e;f.cursor>=d&&(e=f.limit_backward,f.limit_backward=d,f.ket=f.cursor,f.out_grouping_b(w,97,248)?(f.bra=f.cursor,u=f.slice_to(u),f.limit_backward=e,f.eq_v_b(u)&&f.slice_del()):f.limit_backward=e)}var a,d,u,c=[new r("hed",-1,1),new r("ethed",0,1),new r("ered",-1,1),new r("e",-1,1),new r("erede",3,1),new r("ende",3,1),new r("erende",5,1),new r("ene",3,1),new r("erne",3,1),new r("ere",3,1),new r("en",-1,1),new r("heden",10,1),new r("eren",10,1),new r("er",-1,1),new r("heder",13,1),new r("erer",13,1),new r("s",-1,2),new r("heds",16,1),new r("es",16,1),new r("endes",18,1),new r("erendes",19,1),new r("enes",18,1),new r("ernes",18,1),new r("eres",18,1),new r("ens",16,1),new r("hedens",24,1),new r("erens",24,1),new r("ers",16,1),new r("ets",16,1),new r("erets",28,1),new r("et",-1,1),new r("eret",30,1)],l=[new r("gd",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("elig",1,1),new r("els",-1,1),new r("løst",-1,2)],w=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],p=[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16],f=new i;this.setCurrent=function(e){f.setCurrent(e)},this.getCurrent=function(){return f.getCurrent()},this.stem=function(){var r=f.cursor;return e(),f.limit_backward=r,f.cursor=f.limit,n(),f.cursor=f.limit,t(),f.cursor=f.limit,s(),f.cursor=f.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}}(),e.Pipeline.registerFunction(e.da.stemmer,"stemmer-da"),e.da.stopWordFilter=e.generateStopWordFilter("ad af alle alt anden at blev blive bliver da de dem den denne der deres det dette dig din disse dog du efter eller en end er et for fra ham han hans har havde have hende hendes her hos hun hvad hvis hvor i ikke ind jeg jer jo kunne man mange med meget men mig min mine mit mod ned noget nogle nu når og også om op os over på selv sig sin sine sit skal skulle som sådan thi til ud under var vi vil ville vor være været".split(" ")),e.Pipeline.registerFunction(e.da.stopWordFilter,"stopWordFilter-da")}});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.hi=function(){this.pipeline.reset(),this.pipeline.add(e.hi.trimmer,e.hi.stopWordFilter,e.hi.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.hi.stemmer))},e.hi.wordCharacters="ऀ-ःऄ-एऐ-टठ-यर-िी-ॏॐ-य़ॠ-९॰-ॿa-zA-Z--0-9-",e.hi.trimmer=e.trimmerSupport.generateTrimmer(e.hi.wordCharacters),e.Pipeline.registerFunction(e.hi.trimmer,"trimmer-hi"),e.hi.stopWordFilter=e.generateStopWordFilter("अत अपना अपनी अपने अभी अंदर आदि आप इत्यादि इन इनका इन्हीं इन्हें इन्हों इस इसका इसकी इसके इसमें इसी इसे उन उनका उनकी उनके उनको उन्हीं उन्हें उन्हों उस उसके उसी उसे एक एवं एस ऐसे और कई कर करता करते करना करने करें कहते कहा का काफ़ी कि कितना किन्हें किन्हों किया किर किस किसी किसे की कुछ कुल के को कोई कौन कौनसा गया घर जब जहाँ जा जितना जिन जिन्हें जिन्हों जिस जिसे जीधर जैसा जैसे जो तक तब तरह तिन तिन्हें तिन्हों तिस तिसे तो था थी थे दबारा दिया दुसरा दूसरे दो द्वारा न नके नहीं ना निहायत नीचे ने पर पहले पूरा पे फिर बनी बही बहुत बाद बाला बिलकुल भी भीतर मगर मानो मे में यदि यह यहाँ यही या यिह ये रखें रहा रहे ऱ्वासा लिए लिये लेकिन व वग़ैरह वर्ग वह वहाँ वहीं वाले वुह वे वो सकता सकते सबसे सभी साथ साबुत साभ सारा से सो संग ही हुआ हुई हुए है हैं हो होता होती होते होना होने".split(" ")),e.hi.stemmer=function(){return function(e){return"function"==typeof e.update?e.update(function(e){return e}):e}}();var r=e.wordcut;r.init(),e.hi.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(r){return isLunr2?new e.Token(r.toLowerCase()):r.toLowerCase()});var t=i.toString().toLowerCase().replace(/^\s+/,"");return r.cut(t).split("|")},e.Pipeline.registerFunction(e.hi.stemmer,"stemmer-hi"),e.Pipeline.registerFunction(e.hi.stopWordFilter,"stopWordFilter-hi")}});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.ja=function(){this.pipeline.reset(),this.pipeline.add(e.ja.trimmer,e.ja.stopWordFilter,e.ja.stemmer),r?this.tokenizer=e.ja.tokenizer:(e.tokenizer&&(e.tokenizer=e.ja.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.ja.tokenizer))};var t=new e.TinySegmenter;e.ja.tokenizer=function(i){var n,o,s,p,a,u,m,l,c,f;if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t.toLowerCase()):t.toLowerCase()});for(o=i.toString().toLowerCase().replace(/^\s+/,""),n=o.length-1;n>=0;n--)if(/\S/.test(o.charAt(n))){o=o.substring(0,n+1);break}for(a=[],s=o.length,c=0,l=0;c<=s;c++)if(u=o.charAt(c),m=c-l,u.match(/\s/)||c==s){if(m>0)for(p=t.segment(o.slice(l,c)).filter(function(e){return!!e}),f=l,n=0;n<p.length;n++)r?a.push(new e.Token(p[n],{position:[f,p[n].length],index:a.length})):a.push(p[n]),f+=p[n].length;l=c+1}return a},e.ja.stemmer=function(){return function(e){return e}}(),e.Pipeline.registerFunction(e.ja.stemmer,"stemmer-ja"),e.ja.wordCharacters="一二三四五六七八九十百千万億兆一-龠々〆ヵヶぁ-んァ-ヴーア-ン゙a-zA-Z--0-9-",e.ja.trimmer=e.trimmerSupport.generateTrimmer(e.ja.wordCharacters),e.Pipeline.registerFunction(e.ja.trimmer,"trimmer-ja"),e.ja.stopWordFilter=e.generateStopWordFilter("これ それ あれ この その あの ここ そこ あそこ こちら どこ だれ なに なん 何 私 貴方 貴方方 我々 私達 あの人 あのかた 彼女 彼 です あります おります います は が の に を で え から まで より も どの と し それで しかし".split(" ")),e.Pipeline.registerFunction(e.ja.stopWordFilter,"stopWordFilter-ja"),e.jp=e.ja,e.Pipeline.registerFunction(e.jp.stemmer,"stemmer-jp"),e.Pipeline.registerFunction(e.jp.trimmer,"trimmer-jp"),e.Pipeline.registerFunction(e.jp.stopWordFilter,"stopWordFilter-jp")}});

View File

@ -0,0 +1 @@
module.exports=require("./lunr.ja");

View File

@ -0,0 +1 @@
!function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(e.lunr)}(this,function(){return function(e){e.multiLanguage=function(){for(var t=Array.prototype.slice.call(arguments),i=t.join("-"),r="",n=[],s=[],p=0;p<t.length;++p)"en"==t[p]?(r+="\\w",n.unshift(e.stopWordFilter),n.push(e.stemmer),s.push(e.stemmer)):(r+=e[t[p]].wordCharacters,e[t[p]].stopWordFilter&&n.unshift(e[t[p]].stopWordFilter),e[t[p]].stemmer&&(n.push(e[t[p]].stemmer),s.push(e[t[p]].stemmer)));var o=e.trimmerSupport.generateTrimmer(r);return e.Pipeline.registerFunction(o,"lunr-multi-trimmer-"+i),n.unshift(o),function(){this.pipeline.reset(),this.pipeline.add.apply(this.pipeline,n),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add.apply(this.searchPipeline,s))}}}});

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,18 @@
/*!
* Lunr languages, `Norwegian` language
* https://github.com/MihaiValentin/lunr-languages
*
* Copyright 2014, Mihai Valentin
* http://www.mozilla.org/MPL/
*/
/*!
* based on
* Snowball JavaScript Library v0.3
* http://code.google.com/p/urim/
* http://snowball.tartarus.org/
*
* Copyright 2010, Oleg Mazko
* http://www.mozilla.org/MPL/
*/
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.no=function(){this.pipeline.reset(),this.pipeline.add(e.no.trimmer,e.no.stopWordFilter,e.no.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.no.stemmer))},e.no.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA--",e.no.trimmer=e.trimmerSupport.generateTrimmer(e.no.wordCharacters),e.Pipeline.registerFunction(e.no.trimmer,"trimmer-no"),e.no.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){function e(){var e,r=w.cursor+3;if(a=w.limit,0<=r||r<=w.limit){for(s=r;;){if(e=w.cursor,w.in_grouping(d,97,248)){w.cursor=e;break}if(e>=w.limit)return;w.cursor=e+1}for(;!w.out_grouping(d,97,248);){if(w.cursor>=w.limit)return;w.cursor++}a=w.cursor,a<s&&(a=s)}}function i(){var e,r,n;if(w.cursor>=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(m,29),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:n=w.limit-w.cursor,w.in_grouping_b(c,98,122)?w.slice_del():(w.cursor=w.limit-n,w.eq_s_b(1,"k")&&w.out_grouping_b(d,97,248)&&w.slice_del());break;case 3:w.slice_from("er")}}function t(){var e,r=w.limit-w.cursor;w.cursor>=a&&(e=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,w.find_among_b(u,2)?(w.bra=w.cursor,w.limit_backward=e,w.cursor=w.limit-r,w.cursor>w.limit_backward&&(w.cursor--,w.bra=w.cursor,w.slice_del())):w.limit_backward=e)}function o(){var e,r;w.cursor>=a&&(r=w.limit_backward,w.limit_backward=a,w.ket=w.cursor,e=w.find_among_b(l,11),e?(w.bra=w.cursor,w.limit_backward=r,1==e&&w.slice_del()):w.limit_backward=r)}var s,a,m=[new r("a",-1,1),new r("e",-1,1),new r("ede",1,1),new r("ande",1,1),new r("ende",1,1),new r("ane",1,1),new r("ene",1,1),new r("hetene",6,1),new r("erte",1,3),new r("en",-1,1),new r("heten",9,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",12,1),new r("s",-1,2),new r("as",14,1),new r("es",14,1),new r("edes",16,1),new r("endes",16,1),new r("enes",16,1),new r("hetenes",19,1),new r("ens",14,1),new r("hetens",21,1),new r("ers",14,1),new r("ets",14,1),new r("et",-1,1),new r("het",25,1),new r("ert",-1,3),new r("ast",-1,1)],u=[new r("dt",-1,-1),new r("vt",-1,-1)],l=[new r("leg",-1,1),new r("eleg",0,1),new r("ig",-1,1),new r("eig",2,1),new r("lig",2,1),new r("elig",4,1),new r("els",-1,1),new r("lov",-1,1),new r("elov",7,1),new r("slov",7,1),new r("hetslov",9,1)],d=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],c=[119,125,149,1],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,i(),w.cursor=w.limit,t(),w.cursor=w.limit,o(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}}(),e.Pipeline.registerFunction(e.no.stemmer,"stemmer-no"),e.no.stopWordFilter=e.generateStopWordFilter("alle at av bare begge ble blei bli blir blitt både båe da de deg dei deim deira deires dem den denne der dere deres det dette di din disse ditt du dykk dykkar då eg ein eit eitt eller elles en enn er et ett etter for fordi fra før ha hadde han hans har hennar henne hennes her hjå ho hoe honom hoss hossen hun hva hvem hver hvilke hvilken hvis hvor hvordan hvorfor i ikke ikkje ikkje ingen ingi inkje inn inni ja jeg kan kom korleis korso kun kunne kva kvar kvarhelst kven kvi kvifor man mange me med medan meg meget mellom men mi min mine mitt mot mykje ned no noe noen noka noko nokon nokor nokre nå når og også om opp oss over på samme seg selv si si sia sidan siden sin sine sitt sjøl skal skulle slik so som som somme somt så sånn til um upp ut uten var vart varte ved vere verte vi vil ville vore vors vort vår være være vært å".split(" ")),e.Pipeline.registerFunction(e.no.stopWordFilter,"stopWordFilter-no")}});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
!function(r,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(r.lunr)}(this,function(){return function(r){r.stemmerSupport={Among:function(r,t,i,s){if(this.toCharArray=function(r){for(var t=r.length,i=new Array(t),s=0;s<t;s++)i[s]=r.charCodeAt(s);return i},!r&&""!=r||!t&&0!=t||!i)throw"Bad Among initialisation: s:"+r+", substring_i: "+t+", result: "+i;this.s_size=r.length,this.s=this.toCharArray(r),this.substring_i=t,this.result=i,this.method=s},SnowballProgram:function(){var r;return{bra:0,ket:0,limit:0,cursor:0,limit_backward:0,setCurrent:function(t){r=t,this.cursor=0,this.limit=t.length,this.limit_backward=0,this.bra=this.cursor,this.ket=this.limit},getCurrent:function(){var t=r;return r=null,t},in_grouping:function(t,i,s){if(this.cursor<this.limit){var e=r.charCodeAt(this.cursor);if(e<=s&&e>=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor++,!0}return!1},in_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e<=s&&e>=i&&(e-=i,t[e>>3]&1<<(7&e)))return this.cursor--,!0}return!1},out_grouping:function(t,i,s){if(this.cursor<this.limit){var e=r.charCodeAt(this.cursor);if(e>s||e<i)return this.cursor++,!0;if(e-=i,!(t[e>>3]&1<<(7&e)))return this.cursor++,!0}return!1},out_grouping_b:function(t,i,s){if(this.cursor>this.limit_backward){var e=r.charCodeAt(this.cursor-1);if(e>s||e<i)return this.cursor--,!0;if(e-=i,!(t[e>>3]&1<<(7&e)))return this.cursor--,!0}return!1},eq_s:function(t,i){if(this.limit-this.cursor<t)return!1;for(var s=0;s<t;s++)if(r.charCodeAt(this.cursor+s)!=i.charCodeAt(s))return!1;return this.cursor+=t,!0},eq_s_b:function(t,i){if(this.cursor-this.limit_backward<t)return!1;for(var s=0;s<t;s++)if(r.charCodeAt(this.cursor-t+s)!=i.charCodeAt(s))return!1;return this.cursor-=t,!0},find_among:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o<h?o:h,_=t[a],m=l;m<_.s_size;m++){if(n+l==u){f=-1;break}if(f=r.charCodeAt(n+l)-_.s[m])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n+_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n+_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},find_among_b:function(t,i){for(var s=0,e=i,n=this.cursor,u=this.limit_backward,o=0,h=0,c=!1;;){for(var a=s+(e-s>>1),f=0,l=o<h?o:h,_=t[a],m=_.s_size-1-l;m>=0;m--){if(n-l==u){f=-1;break}if(f=r.charCodeAt(n-1-l)-_.s[m])break;l++}if(f<0?(e=a,h=l):(s=a,o=l),e-s<=1){if(s>0||e==s||c)break;c=!0}}for(;;){var _=t[s];if(o>=_.s_size){if(this.cursor=n-_.s_size,!_.method)return _.result;var b=_.method();if(this.cursor=n-_.s_size,b)return _.result}if((s=_.substring_i)<0)return 0}},replace_s:function(t,i,s){var e=s.length-(i-t),n=r.substring(0,t),u=r.substring(i);return r=n+s+u,this.limit+=e,this.cursor>=i?this.cursor+=e:this.cursor>t&&(this.cursor=t),e},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>r.length)throw"faulty slice operation"},slice_from:function(r){this.slice_check(),this.replace_s(this.bra,this.ket,r)},slice_del:function(){this.slice_from("")},insert:function(r,t,i){var s=this.replace_s(r,t,i);r<=this.bra&&(this.bra+=s),r<=this.ket&&(this.ket+=s)},slice_to:function(){return this.slice_check(),r.substring(this.bra,this.ket)},eq_v_b:function(r){return this.eq_s_b(r.length,r)}}}},r.trimmerSupport={generateTrimmer:function(r){var t=new RegExp("^[^"+r+"]+"),i=new RegExp("[^"+r+"]+$");return function(r){return"function"==typeof r.update?r.update(function(r){return r.replace(t,"").replace(i,"")}):r.replace(t,"").replace(i,"")}}}}});

View File

@ -0,0 +1,18 @@
/*!
* Lunr languages, `Swedish` language
* https://github.com/MihaiValentin/lunr-languages
*
* Copyright 2014, Mihai Valentin
* http://www.mozilla.org/MPL/
*/
/*!
* based on
* Snowball JavaScript Library v0.3
* http://code.google.com/p/urim/
* http://snowball.tartarus.org/
*
* Copyright 2010, Oleg Mazko
* http://www.mozilla.org/MPL/
*/
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.sv=function(){this.pipeline.reset(),this.pipeline.add(e.sv.trimmer,e.sv.stopWordFilter,e.sv.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.sv.stemmer))},e.sv.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA--",e.sv.trimmer=e.trimmerSupport.generateTrimmer(e.sv.wordCharacters),e.Pipeline.registerFunction(e.sv.trimmer,"trimmer-sv"),e.sv.stemmer=function(){var r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,t=new function(){function e(){var e,r=w.cursor+3;if(o=w.limit,0<=r||r<=w.limit){for(a=r;;){if(e=w.cursor,w.in_grouping(l,97,246)){w.cursor=e;break}if(w.cursor=e,w.cursor>=w.limit)return;w.cursor++}for(;!w.out_grouping(l,97,246);){if(w.cursor>=w.limit)return;w.cursor++}o=w.cursor,o<a&&(o=a)}}function t(){var e,r=w.limit_backward;if(w.cursor>=o&&(w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(u,37),w.limit_backward=r,e))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.in_grouping_b(d,98,121)&&w.slice_del()}}function i(){var e=w.limit_backward;w.cursor>=o&&(w.limit_backward=o,w.cursor=w.limit,w.find_among_b(c,7)&&(w.cursor=w.limit,w.ket=w.cursor,w.cursor>w.limit_backward&&(w.bra=--w.cursor,w.slice_del())),w.limit_backward=e)}function s(){var e,r;if(w.cursor>=o){if(r=w.limit_backward,w.limit_backward=o,w.cursor=w.limit,w.ket=w.cursor,e=w.find_among_b(m,5))switch(w.bra=w.cursor,e){case 1:w.slice_del();break;case 2:w.slice_from("lös");break;case 3:w.slice_from("full")}w.limit_backward=r}}var a,o,u=[new r("a",-1,1),new r("arna",0,1),new r("erna",0,1),new r("heterna",2,1),new r("orna",0,1),new r("ad",-1,1),new r("e",-1,1),new r("ade",6,1),new r("ande",6,1),new r("arne",6,1),new r("are",6,1),new r("aste",6,1),new r("en",-1,1),new r("anden",12,1),new r("aren",12,1),new r("heten",12,1),new r("ern",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",18,1),new r("or",-1,1),new r("s",-1,2),new r("as",21,1),new r("arnas",22,1),new r("ernas",22,1),new r("ornas",22,1),new r("es",21,1),new r("ades",26,1),new r("andes",26,1),new r("ens",21,1),new r("arens",29,1),new r("hetens",29,1),new r("erns",21,1),new r("at",-1,1),new r("andet",-1,1),new r("het",-1,1),new r("ast",-1,1)],c=[new r("dd",-1,-1),new r("gd",-1,-1),new r("nn",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1),new r("tt",-1,-1)],m=[new r("ig",-1,1),new r("lig",0,1),new r("els",-1,1),new r("fullt",-1,3),new r("löst",-1,2)],l=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,24,0,32],d=[119,127,149],w=new n;this.setCurrent=function(e){w.setCurrent(e)},this.getCurrent=function(){return w.getCurrent()},this.stem=function(){var r=w.cursor;return e(),w.limit_backward=r,w.cursor=w.limit,t(),w.cursor=w.limit,i(),w.cursor=w.limit,s(),!0}};return function(e){return"function"==typeof e.update?e.update(function(e){return t.setCurrent(e),t.stem(),t.getCurrent()}):(t.setCurrent(e),t.stem(),t.getCurrent())}}(),e.Pipeline.registerFunction(e.sv.stemmer,"stemmer-sv"),e.sv.stopWordFilter=e.generateStopWordFilter("alla allt att av blev bli blir blivit de dem den denna deras dess dessa det detta dig din dina ditt du där då efter ej eller en er era ert ett från för ha hade han hans har henne hennes hon honom hur här i icke ingen inom inte jag ju kan kunde man med mellan men mig min mina mitt mot mycket ni nu när någon något några och om oss på samma sedan sig sin sina sitta själv skulle som så sådan sådana sådant till under upp ut utan vad var vara varför varit varje vars vart vem vi vid vilka vilkas vilken vilket vår våra vårt än är åt över".split(" ")),e.Pipeline.registerFunction(e.sv.stopWordFilter,"stopWordFilter-sv")}});

View File

@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r="2"==e.version[0];e.th=function(){this.pipeline.reset(),this.pipeline.add(e.th.trimmer),r?this.tokenizer=e.th.tokenizer:(e.tokenizer&&(e.tokenizer=e.th.tokenizer),this.tokenizerFn&&(this.tokenizerFn=e.th.tokenizer))},e.th.wordCharacters="[฀-๿]",e.th.trimmer=e.trimmerSupport.generateTrimmer(e.th.wordCharacters),e.Pipeline.registerFunction(e.th.trimmer,"trimmer-th");var t=e.wordcut;t.init(),e.th.tokenizer=function(i){if(!arguments.length||null==i||void 0==i)return[];if(Array.isArray(i))return i.map(function(t){return r?new e.Token(t):t});var n=i.toString().replace(/^\s+/,"");return t.cut(n).split("|")}}});

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");e.vi=function(){this.pipeline.reset(),this.pipeline.add(e.vi.stopWordFilter,e.vi.trimmer)},e.vi.wordCharacters="[A-Za-ẓ̀͐́͑̉̃̓ÂâÊêÔôĂ-ăĐ-đƠ-ơƯ-ư]",e.vi.trimmer=e.trimmerSupport.generateTrimmer(e.vi.wordCharacters),e.Pipeline.registerFunction(e.vi.trimmer,"trimmer-vi"),e.vi.stopWordFilter=e.generateStopWordFilter("là cái nhưng mà".split(" "))}});

View File

@ -0,0 +1 @@
!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r(require("nodejieba")):r()(e.lunr)}(this,function(e){return function(r,t){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var i="2"==r.version[0];r.zh=function(){this.pipeline.reset(),this.pipeline.add(r.zh.trimmer,r.zh.stopWordFilter,r.zh.stemmer),i?this.tokenizer=r.zh.tokenizer:(r.tokenizer&&(r.tokenizer=r.zh.tokenizer),this.tokenizerFn&&(this.tokenizerFn=r.zh.tokenizer))},r.zh.tokenizer=function(n){if(!arguments.length||null==n||void 0==n)return[];if(Array.isArray(n))return n.map(function(e){return i?new r.Token(e.toLowerCase()):e.toLowerCase()});t&&e.load(t);var o=n.toString().trim().toLowerCase(),s=[];e.cut(o,!0).forEach(function(e){s=s.concat(e.split(" "))}),s=s.filter(function(e){return!!e});var u=0;return s.map(function(e,t){if(i){var n=o.indexOf(e,u),s={};return s.position=[n,e.length],s.index=t,u=n,new r.Token(e,s)}return e})},r.zh.wordCharacters="\\w一-龥",r.zh.trimmer=r.trimmerSupport.generateTrimmer(r.zh.wordCharacters),r.Pipeline.registerFunction(r.zh.trimmer,"trimmer-zh"),r.zh.stemmer=function(){return function(e){return e}}(),r.Pipeline.registerFunction(r.zh.stemmer,"stemmer-zh"),r.zh.stopWordFilter=r.generateStopWordFilter("的 一 不 在 人 有 是 为 以 于 上 他 而 后 之 来 及 了 因 下 可 到 由 这 与 也 此 但 并 个 其 已 无 小 我 们 起 最 再 今 去 好 只 又 或 很 亦 某 把 那 你 乃 它 吧 被 比 别 趁 当 从 到 得 打 凡 儿 尔 该 各 给 跟 和 何 还 即 几 既 看 据 距 靠 啦 了 另 么 每 们 嘛 拿 哪 那 您 凭 且 却 让 仍 啥 如 若 使 谁 虽 随 同 所 她 哇 嗡 往 哪 些 向 沿 哟 用 于 咱 则 怎 曾 至 致 着 诸 自".split(" ")),r.Pipeline.registerFunction(r.zh.stopWordFilter,"stopWordFilter-zh")}});

View File

@ -0,0 +1,206 @@
/**
* export the module via AMD, CommonJS or as a browser global
* Export code from https://github.com/umdjs/umd/blob/master/returnExports.js
*/
;(function (root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(factory)
} else if (typeof exports === 'object') {
/**
* Node. Does not work with strict CommonJS, but
* only CommonJS-like environments that support module.exports,
* like Node.
*/
module.exports = factory()
} else {
// Browser globals (root is window)
factory()(root.lunr);
}
}(this, function () {
/**
* Just return a value to define the module export.
* This example returns an object, but the module
* can return a function as the exported value.
*/
return function(lunr) {
// TinySegmenter 0.1 -- Super compact Japanese tokenizer in Javascript
// (c) 2008 Taku Kudo <taku@chasen.org>
// TinySegmenter is freely distributable under the terms of a new BSD licence.
// For details, see http://chasen.org/~taku/software/TinySegmenter/LICENCE.txt
function TinySegmenter() {
var patterns = {
"[一二三四五六七八九十百千万億兆]":"M",
"[一-龠々〆ヵヶ]":"H",
"[ぁ-ん]":"I",
"[ァ-ヴーア-ン゙ー]":"K",
"[a-zA-Z--]":"A",
"[0-9-]":"N"
}
this.chartype_ = [];
for (var i in patterns) {
var regexp = new RegExp(i);
this.chartype_.push([regexp, patterns[i]]);
}
this.BIAS__ = -332
this.BC1__ = {"HH":6,"II":2461,"KH":406,"OH":-1378};
this.BC2__ = {"AA":-3267,"AI":2744,"AN":-878,"HH":-4070,"HM":-1711,"HN":4012,"HO":3761,"IA":1327,"IH":-1184,"II":-1332,"IK":1721,"IO":5492,"KI":3831,"KK":-8741,"MH":-3132,"MK":3334,"OO":-2920};
this.BC3__ = {"HH":996,"HI":626,"HK":-721,"HN":-1307,"HO":-836,"IH":-301,"KK":2762,"MK":1079,"MM":4034,"OA":-1652,"OH":266};
this.BP1__ = {"BB":295,"OB":304,"OO":-125,"UB":352};
this.BP2__ = {"BO":60,"OO":-1762};
this.BQ1__ = {"BHH":1150,"BHM":1521,"BII":-1158,"BIM":886,"BMH":1208,"BNH":449,"BOH":-91,"BOO":-2597,"OHI":451,"OIH":-296,"OKA":1851,"OKH":-1020,"OKK":904,"OOO":2965};
this.BQ2__ = {"BHH":118,"BHI":-1159,"BHM":466,"BIH":-919,"BKK":-1720,"BKO":864,"OHH":-1139,"OHM":-181,"OIH":153,"UHI":-1146};
this.BQ3__ = {"BHH":-792,"BHI":2664,"BII":-299,"BKI":419,"BMH":937,"BMM":8335,"BNN":998,"BOH":775,"OHH":2174,"OHM":439,"OII":280,"OKH":1798,"OKI":-793,"OKO":-2242,"OMH":-2402,"OOO":11699};
this.BQ4__ = {"BHH":-3895,"BIH":3761,"BII":-4654,"BIK":1348,"BKK":-1806,"BMI":-3385,"BOO":-12396,"OAH":926,"OHH":266,"OHK":-2036,"ONN":-973};
this.BW1__ = {",と":660,",同":727,"B1あ":1404,"B1同":542,"、と":660,"、同":727,"」と":1682,"あっ":1505,"いう":1743,"いっ":-2055,"いる":672,"うし":-4817,"うん":665,"から":3472,"がら":600,"こう":-790,"こと":2083,"こん":-1262,"さら":-4143,"さん":4573,"した":2641,"して":1104,"すで":-3399,"そこ":1977,"それ":-871,"たち":1122,"ため":601,"った":3463,"つい":-802,"てい":805,"てき":1249,"でき":1127,"です":3445,"では":844,"とい":-4915,"とみ":1922,"どこ":3887,"ない":5713,"なっ":3015,"など":7379,"なん":-1113,"にし":2468,"には":1498,"にも":1671,"に対":-912,"の一":-501,"の中":741,"ませ":2448,"まで":1711,"まま":2600,"まる":-2155,"やむ":-1947,"よっ":-2565,"れた":2369,"れで":-913,"をし":1860,"を見":731,"亡く":-1886,"京都":2558,"取り":-2784,"大き":-2604,"大阪":1497,"平方":-2314,"引き":-1336,"日本":-195,"本当":-2423,"毎日":-2113,"目指":-724,"B1あ":1404,"B1同":542,"」と":1682};
this.BW2__ = {"..":-11822,"11":-669,"――":-5730,"":-13175,"いう":-1609,"うか":2490,"かし":-1350,"かも":-602,"から":-7194,"かれ":4612,"がい":853,"がら":-3198,"きた":1941,"くな":-1597,"こと":-8392,"この":-4193,"させ":4533,"され":13168,"さん":-3977,"しい":-1819,"しか":-545,"した":5078,"して":972,"しな":939,"その":-3744,"たい":-1253,"たた":-662,"ただ":-3857,"たち":-786,"たと":1224,"たは":-939,"った":4589,"って":1647,"っと":-2094,"てい":6144,"てき":3640,"てく":2551,"ては":-3110,"ても":-3065,"でい":2666,"でき":-1528,"でし":-3828,"です":-4761,"でも":-4203,"とい":1890,"とこ":-1746,"とと":-2279,"との":720,"とみ":5168,"とも":-3941,"ない":-2488,"なが":-1313,"など":-6509,"なの":2614,"なん":3099,"にお":-1615,"にし":2748,"にな":2454,"によ":-7236,"に対":-14943,"に従":-4688,"に関":-11388,"のか":2093,"ので":-7059,"のに":-6041,"のの":-6125,"はい":1073,"はが":-1033,"はず":-2532,"ばれ":1813,"まし":-1316,"まで":-6621,"まれ":5409,"めて":-3153,"もい":2230,"もの":-10713,"らか":-944,"らし":-1611,"らに":-1897,"りし":651,"りま":1620,"れた":4270,"れて":849,"れば":4114,"ろう":6067,"われ":7901,"を通":-11877,"んだ":728,"んな":-4115,"一人":602,"一方":-1375,"一日":970,"一部":-1051,"上が":-4479,"会社":-1116,"出て":2163,"分の":-7758,"同党":970,"同日":-913,"大阪":-2471,"委員":-1250,"少な":-1050,"年度":-8669,"年間":-1626,"府県":-2363,"手権":-1982,"新聞":-4066,"日新":-722,"日本":-7068,"日米":3372,"曜日":-601,"朝鮮":-2355,"本人":-2697,"東京":-1543,"然と":-1384,"社会":-1276,"立て":-990,"第に":-1612,"米国":-4268,"":-669};
this.BW3__ = {"あた":-2194,"あり":719,"ある":3846,"い.":-1185,"い。":-1185,"いい":5308,"いえ":2079,"いく":3029,"いた":2056,"いっ":1883,"いる":5600,"いわ":1527,"うち":1117,"うと":4798,"えと":1454,"か.":2857,"か。":2857,"かけ":-743,"かっ":-4098,"かに":-669,"から":6520,"かり":-2670,"が,":1816,"が、":1816,"がき":-4855,"がけ":-1127,"がっ":-913,"がら":-4977,"がり":-2064,"きた":1645,"けど":1374,"こと":7397,"この":1542,"ころ":-2757,"さい":-714,"さを":976,"し,":1557,"し、":1557,"しい":-3714,"した":3562,"して":1449,"しな":2608,"しま":1200,"す.":-1310,"す。":-1310,"する":6521,"ず,":3426,"ず、":3426,"ずに":841,"そう":428,"た.":8875,"た。":8875,"たい":-594,"たの":812,"たり":-1183,"たる":-853,"だ.":4098,"だ。":4098,"だっ":1004,"った":-4748,"って":300,"てい":6240,"てお":855,"ても":302,"です":1437,"でに":-1482,"では":2295,"とう":-1387,"とし":2266,"との":541,"とも":-3543,"どう":4664,"ない":1796,"なく":-903,"など":2135,"に,":-1021,"に、":-1021,"にし":1771,"にな":1906,"には":2644,"の,":-724,"の、":-724,"の子":-1000,"は,":1337,"は、":1337,"べき":2181,"まし":1113,"ます":6943,"まっ":-1549,"まで":6154,"まれ":-793,"らし":1479,"られ":6820,"るる":3818,"れ,":854,"れ、":854,"れた":1850,"れて":1375,"れば":-3246,"れる":1091,"われ":-605,"んだ":606,"んで":798,"カ月":990,"会議":860,"入り":1232,"大会":2217,"始め":1681,"市":965,"新聞":-5055,"日,":974,"日、":974,"社会":2024,"カ月":990};
this.TC1__ = {"AAA":1093,"HHH":1029,"HHM":580,"HII":998,"HOH":-390,"HOM":-331,"IHI":1169,"IOH":-142,"IOI":-1015,"IOM":467,"MMH":187,"OOI":-1832};
this.TC2__ = {"HHO":2088,"HII":-1023,"HMM":-1154,"IHI":-1965,"KKH":703,"OII":-2649};
this.TC3__ = {"AAA":-294,"HHH":346,"HHI":-341,"HII":-1088,"HIK":731,"HOH":-1486,"IHH":128,"IHI":-3041,"IHO":-1935,"IIH":-825,"IIM":-1035,"IOI":-542,"KHH":-1216,"KKA":491,"KKH":-1217,"KOK":-1009,"MHH":-2694,"MHM":-457,"MHO":123,"MMH":-471,"NNH":-1689,"NNO":662,"OHO":-3393};
this.TC4__ = {"HHH":-203,"HHI":1344,"HHK":365,"HHM":-122,"HHN":182,"HHO":669,"HIH":804,"HII":679,"HOH":446,"IHH":695,"IHO":-2324,"IIH":321,"III":1497,"IIO":656,"IOO":54,"KAK":4845,"KKA":3386,"KKK":3065,"MHH":-405,"MHI":201,"MMH":-241,"MMM":661,"MOM":841};
this.TQ1__ = {"BHHH":-227,"BHHI":316,"BHIH":-132,"BIHH":60,"BIII":1595,"BNHH":-744,"BOHH":225,"BOOO":-908,"OAKK":482,"OHHH":281,"OHIH":249,"OIHI":200,"OIIH":-68};
this.TQ2__ = {"BIHH":-1401,"BIII":-1033,"BKAK":-543,"BOOO":-5591};
this.TQ3__ = {"BHHH":478,"BHHM":-1073,"BHIH":222,"BHII":-504,"BIIH":-116,"BIII":-105,"BMHI":-863,"BMHM":-464,"BOMH":620,"OHHH":346,"OHHI":1729,"OHII":997,"OHMH":481,"OIHH":623,"OIIH":1344,"OKAK":2792,"OKHH":587,"OKKA":679,"OOHH":110,"OOII":-685};
this.TQ4__ = {"BHHH":-721,"BHHM":-3604,"BHII":-966,"BIIH":-607,"BIII":-2181,"OAAA":-2763,"OAKK":180,"OHHH":-294,"OHHI":2446,"OHHO":480,"OHIH":-1573,"OIHH":1935,"OIHI":-493,"OIIH":626,"OIII":-4007,"OKAK":-8156};
this.TW1__ = {"につい":-4681,"東京都":2026};
this.TW2__ = {"ある程":-2049,"いった":-1256,"ころが":-2434,"しょう":3873,"その後":-4430,"だって":-1049,"ていた":1833,"として":-4657,"ともに":-4517,"もので":1882,"一気に":-792,"初めて":-1512,"同時に":-8097,"大きな":-1255,"対して":-2721,"社会党":-3216};
this.TW3__ = {"いただ":-1734,"してい":1314,"として":-4314,"につい":-5483,"にとっ":-5989,"に当た":-6247,"ので,":-727,"ので、":-727,"のもの":-600,"れから":-3752,"十二月":-2287};
this.TW4__ = {"いう.":8576,"いう。":8576,"からな":-2348,"してい":2958,"たが,":1516,"たが、":1516,"ている":1538,"という":1349,"ました":5543,"ません":1097,"ようと":-4258,"よると":5865};
this.UC1__ = {"A":484,"K":93,"M":645,"O":-505};
this.UC2__ = {"A":819,"H":1059,"I":409,"M":3987,"N":5775,"O":646};
this.UC3__ = {"A":-1370,"I":2311};
this.UC4__ = {"A":-2643,"H":1809,"I":-1032,"K":-3450,"M":3565,"N":3876,"O":6646};
this.UC5__ = {"H":313,"I":-1238,"K":-799,"M":539,"O":-831};
this.UC6__ = {"H":-506,"I":-253,"K":87,"M":247,"O":-387};
this.UP1__ = {"O":-214};
this.UP2__ = {"B":69,"O":935};
this.UP3__ = {"B":189};
this.UQ1__ = {"BH":21,"BI":-12,"BK":-99,"BN":142,"BO":-56,"OH":-95,"OI":477,"OK":410,"OO":-2422};
this.UQ2__ = {"BH":216,"BI":113,"OK":1759};
this.UQ3__ = {"BA":-479,"BH":42,"BI":1913,"BK":-7198,"BM":3160,"BN":6427,"BO":14761,"OI":-827,"ON":-3212};
this.UW1__ = {",":156,"、":156,"「":-463,"あ":-941,"う":-127,"が":-553,"き":121,"こ":505,"で":-201,"と":-547,"ど":-123,"に":-789,"の":-185,"は":-847,"も":-466,"や":-470,"よ":182,"ら":-292,"り":208,"れ":169,"を":-446,"ん":-137,"・":-135,"主":-402,"京":-268,"区":-912,"午":871,"国":-460,"大":561,"委":729,"市":-411,"日":-141,"理":361,"生":-408,"県":-386,"都":-718,"「":-463,"・":-135};
this.UW2__ = {",":-829,"、":-829,"":892,"「":-645,"」":3145,"あ":-538,"い":505,"う":134,"お":-502,"か":1454,"が":-856,"く":-412,"こ":1141,"さ":878,"ざ":540,"し":1529,"す":-675,"せ":300,"そ":-1011,"た":188,"だ":1837,"つ":-949,"て":-291,"で":-268,"と":-981,"ど":1273,"な":1063,"に":-1764,"の":130,"は":-409,"ひ":-1273,"べ":1261,"ま":600,"も":-1263,"や":-402,"よ":1639,"り":-579,"る":-694,"れ":571,"を":-2516,"ん":2095,"ア":-587,"カ":306,"キ":568,"ッ":831,"三":-758,"不":-2150,"世":-302,"中":-968,"主":-861,"事":492,"人":-123,"会":978,"保":362,"入":548,"初":-3025,"副":-1566,"北":-3414,"区":-422,"大":-1769,"天":-865,"太":-483,"子":-1519,"学":760,"実":1023,"小":-2009,"市":-813,"年":-1060,"強":1067,"手":-1519,"揺":-1033,"政":1522,"文":-1355,"新":-1682,"日":-1815,"明":-1462,"最":-630,"朝":-1843,"本":-1650,"東":-931,"果":-665,"次":-2378,"民":-180,"気":-1740,"理":752,"発":529,"目":-1584,"相":-242,"県":-1165,"立":-763,"第":810,"米":509,"自":-1353,"行":838,"西":-744,"見":-3874,"調":1010,"議":1198,"込":3041,"開":1758,"間":-1257,"「":-645,"」":3145,"ッ":831,"ア":-587,"カ":306,"キ":568};
this.UW3__ = {",":4889,"1":-800,"":-1723,"、":4889,"々":-2311,"":5827,"」":2670,"〓":-3573,"あ":-2696,"い":1006,"う":2342,"え":1983,"お":-4864,"か":-1163,"が":3271,"く":1004,"け":388,"げ":401,"こ":-3552,"ご":-3116,"さ":-1058,"し":-395,"す":584,"せ":3685,"そ":-5228,"た":842,"ち":-521,"っ":-1444,"つ":-1081,"て":6167,"で":2318,"と":1691,"ど":-899,"な":-2788,"に":2745,"の":4056,"は":4555,"ひ":-2171,"ふ":-1798,"へ":1199,"ほ":-5516,"ま":-4384,"み":-120,"め":1205,"も":2323,"や":-788,"よ":-202,"ら":727,"り":649,"る":5905,"れ":2773,"わ":-1207,"を":6620,"ん":-518,"ア":551,"グ":1319,"ス":874,"ッ":-1350,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278,"・":-3794,"一":-1619,"下":-1759,"世":-2087,"両":3815,"中":653,"主":-758,"予":-1193,"二":974,"人":2742,"今":792,"他":1889,"以":-1368,"低":811,"何":4265,"作":-361,"保":-2439,"元":4858,"党":3593,"全":1574,"公":-3030,"六":755,"共":-1880,"円":5807,"再":3095,"分":457,"初":2475,"別":1129,"前":2286,"副":4437,"力":365,"動":-949,"務":-1872,"化":1327,"北":-1038,"区":4646,"千":-2309,"午":-783,"協":-1006,"口":483,"右":1233,"各":3588,"合":-241,"同":3906,"和":-837,"員":4513,"国":642,"型":1389,"場":1219,"外":-241,"妻":2016,"学":-1356,"安":-423,"実":-1008,"家":1078,"小":-513,"少":-3102,"州":1155,"市":3197,"平":-1804,"年":2416,"広":-1030,"府":1605,"度":1452,"建":-2352,"当":-3885,"得":1905,"思":-1291,"性":1822,"戸":-488,"指":-3973,"政":-2013,"教":-1479,"数":3222,"文":-1489,"新":1764,"日":2099,"旧":5792,"昨":-661,"時":-1248,"曜":-951,"最":-937,"月":4125,"期":360,"李":3094,"村":364,"東":-805,"核":5156,"森":2438,"業":484,"氏":2613,"民":-1694,"決":-1073,"法":1868,"海":-495,"無":979,"物":461,"特":-3850,"生":-273,"用":914,"町":1215,"的":7313,"直":-1835,"省":792,"県":6293,"知":-1528,"私":4231,"税":401,"立":-960,"第":1201,"米":7767,"系":3066,"約":3663,"級":1384,"統":-4229,"総":1163,"線":1255,"者":6457,"能":725,"自":-2869,"英":785,"見":1044,"調":-562,"財":-733,"費":1777,"車":1835,"軍":1375,"込":-1504,"通":-1136,"選":-681,"郎":1026,"郡":4404,"部":1200,"金":2163,"長":421,"開":-1432,"間":1302,"関":-1282,"雨":2009,"電":-1045,"非":2066,"駅":1620,"":-800,"」":2670,"・":-3794,"ッ":-1350,"ア":551,"グ":1319,"ス":874,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278};
this.UW4__ = {",":3930,".":3508,"―":-4841,"、":3930,"。":3508,"":4999,"「":1895,"」":3798,"〓":-5156,"あ":4752,"い":-3435,"う":-640,"え":-2514,"お":2405,"か":530,"が":6006,"き":-4482,"ぎ":-3821,"く":-3788,"け":-4376,"げ":-4734,"こ":2255,"ご":1979,"さ":2864,"し":-843,"じ":-2506,"す":-731,"ず":1251,"せ":181,"そ":4091,"た":5034,"だ":5408,"ち":-3654,"っ":-5882,"つ":-1659,"て":3994,"で":7410,"と":4547,"な":5433,"に":6499,"ぬ":1853,"ね":1413,"の":7396,"は":8578,"ば":1940,"ひ":4249,"び":-4134,"ふ":1345,"へ":6665,"べ":-744,"ほ":1464,"ま":1051,"み":-2082,"む":-882,"め":-5046,"も":4169,"ゃ":-2666,"や":2795,"ょ":-1544,"よ":3351,"ら":-2922,"り":-9726,"る":-14896,"れ":-2613,"ろ":-4570,"わ":-1783,"を":13150,"ん":-2352,"カ":2145,"コ":1789,"セ":1287,"ッ":-724,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637,"・":-4371,"ー":-11870,"一":-2069,"中":2210,"予":782,"事":-190,"井":-1768,"人":1036,"以":544,"会":950,"体":-1286,"作":530,"側":4292,"先":601,"党":-2006,"共":-1212,"内":584,"円":788,"初":1347,"前":1623,"副":3879,"力":-302,"動":-740,"務":-2715,"化":776,"区":4517,"協":1013,"参":1555,"合":-1834,"和":-681,"員":-910,"器":-851,"回":1500,"国":-619,"園":-1200,"地":866,"場":-1410,"塁":-2094,"士":-1413,"多":1067,"大":571,"子":-4802,"学":-1397,"定":-1057,"寺":-809,"小":1910,"屋":-1328,"山":-1500,"島":-2056,"川":-2667,"市":2771,"年":374,"庁":-4556,"後":456,"性":553,"感":916,"所":-1566,"支":856,"改":787,"政":2182,"教":704,"文":522,"方":-856,"日":1798,"時":1829,"最":845,"月":-9066,"木":-485,"来":-442,"校":-360,"業":-1043,"氏":5388,"民":-2716,"気":-910,"沢":-939,"済":-543,"物":-735,"率":672,"球":-1267,"生":-1286,"産":-1101,"田":-2900,"町":1826,"的":2586,"目":922,"省":-3485,"県":2997,"空":-867,"立":-2112,"第":788,"米":2937,"系":786,"約":2171,"経":1146,"統":-1169,"総":940,"線":-994,"署":749,"者":2145,"能":-730,"般":-852,"行":-792,"規":792,"警":-1184,"議":-244,"谷":-1000,"賞":730,"車":-1481,"軍":1158,"輪":-1433,"込":-3370,"近":929,"道":-1291,"選":2596,"郎":-4866,"都":1192,"野":-1100,"銀":-2213,"長":357,"間":-2344,"院":-2297,"際":-2604,"電":-878,"領":-1659,"題":-792,"館":-1984,"首":1749,"高":2120,"「":1895,"」":3798,"・":-4371,"ッ":-724,"ー":-11870,"カ":2145,"コ":1789,"セ":1287,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637};
this.UW5__ = {",":465,".":-299,"1":-514,"E2":-32768,"]":-2762,"、":465,"。":-299,"「":363,"あ":1655,"い":331,"う":-503,"え":1199,"お":527,"か":647,"が":-421,"き":1624,"ぎ":1971,"く":312,"げ":-983,"さ":-1537,"し":-1371,"す":-852,"だ":-1186,"ち":1093,"っ":52,"つ":921,"て":-18,"で":-850,"と":-127,"ど":1682,"な":-787,"に":-1224,"の":-635,"は":-578,"べ":1001,"み":502,"め":865,"ゃ":3350,"ょ":854,"り":-208,"る":429,"れ":504,"わ":419,"を":-1264,"ん":327,"イ":241,"ル":451,"ン":-343,"中":-871,"京":722,"会":-1153,"党":-654,"務":3519,"区":-901,"告":848,"員":2104,"大":-1296,"学":-548,"定":1785,"嵐":-1304,"市":-2991,"席":921,"年":1763,"思":872,"所":-814,"挙":1618,"新":-1682,"日":218,"月":-4353,"査":932,"格":1356,"機":-1508,"氏":-1347,"田":240,"町":-3912,"的":-3149,"相":1319,"省":-1052,"県":-4003,"研":-997,"社":-278,"空":-813,"統":1955,"者":-2233,"表":663,"語":-1073,"議":1219,"選":-1018,"郎":-368,"長":786,"間":1191,"題":2368,"館":-689,"":-514,"":-32768,"「":363,"イ":241,"ル":451,"ン":-343};
this.UW6__ = {",":227,".":808,"1":-270,"E1":306,"、":227,"。":808,"あ":-307,"う":189,"か":241,"が":-73,"く":-121,"こ":-200,"じ":1782,"す":383,"た":-428,"っ":573,"て":-1014,"で":101,"と":-105,"な":-253,"に":-149,"の":-417,"は":-236,"も":-206,"り":187,"る":-135,"を":195,"ル":-673,"ン":-496,"一":-277,"中":201,"件":-800,"会":624,"前":302,"区":1792,"員":-1212,"委":798,"学":-960,"市":887,"広":-695,"後":535,"業":-697,"相":753,"社":-507,"福":974,"空":-822,"者":1811,"連":463,"郎":1082,"":-270,"":306,"ル":-673,"ン":-496};
return this;
}
TinySegmenter.prototype.ctype_ = function(str) {
for (var i in this.chartype_) {
if (str.match(this.chartype_[i][0])) {
return this.chartype_[i][1];
}
}
return "O";
}
TinySegmenter.prototype.ts_ = function(v) {
if (v) { return v; }
return 0;
}
TinySegmenter.prototype.segment = function(input) {
if (input == null || input == undefined || input == "") {
return [];
}
var result = [];
var seg = ["B3","B2","B1"];
var ctype = ["O","O","O"];
var o = input.split("");
for (i = 0; i < o.length; ++i) {
seg.push(o[i]);
ctype.push(this.ctype_(o[i]))
}
seg.push("E1");
seg.push("E2");
seg.push("E3");
ctype.push("O");
ctype.push("O");
ctype.push("O");
var word = seg[3];
var p1 = "U";
var p2 = "U";
var p3 = "U";
for (var i = 4; i < seg.length - 3; ++i) {
var score = this.BIAS__;
var w1 = seg[i-3];
var w2 = seg[i-2];
var w3 = seg[i-1];
var w4 = seg[i];
var w5 = seg[i+1];
var w6 = seg[i+2];
var c1 = ctype[i-3];
var c2 = ctype[i-2];
var c3 = ctype[i-1];
var c4 = ctype[i];
var c5 = ctype[i+1];
var c6 = ctype[i+2];
score += this.ts_(this.UP1__[p1]);
score += this.ts_(this.UP2__[p2]);
score += this.ts_(this.UP3__[p3]);
score += this.ts_(this.BP1__[p1 + p2]);
score += this.ts_(this.BP2__[p2 + p3]);
score += this.ts_(this.UW1__[w1]);
score += this.ts_(this.UW2__[w2]);
score += this.ts_(this.UW3__[w3]);
score += this.ts_(this.UW4__[w4]);
score += this.ts_(this.UW5__[w5]);
score += this.ts_(this.UW6__[w6]);
score += this.ts_(this.BW1__[w2 + w3]);
score += this.ts_(this.BW2__[w3 + w4]);
score += this.ts_(this.BW3__[w4 + w5]);
score += this.ts_(this.TW1__[w1 + w2 + w3]);
score += this.ts_(this.TW2__[w2 + w3 + w4]);
score += this.ts_(this.TW3__[w3 + w4 + w5]);
score += this.ts_(this.TW4__[w4 + w5 + w6]);
score += this.ts_(this.UC1__[c1]);
score += this.ts_(this.UC2__[c2]);
score += this.ts_(this.UC3__[c3]);
score += this.ts_(this.UC4__[c4]);
score += this.ts_(this.UC5__[c5]);
score += this.ts_(this.UC6__[c6]);
score += this.ts_(this.BC1__[c2 + c3]);
score += this.ts_(this.BC2__[c3 + c4]);
score += this.ts_(this.BC3__[c4 + c5]);
score += this.ts_(this.TC1__[c1 + c2 + c3]);
score += this.ts_(this.TC2__[c2 + c3 + c4]);
score += this.ts_(this.TC3__[c3 + c4 + c5]);
score += this.ts_(this.TC4__[c4 + c5 + c6]);
// score += this.ts_(this.TC5__[c4 + c5 + c6]);
score += this.ts_(this.UQ1__[p1 + c1]);
score += this.ts_(this.UQ2__[p2 + c2]);
score += this.ts_(this.UQ3__[p3 + c3]);
score += this.ts_(this.BQ1__[p2 + c2 + c3]);
score += this.ts_(this.BQ2__[p2 + c3 + c4]);
score += this.ts_(this.BQ3__[p3 + c2 + c3]);
score += this.ts_(this.BQ4__[p3 + c3 + c4]);
score += this.ts_(this.TQ1__[p2 + c1 + c2 + c3]);
score += this.ts_(this.TQ2__[p2 + c2 + c3 + c4]);
score += this.ts_(this.TQ3__[p3 + c1 + c2 + c3]);
score += this.ts_(this.TQ4__[p3 + c2 + c3 + c4]);
var p = "O";
if (score > 0) {
result.push(word);
word = "";
p = "B";
}
p1 = p2;
p2 = p3;
p3 = p;
word += seg[i];
}
result.push(word);
return result;
}
lunr.TinySegmenter = TinySegmenter;
};
}));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
{"version":3,"sources":["src/assets/stylesheets/palette/_scheme.scss","../../../src/assets/stylesheets/palette.scss","src/assets/stylesheets/palette/_accent.scss","src/assets/stylesheets/palette/_primary.scss","src/assets/stylesheets/utilities/_break.scss"],"names":[],"mappings":"AA2BA,cAGE,6BAKE,YAAA,CAGA,mDAAA,CACA,6DAAA,CACA,+DAAA,CACA,gEAAA,CACA,mDAAA,CACA,6DAAA,CACA,+DAAA,CACA,gEAAA,CAGA,gDAAA,CACA,gDAAA,CAGA,uCAAA,CACA,iCAAA,CACA,kCAAA,CACA,mCAAA,CACA,mCAAA,CACA,kCAAA,CACA,iCAAA,CACA,+CAAA,CACA,6DAAA,CACA,gEAAA,CACA,4DAAA,CACA,4DAAA,CACA,6DAAA,CAGA,6CAAA,CAGA,+CAAA,CAGA,2CAAA,CAGA,uDAAA,CACA,6DAAA,CACA,2DAAA,CAGA,yDAAA,CAGA,mDAAA,CACA,mDAAA,CAGA,qDAAA,CACA,wDAAA,CAGA,wEAAA,CAKA,yEAAA,CAKA,yECxDF,CD6DE,kHAEE,YC3DJ,CD+DE,gHAEE,eC7DJ,CDoFE,yDACE,4BClFJ,CDiFE,2DACE,4BC/EJ,CD8EE,gEACE,4BC5EJ,CD2EE,2DACE,4BCzEJ,CDwEE,yDACE,4BCtEJ,CDqEE,0DACE,4BCnEJ,CDkEE,gEACE,4BChEJ,CD+DE,0DACE,4BC7DJ,CD4DE,2OACE,4BCjDJ,CDwDA,+FAGE,iCCtDF,CACF,CCjDE,2BACE,4BAAA,CACA,oDAAA,CAOE,yBAAA,CACA,8CD6CN,CCvDE,4BACE,4BAAA,CACA,mDAAA,CAOE,yBAAA,CACA,8CDoDN,CC9DE,8BACE,4BAAA,CACA,qDAAA,CAOE,yBAAA,CACA,8CD2DN,CCrEE,mCACE,4BAAA,CACA,qDAAA,CAOE,yBAAA,CACA,8CDkEN,CC5EE,8BACE,4BAAA,CACA,qDAAA,CAOE,yBAAA,CACA,8CDyEN,CCnFE,4BACE,4BAAA,CACA,qDAAA,CAOE,yBAAA,CACA,8CDgFN,CC1FE,kCACE,4BAAA,CACA,oDAAA,CAOE,yBAAA,CACA,8CDuFN,CCjGE,4BACE,4BAAA,CACA,oDAAA,CAOE,yBAAA,CACA,8CD8FN,CCxGE,4BACE,4BAAA,CACA,oDAAA,CAOE,yBAAA,CACA,8CDqGN,CC/GE,6BACE,4BAAA,CACA,mDAAA,CAOE,yBAAA,CACA,8CD4GN,CCtHE,mCACE,4BAAA,CACA,oDAAA,CAOE,yBAAA,CACA,8CDmHN,CC7HE,4BACE,4BAAA,CACA,oDAAA,CAIE,oCAAA,CACA,2CD6HN,CCpIE,8BACE,4BAAA,CACA,oDAAA,CAIE,oCAAA,CACA,2CDoIN,CC3IE,6BACE,yBAAA,CACA,oDAAA,CAIE,oCAAA,CACA,2CD2IN,CClJE,8BACE,4BAAA,CACA,oDAAA,CAIE,oCAAA,CACA,2CDkJN,CCzJE,mCACE,4BAAA,CACA,qDAAA,CAOE,yBAAA,CACA,8CDsJN,CE3JE,4BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFwJN,CEnKE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFgKN,CE3KE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFwKN,CEnLE,oCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFgLN,CE3LE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFwLN,CEnME,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFgMN,CE3ME,mCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFwMN,CEnNE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFgNN,CE3NE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFwNN,CEnOE,8BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFgON,CE3OE,oCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFwON,CEnPE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,qCAAA,CACA,4CFmPN,CE3PE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,qCAAA,CACA,4CF2PN,CEnQE,8BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,qCAAA,CACA,4CFmQN,CE3QE,+BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAIE,qCAAA,CACA,4CF2QN,CEnRE,oCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFgRN,CE3RE,8BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CFwRN,CEnSE,6BACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CAAA,CAKA,4BF4RN,CE5SE,kCACE,6BAAA,CACA,oCAAA,CACA,mCAAA,CAOE,0BAAA,CACA,+CAAA,CAKA,4BFqSN,CEtRE,sEACE,4BFyRJ,CE1RE,+DACE,4BF6RJ,CE9RE,iEACE,4BFiSJ,CElSE,gEACE,4BFqSJ,CEtSE,iEACE,4BFySJ,CEhSA,8BACE,0BAAA,CACA,+CAAA,CACA,2CAAA,CACA,qCAAA,CACA,4CAAA,CAGA,4BFiSF,CGrMI,mCDtFA,+CACE,gCF8RJ,CE3RI,qDACE,gCF6RN,CExRE,iEACE,qBF0RJ,CACF,CGhNI,sCDnEA,uCACE,0CFsRJ,CACF,CE7QA,8BACE,0BAAA,CACA,4CAAA,CACA,gCAAA,CACA,0BAAA,CACA,+CAAA,CAGA,4BF8QF,CE3QE,yCACE,qBF6QJ,CG9MI,wCDxDA,8CACE,gCFyQJ,CACF,CGtOI,mCD5BA,+CACE,oCFqQJ,CElQI,qDACE,mCFoQN,CACF,CG3NI,wCDjCA,iFACE,qBF+PJ,CACF,CGnPI,sCDLA,uCACE,qBF2PJ,CACF","file":"palette.css"}

924
site/better/index.html Normal file
View File

@ -0,0 +1,924 @@
<!doctype html>
<html lang="zh" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="canonical" href="https://root.dianas.cyou/better/">
<link rel="icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.3.1, mkdocs-material-8.4.0">
<title>优化 - IdontKnowRoot</title>
<link rel="stylesheet" href="../assets/stylesheets/main.69437709.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.cbb835fc.min.css">
<meta name="theme-color" content="#4051b5">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="indigo" data-md-color-accent="">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#magisk" class="md-skip">
跳转至
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="页眉">
<a href=".." title="IdontKnowRoot" class="md-header__button md-logo" aria-label="IdontKnowRoot" data-md-component="logo">
<img src="../logo.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
IdontKnowRoot
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
优化
</span>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/sudoskys/Root" title="前往仓库" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="导航栏" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href=".." title="IdontKnowRoot" class="md-nav__button md-logo" aria-label="IdontKnowRoot" data-md-component="logo">
<img src="../logo.png" alt="logo">
</a>
IdontKnowRoot
</label>
<div class="md-nav__source">
<a href="https://github.com/sudoskys/Root" title="前往仓库" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href=".." class="md-nav__link">
前言
</a>
</li>
<li class="md-nav__item">
<a href="../prepare/" class="md-nav__link">
准备
</a>
</li>
<li class="md-nav__item">
<a href="../root/" class="md-nav__link">
刷机
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
优化
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
优化
</a>
<nav class="md-nav md-nav--secondary" aria-label="目录">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
目录
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#magisk" class="md-nav__link">
升级系统时 Magisk 的保留
</a>
<nav class="md-nav" aria-label="升级系统时 Magisk 的保留">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_1" class="md-nav__link">
具体步骤
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#_2" class="md-nav__link">
突发救砖
</a>
<nav class="md-nav" aria-label="突发救砖">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_3" class="md-nav__link">
防护策略
</a>
</li>
<li class="md-nav__item">
<a href="#mtk" class="md-nav__link">
MTK恢复
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#_4" class="md-nav__link">
系统分区解锁
</a>
</li>
<li class="md-nav__item">
<a href="#_5" class="md-nav__link">
小米刷原生
</a>
<nav class="md-nav" aria-label="小米刷原生">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_6" class="md-nav__link">
刷底包
</a>
</li>
<li class="md-nav__item">
<a href="#_7" class="md-nav__link">
通用教程
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#root" class="md-nav__link">
隐藏 Root
</a>
<nav class="md-nav" aria-label="隐藏 Root">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#zygisk" class="md-nav__link">
开启 Zygisk 的面具
</a>
</li>
<li class="md-nav__item">
<a href="#_8" class="md-nav__link">
面具随机包名
</a>
</li>
<li class="md-nav__item">
<a href="#shamiko" class="md-nav__link">
SHamiko
</a>
</li>
<li class="md-nav__item">
<a href="#momo-app" class="md-nav__link">
安装 Momo APP检查情况
</a>
</li>
<li class="md-nav__item">
<a href="#zfb-root" class="md-nav__link">
用排除列表对 ZFB 隐藏root
</a>
</li>
<li class="md-nav__item">
<a href="#rootmiui" class="md-nav__link">
排除列表对手机管家隐藏root(MIUI系统专属)
</a>
</li>
<li class="md-nav__item">
<a href="#shamiko_1" class="md-nav__link">
“Shamiko”白名单模式
</a>
</li>
<li class="md-nav__item">
<a href="#_9" class="md-nav__link">
隐藏应用列表
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../about/" class="md-nav__link">
关于
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="目录">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
目录
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#magisk" class="md-nav__link">
升级系统时 Magisk 的保留
</a>
<nav class="md-nav" aria-label="升级系统时 Magisk 的保留">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_1" class="md-nav__link">
具体步骤
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#_2" class="md-nav__link">
突发救砖
</a>
<nav class="md-nav" aria-label="突发救砖">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_3" class="md-nav__link">
防护策略
</a>
</li>
<li class="md-nav__item">
<a href="#mtk" class="md-nav__link">
MTK恢复
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#_4" class="md-nav__link">
系统分区解锁
</a>
</li>
<li class="md-nav__item">
<a href="#_5" class="md-nav__link">
小米刷原生
</a>
<nav class="md-nav" aria-label="小米刷原生">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_6" class="md-nav__link">
刷底包
</a>
</li>
<li class="md-nav__item">
<a href="#_7" class="md-nav__link">
通用教程
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#root" class="md-nav__link">
隐藏 Root
</a>
<nav class="md-nav" aria-label="隐藏 Root">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#zygisk" class="md-nav__link">
开启 Zygisk 的面具
</a>
</li>
<li class="md-nav__item">
<a href="#_8" class="md-nav__link">
面具随机包名
</a>
</li>
<li class="md-nav__item">
<a href="#shamiko" class="md-nav__link">
SHamiko
</a>
</li>
<li class="md-nav__item">
<a href="#momo-app" class="md-nav__link">
安装 Momo APP检查情况
</a>
</li>
<li class="md-nav__item">
<a href="#zfb-root" class="md-nav__link">
用排除列表对 ZFB 隐藏root
</a>
</li>
<li class="md-nav__item">
<a href="#rootmiui" class="md-nav__link">
排除列表对手机管家隐藏root(MIUI系统专属)
</a>
</li>
<li class="md-nav__item">
<a href="#shamiko_1" class="md-nav__link">
“Shamiko”白名单模式
</a>
</li>
<li class="md-nav__item">
<a href="#_9" class="md-nav__link">
隐藏应用列表
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/sudoskys/Root/edit/master/docs/better.md" title="编辑此页" class="md-content__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25Z"/></svg>
</a>
<h1>优化</h1>
<p>因为在Google加强安全性之前SuperSU 一直有效,直到 Android Marshmallow 出现。修改系统分区会向尝试检测根目录的应用发送红色标记。</p>
<p>Google SafetyNet是一个用于监视系统的API如果检测到篡改它将阻止某些应用程序运行。您不能将Google Pay或Netflix与SuperSU一起使用。修改系统后用户不会获得任何 OTAOver The Air Updates 无线下载 )更新 。</p>
<p>所以现在,只讲 Magisk</p>
<h2 id="magisk"><strong>升级系统时 Magisk 的保留</strong></h2>
<p>安装了 Magisk 后记得关掉系统的自动更新。有更新的时候,写点卸载 Magisk &gt; 还原原厂镜像,不重启。就能正常进行 OTA。A/B 分区的设备可以保留 Magisk 更新。 </p>
<p>如果没有第三方rec的情况下有两种办法<sup id="fnref:23"><a class="footnote-ref" href="#fn:23">1</a></sup></p>
<ol>
<li>
<p>如果你是vab机型不知道你是不是vab机型的话去面具里面点安装看看有没有安装到未使用槽位的选项有就是vab机型没有则不是vab机型接着往下看</p>
</li>
<li>
<p>点击系统更新,在下载完升级包以后,不要立马点安装或者重启,这个时候打开面具,关闭所有模块,点安装到未使用槽位,安装好以后提示你重启不要去点,打开系统更新,点重启或者安装,重启手机即可成功</p>
</li>
</ol>
<p>再说说有第三方rec的方法</p>
<ol>
<li>
<p>twrp为例下载全量升级包先关闭所有模块去rec设置里面勾选升级后重装twrp升级后用Magisk修补boot等选项点安装选择升级包以后把这三个勾都打勾升级即可开机拥有权限所有需要打勾的参考下图有些机型可能无法直接去修补自行测试吧有一定风险损失数据如果不愿意冒险就选择另一种方法</p>
</li>
<li>
<p>也可以只勾选重装twrp升级好了之后再刷入面具的卡刷包就好了有些twrp自带面具的直接去高级里面安装Magisk就可以了。</p>
</li>
</ol>
<p>目前各大品牌的旗舰手机均采用A/B架构即同时有两套系统共存、其中一个作为备份、共用一份用户数据。这就为我们升级系统提供了极大的便利。当我们安装更新后在重启手机以前新的系统将作为备份系统存在这时我们可以利用现有系统仍保留的root权限修改备份系统的分区刷入 Magisk 。</p>
<p>不支持的话,只能按<a href="https://sspai.com/post/53075">这篇文章</a>的方法 OTA 之后重新刷一次 Magisk。</p>
<p><a href="https://mi.fiime.cn/Dtech/65.html">文章AB分区保留面具升级系统</a></p>
<h3 id="_1"><strong>具体步骤</strong></h3>
<p>关闭系统自动更新。设置-系统-开发者选项。</p>
<p>下载更新并安装更新。此时会提示检测到root需要下载全量包为正常现象。</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>待其安装好后千万不要重启否则你Magisk就没了又得重装一遍。</p>
</div>
<p>这时候打开Magisk Manager。卸载-还原原厂镜像。安装-安装-安装到未使用的槽位OTA后</p>
<p>接着按提示重启即可。重启完成后系统应该是新系统Magisk应该还在。</p>
<p><a href="https://zhuanlan.zhihu.com/p/507103088">Redmi K50 ROOT刷Magisk面具教程</a></p>
<h2 id="_2">突发救砖</h2>
<hr />
<ol>
<li>刷机包与手机自带的BOOT版本不匹配这个时候只需要从ROM包里提取boot.img文件单刷然后再重新刷机就好了。</li>
<li>刷完后卡在第一屏或重启,可以进 RECOVERY 里面双WIPE (<strong>清除手机数据) 之后再刷机就可以解决问题</strong>一些ROM包会提示不用WIPE但如果你出现上述情况也可以双WIPE试试。</li>
<li>如果你实在不行了,那么准备好保存好的原始 boot.img 和 vbmeta.img 刷入。</li>
</ol>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>因为未知原因导致安装失败也不要怕,操作中你应该保留了一份原来的镜像,按照最后一步的方法将原来的镜像重新刷回去就能正常开机。**</p>
</div>
<h3 id="_3">防护策略</h3>
<ul>
<li>安装 MM管理器 或 自动神仙救砖 插件</li>
<li>备份 Root 后的系统</li>
</ul>
<p>移除模块重新开机</p>
<p>而如果你因为安装了未知模块而翻车无法顺利进入系统,请先冷静下来:解决此类问题有一个万能的命令<code>adb wait-for-device shell magisk --remove-modules</code>,此条指令将会在手机启动过程中生效。</p>
<h3 id="mtk"><strong>MTK恢复</strong></h3>
<p>如果移除模块仍然无法开机刷入系统备份上文MTK提到了</p>
<p>自救命令使用mtkclient写入备份的镜像
<code>python mtk wl out</code></p>
<h2 id="_4">系统分区解锁</h2>
<p>现在几乎所有手机都不能动 system.</p>
<p>需要安装模块才能修改 system.</p>
<h2 id="_5">小米刷原生</h2>
<p>刷机有风险 如果不会刷还请不要刷</p>
<h3 id="_6">刷底包</h3>
<p>首先要解锁手机BL锁 。</p>
<p>解锁完下载MIUI系统底包 必须要和类原生安卓版本一样 安卓9=安卓9 安卓10=安卓10请前往官网或者mi.fiime.cn下载相对应的系统底包然后参考上面的教程刷第三方REC。</p>
<p>刷完第三方rec会自动进入 进去之后把下载好的底包移动到手机里面进入清除 把按钮滑到右边 双清完再刷系统点击安装 选择下载好的底包 有个滑动按钮 滑到右边就开始刷了 记住 钩子不要勾</p>
<h3 id="_7">通用教程</h3>
<p>刷完底包后请不要清除任何东西</p>
<p>请直接刷完底包接着刷原生ROM包</p>
<p>刷完,返回主页面 。</p>
<p>进入清除 格式化Data分区 。输入yes 三清就可以重启手机了。</p>
<p><strong>注意:如果不格式化DATA可能导致卡开机动画且无法连接电脑读盘</strong></p>
<p>三清:Dalvik/ART CacheCacheData刷机前基本上必选三清目的是新系统的兼容性达到最佳。</p>
<p>进入系统如果有谷歌验证的话 过不了建议格frp锁。</p>
<p><a href="https://atmb.top/guide/advanced/jump_google/">如何跳过Google开机设置/验证/向导</a></p>
<blockquote>
<p>或者刷入<a href="https://mi.fiime.cn/">https://mi.fiime.cn</a> 的跳过包?
</p>
</blockquote>
<p>💡 第三方rec需要选择和安卓版本一样的包如果无限重启REC 请尝试刷入一次</p>
<h2 id="root">隐藏 Root</h2>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Riru 已经停止维护,所以本节只讲 Zygisk</p>
</div>
<p><strong><em>*ROOT目前主流的检测方法</em></strong>*</p>
<p>1、检查常用目录是否存在su</p>
<p>2、使用which命令查看是否存在su</p>
<p>3、主动申请root权限</p>
<p>4、执行busybox</p>
<p>5、访问私有目录如/data目录查看读写权限</p>
<p>6、读取build.prop中关键属性如ro.build.tags和ro.build.type</p>
<p>7、检查市面主流的模拟器</p>
<p>8、检测frida、xposed等Hook框架的特征</p>
<div class="admonition tip">
<p class="admonition-title">注意</p>
<p>本节内容部分都是 @MiaoHan 的 酷安专栏内容。</p>
</div>
<h3 id="zygisk">开启 Zygisk 的面具</h3>
<p>如果你现在用的阿尔法(Alpha)版面具,开了 MagiskHide 功能,要先关闭 MagiskHide 功能然后开启Zygisk才能用本期教程的方案。(Hide不是过时了吗)</p>
<p><strong>不管哪一个版本只开启Zygisk不要开启遵守排除列表</strong></p>
<p>开启Zygisk后要重启手机Zygisk才能生效。</p>
<p><strong>如果</strong>你每次打开面具它都会提示“检测到不属于Magisk的su文件”对于这种情况你一定要安装一个名为“隐藏系统root”的面具模块文件包里有或者删除system\xbin目录下一个名为“su”的文件。我建议你安装模块不建议你删除su文件。因为个别系统System只读删不掉此文件。个别系统删掉开机也会自动恢复。</p>
<div class="admonition danger">
<p class="admonition-title">Danger</p>
<p><strong>如果没提示这个不要试图安装“隐藏系统root”模块。</strong></p>
</div>
<p>刷了这个“隐藏系统root”模块会导致Momo提示找到Magisk但是影响不大更不会影响隐藏root。我个人建议如果不是强迫症建议不要在意这个了。如果你是MIUI开发版系统比较在意Momo的提示想让Momo不提示找到Magisk那么你需要重刷一遍当前开发版系统(重刷系统这一步是为了关闭系统自带的root)。重刷完不要打开系统自带的root不能用面具接管系统root的方式刷面具你应该用第三方recovery或者修补boot的方式刷入面具。</p>
<h3 id="_8">面具随机包名</h3>
<p>面具设置里找到“隐藏Magisk应用”选项点开会跳出一个对话框。这个对话框里已经有默认名称“Settings”你可以把它删掉并输入你喜欢的名字。比如我输入MiaoHan点确定就不用管它了它最后会自动跳转到新生成的面具界面里。期间无论跳转什么界面你只需要点确定或者允许就行了。面具随机包名成功后会看到原来的面具消失桌面出现新生成的面具“MiaoHan”。如果随机包名失败或者“隐藏Magisk应用”一直转圈圈那么你需要使用代理隧道。</p>
<div class="admonition help">
<p class="admonition-title">Help</p>
<p>如果面具随机包名后,出现 “ 还原Magisk 应用”的提示,重启一下手机就好了。<strong>不用点安装,只需重启一遍手机。</strong></p>
</div>
<h3 id="shamiko">SHamiko</h3>
<p>一个面具模块可以在面具开启Zygisk的情况下实现类似于MagiskHide的隐藏root效果可以对应用隐藏Magisk、Zygisk本身和二进制文件“su”。你可以把它简单理解为就是隐藏root的模块。</p>
<h3 id="momo-app">安装 Momo APP检查情况</h3>
<p>打开面具右上角点击齿轮进入面具设置界面。在面具设置界面下滑找到配置排除列表选项点配置排除列表选项进入排除列表界面。在“Shamiko”模块的加持下理论上你在排除列表勾选哪个应用哪个应用就检测不到root。</p>
<p>建议在面具排除列表勾选应用(即对应用隐藏root)后,最好检查一下应用是否在后台运行。如果是在后台运行,你最好结束一下,再打开应用。如果不是在后台运行,你就可以直接打开应用。<strong>注意彻底结束进程</strong></p>
<p>当面具排除列表勾选Momo后打开Momo可以看到Momo已经不再提示找到可执行程序“su”、Magisk、Zygisk说明“Shamiko”模块配合面具排除列表隐藏root是有效的。接下来我们如法炮制在排除列表勾选那些检测到root后无法运行或者闪退的应用比如银行类、金融类、游戏类应用。这样它们就检测不到root也就可以正常运行了。</p>
<h3 id="zfb-root">用排除列表对 ZFB 隐藏root</h3>
<p>玩机的朋友可能会知道当root后ZFB可能会无法刷脸归根结底还是因为ZFB检测到了root。我们需要对ZFB隐藏root相关步骤如下</p>
<p>进入面具排除列表然后右上角搜索找到ZFB点击ZFB图标把它展开如图四这里面显示的一条条都是ZFB的进程。当我们勾选ZFB的所有进程ZFB就检测不到root了也就是对ZFB隐藏root了。不用一个个点展开后点ZFB右边的方框即可全部勾选这些进程。把这些进程全部勾选后如图六可以看到ZFB上面的进度条全满。这个进度条表示里面的进程有没有全部勾选如果没有全部勾选进度条就不会全满。就像图七图八进度条不全满里面的进程就没有全部勾选这样是不行的。必须全部勾选里面的进程才能完全隐藏root。</p>
<p>非必需操作排除列表勾选完ZFB后退出面具。然后长按桌面的ZFB图标ZFB图标上会出现“应用信息”四个字点“应用信息”进入“应用信息”界面。如果你是显示图一那样你就直接去打开ZFB也不用点“结束运行”。如果你是显示图二那样就点一下“结束运行”然后再去打开ZFB。</p>
<p>好了不出意外的话当排除列表勾选ZFB后打开ZFB就会发现刷脸功能又可以使用了。</p>
<h3 id="rootmiui">排除列表对手机管家隐藏root(MIUI系统专属)</h3>
<p>如果你是MIUI系统的用户对ZFB或者薇信以及其他金融类应用隐藏root后用它们ZF时可能会弹出以下提醒。</p>
<p>当看到以上提醒一些朋友可能会觉得你这方案不行啊。SHamiko模块生效了也在排除列表勾选了ZFB所有进程居然还会提示手机已被root。其实这真不是ZFB检测到了root而是MIUI系统的系统应用“手机管家”检测到了root发出的弹窗提醒。至于为什么会弹窗这个因为你排除列表没勾选手机管家啊</p>
<p>进入面具排除列表,然后右上角搜索手机管家,大概率都会搜索不到,主要是方法不对,以下教大家查找手机管家的正确方法。</p>
<p><img alt="Untitled" src="https://s1.328888.xyz/2022/08/13/TGDNR.png" /></p>
<details class="help"><summary><strong>Momo提示找到Magisk解决方法</strong></summary><p>安装了“Shamiko”模块并且“Shamiko”模块也生效了(显示笑脸)排除列表也勾选了Momo的所有进程打开Momo还是提示找到Magisk。</p>
<p><strong>解决方法</strong>
(1)去面具模块界面检查有没有安装“隐藏系统root”模块。如果是安装了“隐藏系统root”模块那就不要解决Momo提示找到Magisk了。因为就是这个模块导致Momo提示找到Magisk。但是你又不能停用这个模块停用它你就更加隐藏不了root。</p>
<p>关于“隐藏系统root”这个模块的作用我发现许多人对这个模块的作用存在很大误解。</p>
<p>如果你每次打开面具时它都会提示“检测到不属于Magisk的su文件”那么你需要安装这个“隐藏系统root”模块如果你打开面具没提示这个就不能安装也不要安装。</p>
<p>(2)去面具模块界面检查有没有安装“隐藏系统root”模块。如果没安装这个模块那说明是其他模块导致Momo提示找到Magisk。</p>
<p>怎么排查是哪个面具模块引起Momo找到Magisk呢我建议停用除“SHamiko”以外的所有模块即“SHamiko”模块你不要停用其余模块全部停用。PS:停用的面具模块,主要包括字体模块、桌面模块、调节音质、优化触控、停用温控、开启高刷、调整扬声器马达、开启快充等等这一类优化模块。</p>
<p>停用后重启手机打开Momo再看看如果停用面具模块解决了Momo找到Magisk的问题那么我建议大家重新启用面具模块时一个一个或者两个两个来启用。每启用一个或者两个就重启下手机打开Momo再看看。直到Momo再次提示找到Magisk就可以知道是哪个模块引起的了。知道是哪个模块引起的就把哪个模块移除不用就行了。</p>
</details>
<details class="help"><summary><strong>Momo提示找到二进制文件“su”解决方法</strong></summary><p>安装了“Shamiko”模块并且“Shamiko”模块也生效了(显示笑脸)排除列表也勾选了Momo的所有进程特定用户也安装了“隐藏系统root”模块打开Momo还是提示找到二进制文件“su”。</p>
<p><strong>解决方法</strong>
我建议停用除“SHamiko”以外的所有模块即“SHamiko”模块你不要停用剩余模块全部停用。如果你是安装了“隐藏系统root”模块的特定用户那么你就停用除“隐藏系统root、SHamiko”以外的所有模块。即这两个SHamiko模块和隐藏系统root模块你不要停用剩余模块全部停用。</p>
<p>停用后重启手机打开Momo再看看如果停用面具模块解决了Momo找到二进制文件“su”的问题那么我建议大家重新启用面具模块时一个一个或者两个两个来启用。每启用一个或者两个就重启下手机打开Momo再看看。直到Momo再次提示找到二进制文件“su”就可以知道是哪个模块引起的了。知道是哪个模块引起的就把哪个模块移除不用就行了。</p>
</details>
<details class="help"><summary><strong>Momo提示找到Zygisk的解决方法</strong></summary><p>安装了“Shamiko”模块并且“Shamiko”模块也生效了(显示笑脸)排除列表也勾选了Momo的所有进程打开Momo还是提示找到Zygisk。</p>
<p><strong>解决方法</strong>
如果你隐藏应用列表的生效应用里选择了Momo那么你应该取消对Momo的隐藏。Momo不会检测应用列表你对Momo隐藏应用列表反而会导致Momo检测到Zygisk。</p>
<p>如果隐藏应用列表生效应用里没选择MomoMomo还是提示发现Zygisk。那么一般可能是因为面具版本太低或者Shamiko版本太低总之发现Zygisk这个不太好解决。有时候你升级Momo版本(升级后的Momo)就有可能发现Zygisk或者你升级面具版本也有可能导致Momo发现Zygisk。</p>
<blockquote>
<p>0.5.2版本的Shamiko模块是配合25.1以上版本的面具才能对Momo隐藏Zygisk。想让Momo检测不到Zygisk你可以升级面具版本到最新25.2。</p>
</blockquote>
<p>启用“Shamiko”白名单模式后你手机里安装的所有应用(也包括系统应用)都检测不到root了。你不用再像第(一)期教程中的那样想对哪个应用隐藏root还必须得在面具排除列表勾选哪个应用才行。启用白名单模式后你可以跟排除列表繁琐的勾选步骤说再见了不用再去配置排除列表了。</p>
</details>
<details class="help"><summary>还不行?停用部分面具模块</summary><p>适用场景:
也安装了“Shamiko”模块并且“Shamiko”模块也生效了(显示笑脸)排除列表也勾选了Momo的所有进程打开Momo还是提示找到Magisk或者找到二进制文件“su”或者找到Zygisk。进而打开银行类金融类游戏类应用提示root无法运行或者功能不正常。</p>
<p>原因分析这种情况不是因为“Shamiko”模块失效了而是你们装了太多系统优化类面具模块。部分系统优化类面具模块让你们手机不再纯净破坏了系统的完整性让设备处于被修改的状态。进而导致“Shamiko”模块隐藏失效Momo从而找到以下三个提示。而我从来不用系统优化类面具模块只用寥寥可数的几个模块(还不是系统优化类)所以可以很容易的过掉Momo以下三个提示。</p>
</details>
<h3 id="shamiko_1"><strong>“Shamiko”白名单模式</strong></h3>
<p><strong>需要注意的事项</strong></p>
<p>既然SHamiko白名单模式比黑名单模式有优势那是不是可以不加分辨的启用白名单模式呢还真不是这样的在决定使用白名单模式前我建议你知道一些注意事项</p>
<p>⑴白名单模式存在一些较为严重的Bug</p>
<p>部分机型启用“Shamiko”白名单模式后打开一些应用会闪退并且部分应用自带的浏览器打不开网页。还有就是开启白名单模式会造成手机性能的损耗不过这点感知不强。</p>
<p>⑵新安装应用无法获取root权限</p>
<p>有些酷友不明白这句话的意思我给大家详细解释一下首先打开面具进入超级用户界面可以看到你授权过root的应用。当你启用“Shamiko”白名单模式后也只有超级用户界面的应用能获取root了。你新安装的(需要root的)应用,以及你之前你没打开过(需要root)的应用都获取不了root。我举个例子比如你启用“Shamiko”白名单模式后安装搞机助手(搞机助手需要root才能运行)那么搞机助手就会获取不了root进而无法运行。</p>
<p><strong>“Shamiko”白名单模式的隐藏root方案</strong></p>
<blockquote>
<p>面具启用随机包名+开启Zygisk+遵守排除列表(不能开)+安装“SHamiko”模块+启用“Shamiko”白名单模式+安装“隐藏系统root”模块(特定用户安装)→若无效→停用或移除部分面具模块
</p>
</blockquote>
<p>“ Shamiko”白名单模式跟黑名单模式一样也需要关闭遵守排除列表“Shamiko”模块才能生效。</p>
<p>关于特定用户的安装“隐藏系统root”模块还是得再讲一下。如果你每次打开面具它都会提示“检测到不属于Magisk的su文件”那么你一定要安装一个名叫“隐藏系统root”的面具模块。如果没提示这个你不能安装也没必要安装。</p>
<p>PS这个“隐藏系统root”模块文件包里就有下载后在面具里刷入即可。刷完记得重启手机</p>
<p><strong>启用“SHamiko”白名单模式的方法</strong></p>
<p>既然要启用“Shamiko”白名单模式首先要学会判断当前“Shamiko”模块是处于哪种模式如何判断呢我们要看“Shamiko”的模块描述。首先我们打开面具进入模块界面可以看到“Shamiko”笑脸正在工作。如果“Shamiko”的模块描述里显示的是“blacklist mode”说明“Shamiko”处于黑名单模式正在以黑名单模式运行如果“Shamiko”的模块描述里显示的是“whitelist mode”说明“Shamiko”处于白名单模式正在以白名单模式运行。</p>
<p>正常情况下你的“Shamiko”模块描述里都应该显示“blacklist mode”因为这是“Shamiko”模块的默认工作方式。</p>
<p><strong>如何切换为“Shamiko”白名单模式呢</strong></p>
<p>有以下两种方法:</p>
<p>⑴安装一个名叫“Shamiko”的软件</p>
<p>这是个APP应用我置顶评论的链接里就有下载。这是咱们酷安某位大佬开发的软件我不知道是哪个大佬开发的如果有知道的兄弟麻烦告诉我下。这个软件可以一键开启和关闭“Shamiko”黑名单模式非常的方便使用方法也很简单。</p>
<p>首先确保“Shamiko”模块处于黑名单模式然后下载和安装这个“Shamiko”软件。安装后打开会有超级用户弹窗提示“Shamiko”软件要申请root权限你点允许。给完“Shamiko”软件root权限后打开中间那个“whitelist mode”选项“Shamiko”模块就切换为白名单模式了。这时你进面具里就会发现“Shamiko”模块已经处于“whitelist mode(白名单模式)”了甚至不用重启手机立即生效。切换回“blacklist mode(黑名单模式)”也很简单关闭“whitelist mode”选项就行了。切换回也是不用重启手机立即生效。</p>
<p>PS无论“Shamiko”模块是从黑名单模式切换为白名单模式还是从白名单模式切换回黑名单模式。用这个“Shamiko”软件切换后无论关机还是重启都会一直有效哦。还有这个“Shamiko”软件也不用保持后台运行用完你可以在最近任务卡片里划掉它。</p>
<p>⑵用MT管理器新建“whitelist”空文件</p>
<p>首先确保“Shamiko”模块处于黑名单模式打开MT管理器点左上角三条横杠进根目录。此时MT管理器若申请root权限你要点允许否则无法访问根目录下的文件夹。给MT管理器root权限后按/data/adb/shamiko的路径点进去 在shamiko文件夹里建一个名为whitelist文件。文件名不好记大家复制粘贴就好了。当文件建完也不用重启“Shamiko”就启用了“whitelist mode(白名单模式)”。切换回“blacklist mode(黑名单模式)”也很简单用MT管理器删除whitelist文件就行了。切换回也是不用重启手机立即生效。</p>
<p>PS大家还记得我这篇教程第二部分讲的内容吗当你开启“Shamiko”白名单模式后你新安装的(需要root的)应用,以及你之前你没打开过(需要root)的应用都获取不了root。当你现在“Shamiko”处于白名单模式遇到新安装的应用申请不了root时你可以先关闭白名单模式。关闭后白名单模式后在黑名单模式下打开所需要root的应用让它申请一遍root。然后再用“Shamiko”软件或者MT管理器打开“Shamiko”白名单模式。</p>
<p><strong>测试“Shamiko”白名单模式隐藏root效果</strong></p>
<p>当我们启用“Shamiko”模块白名单模式后如何判断它有没有隐藏root的效果呢还是需要用上我们强大的“Momo”APP了。PSMomo是一个检测设备是否root的应用如果打开MomoMomo提示找到可执行程序“su”、Magisk、Zygisk说明检测到了root如果打开MomoMomo没有提示找到可执行程序“su”、Magisk、Zygisk说明隐藏root有效或者未root。</p>
<p>如果你是从“Shamiko”黑名单模式切换为白名单模式的我建议先去排除列表取消对Momo的勾选再打开Momo看看检测结果。因为这样做有助于判断“Shamiko”白名单模式是否有效隐藏root。当你排除列表取消对Momo的勾选再次打开MomoMomo依旧没有提示找到可执行程序“su”、Magisk、Zygisk说明白名单模式隐藏root是有效的。</p>
<p>当确定“Shamiko”白名单模式隐藏root有效后我们可以打开任何因为root打不开的银行类、金融类、游戏类应用。记住你现在是白名单模式了不需要用排除列表勾选了。若你切换回黑名单模式一定要在排除列表勾选要隐藏root的应用。</p>
<p><strong>如果隐藏无效就停用面具模块</strong></p>
<p>适用场景:
也安装了“Shamiko”模块并且“Shamiko”模块也生效了(显示笑脸)模块描述里也显示的是“whitelist mode(白名单模式)”打开Momo还是提示找到Magisk或者找到二进制文件“su”或者找到Zygisk。进而打开银行类金融类游戏类应用提示root无法运行或者功能不正常。</p>
<p>原因分析这种情况不是因为“Shamiko”模块白名单模式失效了而是你们装了太多系统优化类面具模块。部分系统优化类面具模块让你们手机不再纯净破坏了系统的完整性让设备处于被修改的状态。进而导致“Shamiko”模块隐藏失效Momo从而找到以下三个提示。而我从来不用系统优化类面具模块只用寥寥可数的几个模块(还不是系统优化类)所以可以很容易的过掉Momo以下三个提示。</p>
<h3 id="_9">隐藏应用列表</h3>
<p>隐藏应用列表完全没有隐藏root的作用。</p>
<p>银行类金融类游戏类应用检测设备环境的优先级永远是先检测root然后再检测应用列表或者不检测应用列表。大部分应用都不检测应用列表。</p>
<p>但是可以隐藏你的模块应用,隐藏 LSPosed 相关特征.</p>
<div class="footnote">
<hr />
<ol>
<li id="fn:23">
<p>保留root去更新系统 https://www.coolapk.com/feed/37647626&#160;<a class="footnote-backref" href="#fnref:23" title="Jump back to footnote 1 in the text">&#8617;</a></p>
</li>
<li id="fn:8">
<p><strong>Root隐藏教程</strong><a href="https://www.coolapk.com/feed/37950576">图文分享 - 酷安 (coolapk.com)</a>&#160;<a class="footnote-backref" href="#fnref:8" title="Jump back to footnote 2 in the text">&#8617;</a></p>
</li>
<li id="fn:14">
<p><strong><em>*小米如何刷入第三方Recovery</em></strong>* <a href="https://zhuanlan.zhihu.com/p/428730333">https://zhuanlan.zhihu.com/p/428730333</a>&#160;<a class="footnote-backref" href="#fnref:14" title="Jump back to footnote 3 in the text">&#8617;</a></p>
</li>
</ol>
</div>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav class="md-footer__inner md-grid" aria-label="页脚" >
<a href="../root/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 刷机" rel="prev">
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</div>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
上一页
</span>
刷机
</div>
</div>
</a>
<a href="../about/" class="md-footer__link md-footer__link--next" aria-label="下一页: 关于" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
下一页
</span>
关于
</div>
</div>
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4Z"/></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 集体所有,商用需申请所有作者
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://t.me/gjzsr" target="_blank" rel="noopener" title="t.me" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M248 8C111.033 8 0 119.033 0 256s111.033 248 248 248 248-111.033 248-248S384.967 8 248 8Zm114.952 168.66c-3.732 39.215-19.881 134.378-28.1 178.3-3.476 18.584-10.322 24.816-16.948 25.425-14.4 1.326-25.338-9.517-39.287-18.661-21.827-14.308-34.158-23.215-55.346-37.177-24.485-16.135-8.612-25 5.342-39.5 3.652-3.793 67.107-61.51 68.335-66.746.153-.655.3-3.1-1.154-4.384s-3.59-.849-5.135-.5q-3.283.746-104.608 69.142-14.845 10.194-26.894 9.934c-8.855-.191-25.888-5.006-38.551-9.123-15.531-5.048-27.875-7.717-26.8-16.291q.84-6.7 18.45-13.7 108.446-47.248 144.628-62.3c68.872-28.647 83.183-33.623 92.511-33.789 2.052-.034 6.639.474 9.61 2.885a10.452 10.452 0 0 1 3.53 6.716 43.765 43.765 0 0 1 .417 9.769Z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": [], "search": "../assets/javascripts/workers/search.ecf98df9.min.js", "translations": {"clipboard.copied": "\u5df2\u590d\u5236", "clipboard.copy": "\u590d\u5236", "search.config.lang": "ja", "search.config.pipeline": "trimmer, stemmer", "search.config.separator": "[\\s\\-\uff0c\u3002]+", "search.placeholder": "\u641c\u7d22", "search.result.more.one": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.more.other": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 # \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.none": "\u6ca1\u6709\u627e\u5230\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.one": "\u627e\u5230 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.other": "# \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.placeholder": "\u952e\u5165\u4ee5\u5f00\u59cb\u641c\u7d22", "search.result.term.missing": "\u7f3a\u5c11", "select.version.title": "\u9009\u62e9\u5f53\u524d\u7248\u672c"}}</script>
<script src="../assets/javascripts/bundle.9c69f0bc.min.js"></script>
</body>
</html>

575
site/index.html Normal file
View File

@ -0,0 +1,575 @@
<!doctype html>
<html lang="zh" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="canonical" href="https://root.dianas.cyou/">
<link rel="icon" href="assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.3.1, mkdocs-material-8.4.0">
<title>IdontKnowRoot</title>
<link rel="stylesheet" href="assets/stylesheets/main.69437709.min.css">
<link rel="stylesheet" href="assets/stylesheets/palette.cbb835fc.min.css">
<meta name="theme-color" content="#4051b5">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL(".",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="indigo" data-md-color-accent="">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#_1" class="md-skip">
跳转至
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="页眉">
<a href="." title="IdontKnowRoot" class="md-header__button md-logo" aria-label="IdontKnowRoot" data-md-component="logo">
<img src="logo.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
IdontKnowRoot
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
前言
</span>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/sudoskys/Root" title="前往仓库" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="导航栏" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="." title="IdontKnowRoot" class="md-nav__button md-logo" aria-label="IdontKnowRoot" data-md-component="logo">
<img src="logo.png" alt="logo">
</a>
IdontKnowRoot
</label>
<div class="md-nav__source">
<a href="https://github.com/sudoskys/Root" title="前往仓库" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
前言
<span class="md-nav__icon md-icon"></span>
</label>
<a href="." class="md-nav__link md-nav__link--active">
前言
</a>
<nav class="md-nav md-nav--secondary" aria-label="目录">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
目录
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#_2" class="md-nav__link">
资料连结
</a>
</li>
<li class="md-nav__item">
<a href="#_3" class="md-nav__link">
文档结构
</a>
</li>
<li class="md-nav__item">
<a href="#_4" class="md-nav__link">
贡献者
</a>
</li>
<li class="md-nav__item">
<a href="#_5" class="md-nav__link">
引录
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="prepare/" class="md-nav__link">
准备
</a>
</li>
<li class="md-nav__item">
<a href="root/" class="md-nav__link">
刷机
</a>
</li>
<li class="md-nav__item">
<a href="better/" class="md-nav__link">
优化
</a>
</li>
<li class="md-nav__item">
<a href="about/" class="md-nav__link">
关于
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="目录">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
目录
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#_2" class="md-nav__link">
资料连结
</a>
</li>
<li class="md-nav__item">
<a href="#_3" class="md-nav__link">
文档结构
</a>
</li>
<li class="md-nav__item">
<a href="#_4" class="md-nav__link">
贡献者
</a>
</li>
<li class="md-nav__item">
<a href="#_5" class="md-nav__link">
引录
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/sudoskys/Root/edit/master/docs/index.md" title="编辑此页" class="md-content__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25Z"/></svg>
</a>
<h1 id="_1">前言</h1>
<p>Welcome to IdontKnowRoot ,本站基于 <a href="https://www.mkdocs.org">mkdocs.org</a>,致力于给予小白全详细的刷机起步指导,不必因为教程老旧,描述不清而发愁。</p>
<p>如果你发现了本文的的错误或不足,欢迎向<a href="https://github.com/sudoskys/Root/">项目仓库</a>提 issue 和 PR </p>
<blockquote>
<p>本站大多数资料都是综合收集来的,不许商用,需要商用请和引用页内的源取得授权</p>
</blockquote>
<h2 id="_2"><strong>资料连结</strong></h2>
<p>原始导出的长文PDF版本在 <a href="https://github.com/sudoskys/Root/">这里</a></p>
<p>你也可以在 <a href="https://github.com/sudoskys/Root/">这里</a> 看到这篇教程</p>
<p>你可以在 <a href="https://push.dianas.cyou/LIS/Share/Root/">这里</a> 下载相关文件包。
工具包备份分流地址如下</p>
<ul>
<li>暂无</li>
</ul>
<p>你可以在以下平台获取相关若有若无的支持</p>
<ul>
<li>https://kamiui.ml/E52shuaji/</li>
<li>https://orangefox.download/zh-CN</li>
<li>https://mi.fiime.cn</li>
<li>https://twrp.me/Devices</li>
</ul>
<h2 id="_3"><strong>文档结构</strong></h2>
<p>本教程仅供参考,阅读者<strong>需要自己承担因尝试解锁导致的后果</strong></p>
<p>如果你对自己的动手能力感到怀疑,可以选择付费请人!<strong>这个教程需要一台 WIN7及以上/Linux 的电脑。请先提前阅读一遍教程,而不是一步一步来。最好使用 Win10 ,避免驱动问题</strong></p>
<p><strong>刷机大概有几种方法:</strong> recfastbootfastbootd9008mtk端口。
<img alt="c3v64ptb34tc8qacv7jg.png" src="https://s1.328888.xyz/2022/08/13/TGFaP.png" /></p>
<p>同时因为 Android 阵营厂商众多,的确很难保证他们步伐齐一,也就不存在某种一定通行的「通法」能够搞定任一 Android 设备的 <code>Magisk</code> 刷入。</p>
<p>但是本文档会从 </p>
<ul>
<li>准备</li>
<li>刷机</li>
<li>优化</li>
</ul>
<p>三个章节展开相关叙述,其中在第二节会描述不同的常用对策方法</p>
<h2 id="_4">贡献者</h2>
<p>本教程由 Sudoskys 引录编辑
<a href="https://blog.dianas.cyou/">Jasmine</a></p>
<p><strong>由以下人士参与校对</strong></p>
<ul>
<li>[ZH/NSFW]狼-公开备忘录</li>
<li>笨蛋ovo </li>
<li>Aidenpers Ultra</li>
<li>小迅的皮套</li>
<li>Chi_Tang</li>
</ul>
<h2 id="_5">引录</h2>
<div class="footnote">
<hr />
<ol>
<li id="fn:1">
<p><strong>所需资料打包</strong><a href="https://push.dianas.cyou/LIS/Share/Root/">https://push.dianas.cyou/LIS/Share/Root/</a>&#160;<a class="footnote-backref" href="#fnref:1" title="Jump back to footnote 1 in the text">&#8617;</a></p>
</li>
<li id="fn:2">
<p><strong><em>*root、刷rec、rom通用教程&lt;</em></strong><em><a href="http://sudo0m.github.io/2022/05/29/root%E3%80%81%E5%88%B7rec%E3%80%81rom%E9%80%9A%E7%94%A8%E6%95%99%E7%A8%8B/">sudo0m.github.io/2022/05/29/root、刷rec、rom通用教程/</a></em><strong><em>&gt;</em></strong>*&#160;<a class="footnote-backref" href="#fnref:2" title="Jump back to footnote 2 in the text">&#8617;</a></p>
</li>
<li id="fn:3">
<p><a href="https://sspai.com/post/67932">Android 玩家必备神器入门:从零开始安装 Magisk - 少数派 (sspai.com)</a>&#160;<a class="footnote-backref" href="#fnref:3" title="Jump back to footnote 3 in the text">&#8617;</a></p>
</li>
<li id="fn:4">
<p>Magisk官方教程&lt;<a href="https://topjohnwu.github.io/Magisk/">https://topjohnwu.github.io/Magisk/</a>&gt;&#160;<a class="footnote-backref" href="#fnref:4" title="Jump back to footnote 4 in the text">&#8617;</a></p>
</li>
<li id="fn:5">
<p>Magisk官方论坛&lt;<a href="https://forum.xda-developers.com/f/magisk.5903/">https://forum.xda-developers.com/f/magisk.5903/</a>&gt;&#160;<a class="footnote-backref" href="#fnref:5" title="Jump back to footnote 5 in the text">&#8617;</a></p>
</li>
<li id="fn:6">
<p><a href="https://sspai.com/post/53043">每个 Android 玩家都不可错过的神器Magisk 初识与安装 - 少数派 (sspai.com)</a>&#160;<a class="footnote-backref" href="#fnref:6" title="Jump back to footnote 6 in the text">&#8617;</a></p>
</li>
<li id="fn:7">
<p><a href="https://sspai.com/post/69945">Android 玩机「神器」的矛盾与新生Magisk Canary 更新详解 - 少数派 (sspai.com)</a>&#160;<a class="footnote-backref" href="#fnref:7" title="Jump back to footnote 7 in the text">&#8617;</a></p>
</li>
<li id="fn:8">
<p><strong>Root隐藏教程</strong><a href="https://www.coolapk.com/feed/37950576">图文分享 - 酷安 (coolapk.com)</a>&#160;<a class="footnote-backref" href="#fnref:8" title="Jump back to footnote 8 in the text">&#8617;</a></p>
</li>
<li id="fn:9">
<p><strong>酷安MiaoHan 的专栏</strong> <a href="https://www.coolapk.com/feed/32286938">https://www.coolapk.com/feed/32286938</a>&#160;<a class="footnote-backref" href="#fnref:9" title="Jump back to footnote 9 in the text">&#8617;</a></p>
</li>
<li id="fn:10">
<p><a href="https://www.apkmirror.com/">APKMirror - Free APK Downloads - Free and safe Android APK downloads</a>&#160;<a class="footnote-backref" href="#fnref:10" title="Jump back to footnote 10 in the text">&#8617;</a></p>
</li>
<li id="fn:11">
<p><a href="https://docs.adlyq.ml/">Clash For Magisk简介 - CFM (adlyq.ml)</a>&#160;<a class="footnote-backref" href="#fnref:11" title="Jump back to footnote 11 in the text">&#8617;</a></p>
</li>
<li id="fn:12">
<p><strong><em>*小米手機各種刷機方式的疑問?</em></strong>* <a href="https://www.mobile01.com/topicdetail.php?f=634&amp;t=3725269">https://www.mobile01.com/topicdetail.php?f=634&amp;t=3725269</a>&#160;<a class="footnote-backref" href="#fnref:12" title="Jump back to footnote 12 in the text">&#8617;</a></p>
</li>
<li id="fn:13">
<p><strong><em>*<a href="https://blog.linioi.com/posts/8/">通过 ADB 给手机刷入第三方 Recovery</a></em></strong>*&#160;<a class="footnote-backref" href="#fnref:13" title="Jump back to footnote 13 in the text">&#8617;</a></p>
</li>
<li id="fn:14">
<p><strong><em>*小米如何刷入第三方Recovery</em></strong>* <a href="https://zhuanlan.zhihu.com/p/428730333">https://zhuanlan.zhihu.com/p/428730333</a>&#160;<a class="footnote-backref" href="#fnref:14" title="Jump back to footnote 14 in the text">&#8617;</a></p>
</li>
<li id="fn:15">
<p>告诉大家如何防止掉基带问题 <a href="https://www.coolapk.com/feed/21305538">https://www.coolapk.com/feed/21305538</a>&#160;<a class="footnote-backref" href="#fnref:15" title="Jump back to footnote 15 in the text">&#8617;</a></p>
</li>
<li id="fn:16">
<p>酷安Rannki原创 <a href="https://www.coolapk.com/feed/21305538?shareKey=NWMzMGQxYTU4OWMwNWZlNzJjZTc~&amp;shareUid=1294855&amp;shareFrom=com.coolapk.market_10.5.3">https://www.coolapk.com/feed/21305538</a>&#160;<a class="footnote-backref" href="#fnref:16" title="Jump back to footnote 16 in the text">&#8617;</a></p>
</li>
<li id="fn:17">
<p>常识基础 <a href="https://mi.fiime.cn/tutorial">https://mi.fiime.cn/tutorial</a>&#160;<a class="footnote-backref" href="#fnref:17" title="Jump back to footnote 17 in the text">&#8617;</a></p>
</li>
<li id="fn:18">
<p><strong>刷入原生ROM的通用教程等教程</strong> <a href="https://fiime.cn/thread/359">https://fiime.cn/thread/359</a>&#160;<a class="footnote-backref" href="#fnref:18" title="Jump back to footnote 18 in the text">&#8617;</a></p>
</li>
<li id="fn:19">
<p><strong><em>*<a href="https://blog.linioi.com/posts/10/">Violet 机型 PE/Plus 刷入教程</a></em></strong>*&#160;<a class="footnote-backref" href="#fnref:19" title="Jump back to footnote 19 in the text">&#8617;</a></p>
</li>
<li id="fn:20">
<p><strong><em>*<a href="https://blog.linioi.com/posts/11/">如何在 Redmi Note 7 Pro 上刷机?</a></em></strong>*&#160;<a class="footnote-backref" href="#fnref:20" title="Jump back to footnote 20 in the text">&#8617;</a></p>
</li>
<li id="fn:21">
<p><a href="https://wiki.pchelper666.com/%E5%BA%95%E5%B1%82%E5%88%B7%E6%9C%BA%E6%95%99%E7%A8%8B">https://wiki.pchelper666.com/底层刷机教程</a>&#160;<a class="footnote-backref" href="#fnref:21" title="Jump back to footnote 21 in the text">&#8617;</a></p>
</li>
<li id="fn:22">
<p><strong>高通9008线刷救黑砖教程</strong> <a href="https://www.bilibili.com/read/cv15031395/">https://www.bilibili.com/read/cv15031395/</a>&#160;<a class="footnote-backref" href="#fnref:22" title="Jump back to footnote 22 in the text">&#8617;</a></p>
</li>
</ol>
</div>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav class="md-footer__inner md-grid" aria-label="页脚" >
<a href="prepare/" class="md-footer__link md-footer__link--next" aria-label="下一页: 准备" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
下一页
</span>
准备
</div>
</div>
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4Z"/></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 集体所有,商用需申请所有作者
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://t.me/gjzsr" target="_blank" rel="noopener" title="t.me" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M248 8C111.033 8 0 119.033 0 256s111.033 248 248 248 248-111.033 248-248S384.967 8 248 8Zm114.952 168.66c-3.732 39.215-19.881 134.378-28.1 178.3-3.476 18.584-10.322 24.816-16.948 25.425-14.4 1.326-25.338-9.517-39.287-18.661-21.827-14.308-34.158-23.215-55.346-37.177-24.485-16.135-8.612-25 5.342-39.5 3.652-3.793 67.107-61.51 68.335-66.746.153-.655.3-3.1-1.154-4.384s-3.59-.849-5.135-.5q-3.283.746-104.608 69.142-14.845 10.194-26.894 9.934c-8.855-.191-25.888-5.006-38.551-9.123-15.531-5.048-27.875-7.717-26.8-16.291q.84-6.7 18.45-13.7 108.446-47.248 144.628-62.3c68.872-28.647 83.183-33.623 92.511-33.789 2.052-.034 6.639.474 9.61 2.885a10.452 10.452 0 0 1 3.53 6.716 43.765 43.765 0 0 1 .417 9.769Z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": ".", "features": [], "search": "assets/javascripts/workers/search.ecf98df9.min.js", "translations": {"clipboard.copied": "\u5df2\u590d\u5236", "clipboard.copy": "\u590d\u5236", "search.config.lang": "ja", "search.config.pipeline": "trimmer, stemmer", "search.config.separator": "[\\s\\-\uff0c\u3002]+", "search.placeholder": "\u641c\u7d22", "search.result.more.one": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.more.other": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 # \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.none": "\u6ca1\u6709\u627e\u5230\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.one": "\u627e\u5230 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.other": "# \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.placeholder": "\u952e\u5165\u4ee5\u5f00\u59cb\u641c\u7d22", "search.result.term.missing": "\u7f3a\u5c11", "select.version.title": "\u9009\u62e9\u5f53\u524d\u7248\u672c"}}</script>
<script src="assets/javascripts/bundle.9c69f0bc.min.js"></script>
</body>
</html>

897
site/prepare/index.html Normal file
View File

@ -0,0 +1,897 @@
<!doctype html>
<html lang="zh" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="canonical" href="https://root.dianas.cyou/prepare/">
<link rel="icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.3.1, mkdocs-material-8.4.0">
<title>准备 - IdontKnowRoot</title>
<link rel="stylesheet" href="../assets/stylesheets/main.69437709.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.cbb835fc.min.css">
<meta name="theme-color" content="#4051b5">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="indigo" data-md-color-accent="">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#_1" class="md-skip">
跳转至
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="页眉">
<a href=".." title="IdontKnowRoot" class="md-header__button md-logo" aria-label="IdontKnowRoot" data-md-component="logo">
<img src="../logo.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
IdontKnowRoot
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
准备
</span>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/sudoskys/Root" title="前往仓库" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="导航栏" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href=".." title="IdontKnowRoot" class="md-nav__button md-logo" aria-label="IdontKnowRoot" data-md-component="logo">
<img src="../logo.png" alt="logo">
</a>
IdontKnowRoot
</label>
<div class="md-nav__source">
<a href="https://github.com/sudoskys/Root" title="前往仓库" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href=".." class="md-nav__link">
前言
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
准备
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
准备
</a>
<nav class="md-nav md-nav--secondary" aria-label="目录">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
目录
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#4" class="md-nav__link">
了解术语4
</a>
</li>
<li class="md-nav__item">
<a href="#_2" class="md-nav__link">
了解刷机
</a>
<nav class="md-nav" aria-label="了解刷机">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_3" class="md-nav__link">
深刷
</a>
</li>
<li class="md-nav__item">
<a href="#ota" class="md-nav__link">
OTA
</a>
</li>
<li class="md-nav__item">
<a href="#_4" class="md-nav__link">
软刷
</a>
</li>
<li class="md-nav__item">
<a href="#_5" class="md-nav__link">
厂刷
</a>
</li>
<li class="md-nav__item">
<a href="#_6" class="md-nav__link">
线刷
</a>
</li>
<li class="md-nav__item">
<a href="#rec" class="md-nav__link">
卡刷 /第三方 REC
</a>
<nav class="md-nav" aria-label="卡刷 /第三方 REC">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#recovery" class="md-nav__link">
第三方Recovery
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#_7" class="md-nav__link">
准备设备
</a>
<nav class="md-nav" aria-label="准备设备">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_8" class="md-nav__link">
提前注意
</a>
</li>
<li class="md-nav__item">
<a href="#_9" class="md-nav__link">
准备驱动文件
</a>
</li>
<li class="md-nav__item">
<a href="#_10" class="md-nav__link">
准备设备和平台工具
</a>
</li>
<li class="md-nav__item">
<a href="#bl" class="md-nav__link">
准备深度测试或申请解锁BL深刷可跳过
</a>
</li>
<li class="md-nav__item">
<a href="#_11" class="md-nav__link">
准备获取文件
</a>
</li>
<li class="md-nav__item">
<a href="#3" class="md-nav__link">
备份完整分区3
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../root/" class="md-nav__link">
刷机
</a>
</li>
<li class="md-nav__item">
<a href="../better/" class="md-nav__link">
优化
</a>
</li>
<li class="md-nav__item">
<a href="../about/" class="md-nav__link">
关于
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="目录">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
目录
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#4" class="md-nav__link">
了解术语4
</a>
</li>
<li class="md-nav__item">
<a href="#_2" class="md-nav__link">
了解刷机
</a>
<nav class="md-nav" aria-label="了解刷机">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_3" class="md-nav__link">
深刷
</a>
</li>
<li class="md-nav__item">
<a href="#ota" class="md-nav__link">
OTA
</a>
</li>
<li class="md-nav__item">
<a href="#_4" class="md-nav__link">
软刷
</a>
</li>
<li class="md-nav__item">
<a href="#_5" class="md-nav__link">
厂刷
</a>
</li>
<li class="md-nav__item">
<a href="#_6" class="md-nav__link">
线刷
</a>
</li>
<li class="md-nav__item">
<a href="#rec" class="md-nav__link">
卡刷 /第三方 REC
</a>
<nav class="md-nav" aria-label="卡刷 /第三方 REC">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#recovery" class="md-nav__link">
第三方Recovery
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#_7" class="md-nav__link">
准备设备
</a>
<nav class="md-nav" aria-label="准备设备">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_8" class="md-nav__link">
提前注意
</a>
</li>
<li class="md-nav__item">
<a href="#_9" class="md-nav__link">
准备驱动文件
</a>
</li>
<li class="md-nav__item">
<a href="#_10" class="md-nav__link">
准备设备和平台工具
</a>
</li>
<li class="md-nav__item">
<a href="#bl" class="md-nav__link">
准备深度测试或申请解锁BL深刷可跳过
</a>
</li>
<li class="md-nav__item">
<a href="#_11" class="md-nav__link">
准备获取文件
</a>
</li>
<li class="md-nav__item">
<a href="#3" class="md-nav__link">
备份完整分区3
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/sudoskys/Root/edit/master/docs/prepare.md" title="编辑此页" class="md-content__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25Z"/></svg>
</a>
<h1 id="_1">准备</h1>
<h2 id="4">了解术语<sup id="fnref:17"><a class="footnote-ref" href="#fn:17">4</a></sup></h2>
<p><strong>双清:</strong> Dalvik/ART Cache Cache 其目的就是清除分区以及数据,简称重置手机。</p>
<p><strong>三清:</strong> Dalvik/ART Cache Cache Data 刷机前基本上必选三清,目的是使新系统的兼容性达到最佳。</p>
<p><strong>四清:</strong> Dalvik/ART Cache Cache Data System 四清针对版本差异过大的系统。</p>
<div class="admonition warning end">
<p class="admonition-title">Warning</p>
<p>重要!
四清后不刷入系统无法开机进系统!!只能电脑刷或者储存卡刷。</p>
</div>
<p><strong>五清:</strong> Dalvik/ART Cache Cache Data System Internal Storage内置储存 </p>
<div class="admonition warning end">
<p class="admonition-title">Warning</p>
<p>一旦选了这个清除,那手机内置存储上的东西就都没有了!就不能从手机选择卡刷包了!</p>
</div>
<p><strong>六清:</strong> Dalvik/ART Cache Cache Data System.</p>
<p><strong>底包:</strong>既不是ROM也不是OTA软件包它是一组<strong>低级驱动程序</strong>,可帮助操作系统完成其想做的任何事情。 它包括调制解调器蓝牙引导程序DSP等各种内容。支持所有Snapdragon和MTK设备包括仅限中国的设备。底包就相当于一个纯净版或者内核版的系统包</p>
<p><strong>MTK</strong>:联发科。
MTK和高通是生产手机CPU的厂家。MTK平台和高通平台指的是这两家的操作系统。</p>
<p><strong>A/B分区</strong></p>
<p>Android从7.0开始引入新的OTA升级方式A/B System Updates这里将其叫做A/B系统。顾名思义A/B系统就是设备上有A和B两套可以工作的系统用户数据只有一份为两套系统共用简单来讲可以理解为一套系统分区另外一套为备份分区。其系统版本可能一样也可能不一样其中一个是新版本另外一个旧版本通过升级将旧版本也更新为新版本。当然设备出厂时这两套系统肯定是一样的。之所以叫套而不是个是因为Android系统不是由一个分区组成其系统包括boot分区的kernel和ramdisksystem和vendor分区的应用程序和库文件以及userdata分区的数据</p>
<p>A/B系统实现了无缝升级(seamless updates),有以下特点:出厂时设备上有两套可以正常工作的系统,升级时确保设备上始终有一个可以工作的系统,减少设备变砖的可能性,方便维修和售后。</p>
<div class="admonition info end">
<p class="admonition-title">Info</p>
<p>OTA升级在Android系统的后台进行所以更新过程中用户可以正常使用设备数据更新完成后仅需要用户重启一次设备进入新系统。如果OTA升级失败设备可以回退到升级前的旧系统并且可以尝试再次更新升级。</p>
</div>
<p><strong>VAB架构</strong></p>
<p>又称虚拟AB分区出厂安卓11的新机型<strong>几乎都是VAB架构</strong></p>
<p>安卓分区架构发展史为onlyAABonlyA动态分区AB动态分区VAB架构。 所谓的VAB架构其实就是AB分区套上了动态分区再解决了AB分区的空间占用问题。</p>
<p>刷机时经常会刷写的分区(system,vendor,boot,recovery等等)。userdata分区就是用户分区格式化data就是格式化的这个分区。需要注意的是格式化data和清空data是两个不同的概念经常会有小白把这两个概念搞混淆。</p>
<p>格式化data就是把userdata的分区进行格式化操作就像你格式化U盘一样是格式化操作。</p>
<p>而清空data是删除data分区的所有文件及文件夹。当你遇到data挂载不上时你清空data是没有效果的这个时候你需要进行格式化data操作才能挂载data所以这两个不要搞混淆了</p>
<p><strong>通用系统映像(GSI/SGSI)</strong></p>
<p><a href="https://source.android.google.cn/devices/tech/ota/dynamic_partitions/implement">https://source.android.google.cn/devices/tech/ota/dynamic_partitions/implement</a></p>
<p>从Android 9开始Google更改了要求所有设备都必须使用[system-as-root]</p>
<p>GSI则由A-only和A/B进行区分刷入</p>
<p>GSI则是一种可以忽略厂商定制的通用刷机包</p>
<p><strong>动态分区</strong></p>
<p>Google在Android 10开始引入了动态分区Dynamic Partitions 简单来说就是把原来的system , vendor , product还有odm分区整合到了一起构成super分区 在刷入设备的时候动态调整system等分区的大小</p>
<p><strong>什么是GSI</strong></p>
<p>GSI代表通用系统映像。这是一个文件系统映像您可以将其刷到设备的系统分区。之所以具有通用性是因为它使用新的标准化硬件API访问硬件因此它可以在任何启用treble的设备上运行</p>
<p><strong>字库(分区)</strong></p>
<p>字库是硬件,就相当于电脑的硬盘。</p>
<p>功能机时代很多手机程序、控制信息、字库信息是存储在一个专用芯片里面芯片中主要部分是字库所以一些售后和维修人员就习惯把这个存储芯片称做字库芯片。不过到了智能机时代这个存储芯片的功能已经远远超越了存储字库这么简单所以它也远不是“字库”所能概括的更准确的表述应该为eMMC芯片(embedded MultiMediaCard </p>
<p>简单来说,“字库”(eMMC芯片)就相当于电脑中的BIOS+硬盘一方面它里面固化有手机的启动程序、基本输入输出程序、系统设置信息等等另一方面它还起到了存储照片、音乐等文件的作用也就是我们经常提到的手机xxGB存储空间而且手机的ROM(系统固件)也在这颗芯片当中,由此可见它对于一部手机的重要性。 </p>
<p>与手机一样,“字库”(eMMC芯片)也有相应的分类。</p>
<p>1、原装专用字库即原厂生产、针对相应型号专门使用的芯片</p>
<p>2、原装代用字库同样是由生产在原装字库货源短缺的情况下替代原装字库使用的芯片由于不是专门适用某型号机器的字库芯片所以在体积上与原装字库存在差异一般都要稍大一些</p>
<p>3、其他品牌的字库例如某芝部分型号的芯片可以替换原装字库使用。</p>
<div class="admonition tip">
<p class="admonition-title">简单来说</p>
<p>字库要是坏了,换主板吧</p>
</div>
<p><strong>ROM包</strong>
华为小米OPPO等都是安卓手机但它们的系统又各不相同。这些系统本质上都是基于安卓系统的他们对安卓系统进行定制加入自己特有的服务。比如我们看到很多手机出厂就自带APP这些就是 定制化之后的安卓系统 , 这些安卓系统就叫做ROM包。</p>
<p><strong>Recovery</strong></p>
<p>当手机系统文件被损坏从而不能正常启动时我们可以进入recovery小系统对主体系统进行修复。</p>
<p><strong>第三方Recovery</strong></p>
<p>官方的recovery功能较少一般可以清除缓存擦除所有数据刷入官方指定的系统而不能刷第三方系统所以就有人做 Recovery 去代替官方 (即第三方Recovery) 的这样就能刷非官方的ROM了。</p>
<p><strong>FastbootD</strong></p>
<p>据我所知, fastbootd 是用户空间中的 fastboot。</p>
<p>在动态分区手机. <code>data</code>, <code>system</code>等原来的物理分区, 现在都被放到一个共同的<code>super</code>分区下. 这种"虚拟分区"只在用户空间(Android系统里)可见, 也就是说原版fastboot只能识别到整个<code>super</code>, 而<code>super</code>里的<code>data</code>这些却不行.</p>
<p>所以fastbootd 就是动态分区手机的 fastboot(指非动态分区手机的).</p>
<p><img alt="a5nZlt.png" src="https://s1.328888.xyz/2022/08/13/TGOJ6.png" /></p>
<p><a href="https://www.droidwin.com/fastbootd-mode/">What is FastbootD? How to Boot to FastbootD Mode - DroidWin</a></p>
<h2 id="_2">了解刷机</h2>
<h3 id="_3"><strong>深刷</strong></h3>
<p>深刷就是底层刷机顾名思义这是一种从底层刷写手机分区的方式与正常的程序相比这种方式更为彻底无视所有软件层面的权限例如BL锁。</p>
<p>底层刷机模式常用于使用卡刷Recovery下以及一系列使用ADB刷机方式的统称或者线刷Bootloader下使用Bootloader命令刷机的方式刷成砖后救砖的场景下。按照主流处理器高通为9008刷机模式MTK为MTK PreLoader模式海思麒麟为eRecovery模式类rec操作和eDownload模式。</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>MTK联发科芯片机型的深刷口被小mi提交修复目前 天矶920 以后少有能使用此方法的。高通需要9008端口即可。详见刷机部分。</p>
</div>
<p><a href="https://wiki.pchelper666.com/%E5%BA%95%E5%B1%82%E5%88%B7%E6%9C%BA%E6%95%99%E7%A8%8B">底层相关刷机教程示例?</a></p>
<h3 id="ota"><strong>OTA</strong></h3>
<p><strong>这是升级,谈不上刷机</strong></p>
<p>OTA 意思就是<strong>增量升级</strong>,就是在原先系统的基础上增加新功能,也许是给手机打个补丁,也许是对性能的优化。<strong>手机要活着能进系统且未修改才能用</strong>。OTA 不会删除资料和系统的设定。备份资料放的位置要问官方,但通常不需要知道位置,内建备份也有还原功能,还能选择要还原的东西,还原的时候有问题的部分可以选择略过。</p>
<p>有些档案用 patch 的方式处理了, 有些用覆盖的方式 (要看做这个 OTA 包的人怎么做), 所以, 如果有档案与预期的不同 (通常是 root 后会删除或修改档案), OTA 会失败。</p>
<p>你也可以解 OTA 的包进行修补获取Root权限。</p>
<h3 id="_4"><strong>软刷</strong></h3>
<p>软件刷就是刷机大师,刷机精灵等的第三方刷机软件刷,现在已经绝迹了;</p>
<h3 id="_5"><strong>厂刷</strong></h3>
<p>寄回厂子……</p>
<h3 id="_6"><strong>线刷</strong></h3>
<p>线刷是 Fastboot 模式刷机。</p>
<p>线刷是用 Fastboot一般都是直接刷镜像由 uboot 以直接写入闪存的办法把镜像直接写到闪存对应的位置(或者说分区)。</p>
<p>线刷时备份资料可以使用PC端的程式来管理出问题的话三清之后再选择性恢复再不行就全部设定和资料重头来过。线刷 要有电脑, 执行特定的程式. (通常就算手机挂到都进不去 Recovery 也能刷)</p>
<p>所以线刷包实际一般就是包含了 Fastboot 程序和各个系统镜像以及一个可执行的脚本的包,用户直接运行那个脚本,脚本调用 Fastboot 来刷。</p>
<h3 id="rec"><strong>卡刷 /第三方 REC</strong></h3>
<p>卡刷就是 Rcovery 模式刷机</p>
<div class="admonition tip">
<p class="admonition-title">Do you know?</p>
<p>区别卡刷包 和线刷包最明显的区别是 (卡刷包的文件内容)里有 <strong>Recovery 文件,而(</strong>线刷包的文件内容)里有 FLASH 文件,如果你注意到上方路径,从文件名可以看到线刷包文件名里有 “FASTBOOT” 。</p>
</div>
<p>一般是在 recovery 里进行的,有直接刷镜像的比如 kernel 部分,但像 system 都是挂载 system 分区后再个别的更新里面的文件(差分或者直接覆盖),而不是像线刷那样把整个 system 镜像重刷一次。如果是通过打二进制补丁差分更新的话(绝大部分官方 OTA 包的做法),就要求被更新的文件和出厂时一样,否则就会失败,这是 OTA 失败的原因。优点是比较简单快捷,非常适合不会刷机的新手。</p>
<p>具体卡刷应该分两种, 一种是<strong>小的更新包</strong> (作法与 OTA 一样, 当然结果也一样), 另一种是完整的系统包, 这种通常是把系统的 partition 重新 format 再把资料放上去. (不会动到使用者资料的分区)。</p>
<p>卡刷可以用手机直接下载卡刷包更名Update.zip后进入recovery刷机刷后资料还会在但是通常不做资料清除的话很容易发生问题严重的就是一直出现系统错误轻的则是偶尔出现闪退。</p>
<p>所以基本上刷完机最好进Recovery三清刷前做三清也行重点就是该清的要清一清不然问题很多。接着要还原备份的时候如果系统本差异太大最好不要还原系统设定和App之类的资料还原一些使用者data就好。卡刷需要存储空间一般能进 recovery 就能刷。</p>
<p>卡刷包有比较复杂些的目录结构除了用来更新的文件外也包括一个可执行文件和脚本但这两个脚本是给recovery来用的而不是用户。</p>
<div class="admonition info">
<p class="admonition-title"><strong>什么是第三方REC</strong></p>
<p>Recovery像是一个独立的微型系统可以不依赖于安卓操作系统主体单独运行。Recovery的中文名是恢复顾名思义当手机系统文件被损坏从而不能正常启动时我们可以进入recovery小系统对主体系统进行修复。可是官方的recovery功能较少一般可以清除缓存擦除所有数据刷入官方指定的系统而不能刷第三方系统所以就有人做 Recovery 去代替官方 (即第三方Recovery) 的这样就能刷非官方的ROM了。像是所有的官改包第三方是配的包国际版的包以及原生系统都是用第三方REC刷入。可以说有了第三方REC是你刷机的出发点想刷什么都可以当然刷的东西兼容你的设备有了它你就可以各种不同的系统开始真正的刷机之路。但是大部分的第三方REC不支持OTA升级也就是说每次你收到系统更新的时候都必须要下载完整包更新。</p>
</div>
<h4 id="recovery">第三方Recovery</h4>
<p>第三方Recovery有很多种最常用的是 <code>TWRP</code> ,还有很多基于 <code>TWRP</code> 修改的种类,比如 <code>橙狐Recovery</code><code>SHRP</code><code>PBRP</code><code>奇兔Recovery</code> 等等。</p>
<p>可以去 TWRP 官网 <a href="https://twrp.me/Devices/">Here</a> 搜索,或者在 TWRP 官方APP下载但是速度可能不是很好,也可以去<a href="https://orangefox.download/zh-CN">橙狐官网</a>找。</p>
<p>如果以上途径都找不到,可以去酷安找你机型的话题,在话题内搜索关键词:<code>TWRPrec橙狐oringepbrp沥青shrp。</code></p>
<h2 id="_7">准备设备</h2>
<hr />
<p>本教程用到的工具我<strong>已经打入附带的文件包</strong> <sup id="fnref:1"><a class="footnote-ref" href="#fn:1">1</a></sup></p>
<h3 id="_8">提前注意</h3>
<p><strong>安卓系统的版本需要是 5.0~12.0 之间 (2022)</strong></p>
<div class="admonition warning">
<p class="admonition-title">注意</p>
<p><strong>解锁BL或救砖都会让你的文件被清空需要备份</strong></p>
</div>
<div class="admonition warning">
<p class="admonition-title">注意</p>
<ul>
<li>解锁设备将允许修改系统重要组件,并有可能在一定程度上导致设备受损</li>
<li>解锁后设备安全性将失去保证</li>
<li>解锁后部分对系统安全性依赖高的功能和服务失效</li>
<li>解锁后部分系统功能遭到修改后,将影响系统新版本升级</li>
<li>解锁后由于刷机导致的硬件故障,售后维修网点可以按非保修处理</li>
<li>三星设备解锁后会永久性熔断 KNOX 安全认证</li>
<li>大部分手机的版权认证 DRM 等级也会从 L1 下降至 L3、无法通过 Play 商店认证等。</li>
</ul>
</div>
<p>不建议你在主力机上解锁 Bootloader而且如果厂商明确表示不能解锁 Bootloader <strong>请放弃</strong>。如果一定要刷机并且报着变砖的觉悟,可以尝试<strong>深刷</strong>强解。</p>
<h3 id="_9">准备驱动文件</h3>
<p>准备你的手机对应的机型的驱动文件,文件包提供 Vivo 和 Oppo 的两种驱动文件[1^]。
个人建议下载一个泛用型驱动 <a href="https://adb.clockworkmod.com/">universal adb drivers</a>。少数情况下不能识别的话,需要我们用「手机厂商名 + adb driver」的关键词搜索得到相关的下载和安装教程。</p>
<p>安装完驱动请重启。 <a href="https://mi.fiime.cn/qudong">相关手机驱动下载-FiimeROM</a>
<a href="https://kamiui.ml/E52shuaji/">相关驱动站点</a></p>
<div class="admonition tip">
<p class="admonition-title"><strong>对于非深刷玩家如何检查是否链接?</strong></p>
<p>💡 重启后在设备开机状态下连接电脑,打开终端,输入<code>adb devices</code>,如果返回了设备名称,说明 adb 配置完成;用 <code>adb reboot bootloader</code>进入 fastboot 界面这步不适用fastbootd设备,即安卓十),键入 <code>fastboot reboot</code>后,若设备重启,说明 fastboot 正常。</p>
</div>
<h3 id="_10">准备设备和平台工具</h3>
<p>Win7 或以上电脑一台,能传输文件的数据线一条(<strong>最好是原装线</strong>),电脑下载解压<a href="https://dl.google.com/android/repository/platform-tools_r33.0.2-windows.zip">安卓平台文件包</a><a href="https://dl.google.com/android/repository/platform-tools-latest-linux.zip">Linux版本安卓平台工具包</a><a href="https://dl.google.com/android/repository/platform-tools-latest-darwin.zip">Mac版本</a>,退出所有手机助手类软件。</p>
<p>解压工具包,你会看到 adb 和 fastboot ,这是我们针对 Android 设备进行高级调试和安装的工具。</p>
<div class="admonition tip">
<p class="admonition-title">提示<sup id="fnref:3"><a class="footnote-ref" href="#fn:3">2</a></sup></p>
<p>如果你已经安装了 <a href="https://chocolatey.org/">choco</a> 或 <a href="https://brew.sh/">homebrew</a> 等包管理工具的话Windows 输入<code>choco install adb universal adb-drivers -y</code>Mac 输入 <code>brew install android-platform-tools</code>能最方便的完成 adb 和 fastboot 的配置。Windows 用户可以参照  <a href="https://sspai.com/post/40471">Windows 操作系统下的 ADB 环境配置</a> 这篇文章macOS 用户可以尝试  <a href="https://github.com/corbindavenport/nexus-tools">此脚本</a> 或是参考 <a href="https://sspai.com/post/38535">使用 Mac 为 Android 手机刷原生系统</a> 进行手动配置。最后最最不济,可以尝试在 Google  <a href="https://developer.android.com/studio/releases/platform-tools?hl=zh-cn">开发者页面</a> 下载对应 adb 包,解压后在对应的目录下执行指令亦可,或者是尝试 <a href="https://app.webadb.com/#/">WebADB</a> 或  <a href="https://adb.http.gs/">adb 在线执行器</a> 这样的在线 adb 工具,比较考验浏览器的兼容性。</p>
</div>
<h3 id="bl">准备深度测试或申请解锁BL深刷可跳过</h3>
<blockquote>
<p>BL 是 bootloader 的简称 就是 手机开机时,最先运行的小程序:开机引导程序 Bootloader 锁,主要是在引导过程中对系统签名,内核签名及 Recovery 签名进行检验如果签名不一致即终止引导。绿机器人儿用它来进行开机自检和初始化手机硬件它会指引手机找到系统分区并启动操作系统相当于电脑上的BIOS。</p>
<p>厂商通常会对手机的bootloader上锁这样它就只能运行厂商认证过的操作系统和recovery了。如果boatloader发现要运行的系统不是指定的系统就会阻止它运行。</p>
</blockquote>
<p>在开发者选项中打开「OEM 解锁」(除了少部分流入我国市场的国外运营商有锁机外,此选项基本都可供用户开启。)</p>
<div class="admonition danger">
<p class="admonition-title">Danger</p>
<p><strong>解bl锁会清除手机恢复出厂设置所有数据记得提前备份好。</strong></p>
</div>
<p>不同的手机解锁方式不同,你甚至可以去线下店让服务人员解锁。或者从自己的社区中获取本机型的解锁信息。部分手机解锁很麻烦,比如华为,想要解锁只能去淘宝买解锁码,而且当你刷回官方 ROM 时,会自动加锁。当然,华为的解锁码是和硬件相关的,买到解锁码把它记下,下次进 FASTBOOOT 输入<code>fastboot oem unlock 解锁码</code>就可以了。</p>
<p>而对于小米手机,可以通过这个地址 <a href="https://www.miui.com/unlock/download.html">申请解锁</a> 下载工具,然后打开手机设置,进入关于手机–&gt;系统版本点10下<code>设备解锁状态</code>中绑定账号和设备,进入<code>Fastboot</code>模式(关机后,同时按住开机键和音量下键),打开刚才下载的工具,点击 <code>解锁</code> 后系统会恢复出厂系统并解锁。也可以通过OEM解锁</p>
<p><strong>如果你的设备不能进行官方解锁,可以尝试深刷强解 。</strong></p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>一些古董机型是没有BL锁的比如红米Note。</p>
</div>
<p>附上<a href="https://web.vip.miui.com/page/info/mio/mio/detail?postId=28646781&amp;boardId=5415551&amp;isComment=&amp;isRecommend=0&amp;app_version=dev.211029&amp;ref=share">小米解锁教程</a>.</p>
<h3 id="_11">准备获取文件</h3>
<p><a href="https://mi.fiime.cn/Dtech/66.html">FiimeROM-小米红米原生|移植|官改|SGSI|驱动|插件</a></p>
<p>这时候你要确认手机已经解锁BL锁。</p>
<p>上述工具已经打入附带文件包。</p>
<p><strong>如果你是深刷玩家,请单独查看刷入节:深刷。</strong></p>
<h3 id="3">备份完整分区<sup id="fnref:15"><a class="footnote-ref" href="#fn:15">3</a></sup></h3>
<p>这里的分区就是字库。</p>
<p>什么是备份完整字库我们说的64GB128GB256GB等等这个就是说的主板的储存容量也就是字库。某个分区的数据损坏好听的说法是分区数据坏了难听的说法是字库损坏了。</p>
<p>所以解锁bl后第一件事就是备份完整字库以防不测。有人会说不是有9008吗有必要备份完整字库吗有必要。</p>
<p>原因假如一个手机所有分区加起来有100个9008大概会刷写30个左右剩下的70个不会刷写。</p>
<p>那么这个70个当中有某个分区数据损坏了9008是无法救砖的必须返厂用工厂售后非卖手机的那种售后的工厂包方可救砖。当然如果这个工厂包没有刷写完100个分区的话基本上也是无法救砖的。</p>
<p>备份文件下载链接 <a href="http://pan.baidu.com/s/1Yp3ljJWWvKMdpUpSUkt_Sw">pan.baidu.com/s/1Yp3ljJWWvKMdpUpSUkt_Sw</a> 提取码:vo15 ,或者我打包的文件中<sup id="fnref2:1"><a class="footnote-ref" href="#fn:1">1</a></sup>,文件来自<sup id="fnref2:15"><a class="footnote-ref" href="#fn:15">3</a></sup></p>
<p><strong>高通机型备份字库</strong></p>
<p>安装个MT管理器使用root权限执行【高通字库备份.sh】即可。备份的文件在/sdcard/Rannki目录中。</p>
<p><strong>高通机型还原字库</strong></p>
<p>提前把之前备份好的Rannki文件夹复制到 <code>/sdcard/Rannki</code>安装个MT管理器使用root权限执行【高通字库还原.sh】即可。</p>
<p><strong>MTK 机型备份字库</strong></p>
<p>安装个MT管理器使用root权限执行【MTK字库备份.sh】即可。备份的文件在/sdcard/Rannki目录中。</p>
<p><strong>MTK 机型还原字库</strong></p>
<p>提前把之前备份好的Rannki文件夹复制到 <code>/sdcard/Rannki</code>安装个MT管理器使用root权限执行【MTK 字库还原.sh】即可。</p>
<p>字库备份还原,解决的不只是基带问题,</p>
<p>除硬盘物理损坏外的所有问题解决率为100</p>
<p><strong>以上如何防止掉基带教程由酷安 Rannki 原创</strong></p>
<details class="note"><summary>详细叙述</summary><p><strong>UFS闪存手机</strong></p>
<p>主板一般被分成了6个硬盘<strong>sdasdbsdcsddsdesdf。</strong></p>
<p>所以,主板设备代码分别是:<code>/dev/block/sda/dev/block/sde/dev/block/sdc/dev/block/sdd/dev/block/sde/dev/block/sdf</code></p>
<p>备份分区的代码举例:<code>dd if=/dev/block/sda1 of=/sdcard/1.img,dd if=/dev/block/sda2 of=/sdcard/2.img</code>等等等等............................</p>
<p>还原分区的代码举例:<code>dd if=/sdcard/1.img of=/dev/block/sda1,dd if=/sdcard/2.img of=/dev/block/sda2</code> 等等等等............................</p>
<p><strong>Emmc闪存手机</strong></p>
<p>主板设备代码:<strong>/dev/block/mmcblk0</strong></p>
<p>备份分区的代码举例:<code>dd if=/dev/block/mmcblk0p1 of=/sdcard/1.img,dd if=/dev/block/mmcblk0p2 of=/sdcard/2.img</code>等等等等............................</p>
<p>还原分区的代码举例:<code>dd if=/sdcard/1.img of=/dev/block/mmcblk0p1,dd if=/sdcard/2.img of=/dev/block/mmcblk0p2</code>等等等等............................</p>
<p>当然,像 system 分区, vendor 分区userdata 分区super 分区,这些分区就没必要进行备份还原了。</p>
<p>查看分区信息的命令:</p>
<p>先安装busybox的面具模块链接: <code>pan.baidu.com/s/1hFQr0nvXprzcz2gyQxtFzQ</code> 提取码: <code>y61r</code></p>
<p>然后终端命令:<code>busybox fdisk /dev/block/sda</code> 回车然后再输入p回车就可以看到sda这块硬盘的所有分区信息了。adb,adc,add,ade,adf</p>
<p>同理,emmc闪存手机的命令是busybox fdisk /dev/block/mmcblk0回车再输入p回车就能看到所有分区信息了。</p>
</details>
<p>如果你的手机已经出现问题,且没有备份完整字库……去售后换主板,或者找个同机型的,用他的完整备份字库刷入,当然我并不确定是否成功,因为会不会黑砖,这是个待验证的问题。</p>
<p>而且最好别全部使用别人的手机的全字库备份,就算不黑砖,也会大概率出现 bootlocker 永久锁定,永久无法再次解锁,只能换主板。</p>
<div class="footnote">
<hr />
<ol>
<li id="fn:1">
<p><strong>所需资料打包</strong><a href="https://push.dianas.cyou/LIS/Share/Root/">https://push.dianas.cyou/LIS/Share/Root/</a>&#160;<a class="footnote-backref" href="#fnref:1" title="Jump back to footnote 1 in the text">&#8617;</a><a class="footnote-backref" href="#fnref2:1" title="Jump back to footnote 1 in the text">&#8617;</a></p>
</li>
<li id="fn:3">
<p><a href="https://sspai.com/post/67932">Android 玩家必备神器入门:从零开始安装 Magisk - 少数派 (sspai.com)</a>&#160;<a class="footnote-backref" href="#fnref:3" title="Jump back to footnote 2 in the text">&#8617;</a></p>
</li>
<li id="fn:15">
<p>告诉大家如何防止掉基带问题 <a href="https://www.coolapk.com/feed/21305538">https://www.coolapk.com/feed/21305538</a>&#160;<a class="footnote-backref" href="#fnref:15" title="Jump back to footnote 3 in the text">&#8617;</a><a class="footnote-backref" href="#fnref2:15" title="Jump back to footnote 3 in the text">&#8617;</a></p>
</li>
<li id="fn:17">
<p>常识基础 <a href="https://mi.fiime.cn/tutorial">https://mi.fiime.cn/tutorial</a>&#160;<a class="footnote-backref" href="#fnref:17" title="Jump back to footnote 4 in the text">&#8617;</a></p>
</li>
</ol>
</div>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav class="md-footer__inner md-grid" aria-label="页脚" >
<a href=".." class="md-footer__link md-footer__link--prev" aria-label="上一页: 前言" rel="prev">
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</div>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
上一页
</span>
前言
</div>
</div>
</a>
<a href="../root/" class="md-footer__link md-footer__link--next" aria-label="下一页: 刷机" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
下一页
</span>
刷机
</div>
</div>
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4Z"/></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 集体所有,商用需申请所有作者
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://t.me/gjzsr" target="_blank" rel="noopener" title="t.me" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M248 8C111.033 8 0 119.033 0 256s111.033 248 248 248 248-111.033 248-248S384.967 8 248 8Zm114.952 168.66c-3.732 39.215-19.881 134.378-28.1 178.3-3.476 18.584-10.322 24.816-16.948 25.425-14.4 1.326-25.338-9.517-39.287-18.661-21.827-14.308-34.158-23.215-55.346-37.177-24.485-16.135-8.612-25 5.342-39.5 3.652-3.793 67.107-61.51 68.335-66.746.153-.655.3-3.1-1.154-4.384s-3.59-.849-5.135-.5q-3.283.746-104.608 69.142-14.845 10.194-26.894 9.934c-8.855-.191-25.888-5.006-38.551-9.123-15.531-5.048-27.875-7.717-26.8-16.291q.84-6.7 18.45-13.7 108.446-47.248 144.628-62.3c68.872-28.647 83.183-33.623 92.511-33.789 2.052-.034 6.639.474 9.61 2.885a10.452 10.452 0 0 1 3.53 6.716 43.765 43.765 0 0 1 .417 9.769Z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": [], "search": "../assets/javascripts/workers/search.ecf98df9.min.js", "translations": {"clipboard.copied": "\u5df2\u590d\u5236", "clipboard.copy": "\u590d\u5236", "search.config.lang": "ja", "search.config.pipeline": "trimmer, stemmer", "search.config.separator": "[\\s\\-\uff0c\u3002]+", "search.placeholder": "\u641c\u7d22", "search.result.more.one": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.more.other": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 # \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.none": "\u6ca1\u6709\u627e\u5230\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.one": "\u627e\u5230 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.other": "# \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.placeholder": "\u952e\u5165\u4ee5\u5f00\u59cb\u641c\u7d22", "search.result.term.missing": "\u7f3a\u5c11", "select.version.title": "\u9009\u62e9\u5f53\u524d\u7248\u672c"}}</script>
<script src="../assets/javascripts/bundle.9c69f0bc.min.js"></script>
</body>
</html>

921
site/root/index.html Normal file
View File

@ -0,0 +1,921 @@
<!doctype html>
<html lang="zh" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="canonical" href="https://root.dianas.cyou/root/">
<link rel="icon" href="../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.3.1, mkdocs-material-8.4.0">
<title>刷机 - IdontKnowRoot</title>
<link rel="stylesheet" href="../assets/stylesheets/main.69437709.min.css">
<link rel="stylesheet" href="../assets/stylesheets/palette.cbb835fc.min.css">
<meta name="theme-color" content="#4051b5">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="" data-md-color-primary="indigo" data-md-color-accent="">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#_1" class="md-skip">
跳转至
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="页眉">
<a href=".." title="IdontKnowRoot" class="md-header__button md-logo" aria-label="IdontKnowRoot" data-md-component="logo">
<img src="../logo.png" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
IdontKnowRoot
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
刷机
</span>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/sudoskys/Root" title="前往仓库" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="导航栏" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href=".." title="IdontKnowRoot" class="md-nav__button md-logo" aria-label="IdontKnowRoot" data-md-component="logo">
<img src="../logo.png" alt="logo">
</a>
IdontKnowRoot
</label>
<div class="md-nav__source">
<a href="https://github.com/sudoskys/Root" title="前往仓库" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
GitHub
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href=".." class="md-nav__link">
前言
</a>
</li>
<li class="md-nav__item">
<a href="../prepare/" class="md-nav__link">
准备
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
刷机
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
刷机
</a>
<nav class="md-nav md-nav--secondary" aria-label="目录">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
目录
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#boot" class="md-nav__link">
线刷/深刷 修补 Boot 提取权限
</a>
<nav class="md-nav" aria-label="线刷/深刷 修补 Boot 提取权限">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#magisk" class="md-nav__link">
准备 Magisk
</a>
</li>
<li class="md-nav__item">
<a href="#img" class="md-nav__link">
准备修补的img
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#recovery" class="md-nav__link">
卡刷 第三方 Recovery
</a>
<nav class="md-nav" aria-label="卡刷 第三方 Recovery">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_2" class="md-nav__link">
特殊情况说明
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#9008" class="md-nav__link">
深刷 高通9008刷机
</a>
<nav class="md-nav" aria-label="深刷 高通9008刷机">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_3" class="md-nav__link">
刷包成功后出现的几种情况
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#mtk" class="md-nav__link">
深刷 MTK联发科 刷入/强解
</a>
<nav class="md-nav" aria-label="深刷 MTK联发科 刷入/强解">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#mtk_1" class="md-nav__link">
准备 MTK 工具/工具箱
</a>
</li>
<li class="md-nav__item">
<a href="#_4" class="md-nav__link">
初始化
</a>
</li>
<li class="md-nav__item">
<a href="#bootloader" class="md-nav__link">
强解 Bootloader
</a>
</li>
<li class="md-nav__item">
<a href="#bootvbmeta" class="md-nav__link">
提取boot与vbmeta
</a>
</li>
<li class="md-nav__item">
<a href="#root" class="md-nav__link">
备份 Root 后的手机
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#fastboot" class="md-nav__link">
线刷 Fastboot刷入镜像
</a>
</li>
<li class="md-nav__item">
<a href="#_5" class="md-nav__link">
结束
</a>
</li>
<li class="md-nav__item">
<a href="#ramdisk" class="md-nav__link">
面具 Ramdisk 为「否」的机型?"
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../better/" class="md-nav__link">
优化
</a>
</li>
<li class="md-nav__item">
<a href="../about/" class="md-nav__link">
关于
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="目录">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
目录
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#boot" class="md-nav__link">
线刷/深刷 修补 Boot 提取权限
</a>
<nav class="md-nav" aria-label="线刷/深刷 修补 Boot 提取权限">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#magisk" class="md-nav__link">
准备 Magisk
</a>
</li>
<li class="md-nav__item">
<a href="#img" class="md-nav__link">
准备修补的img
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#recovery" class="md-nav__link">
卡刷 第三方 Recovery
</a>
<nav class="md-nav" aria-label="卡刷 第三方 Recovery">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_2" class="md-nav__link">
特殊情况说明
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#9008" class="md-nav__link">
深刷 高通9008刷机
</a>
<nav class="md-nav" aria-label="深刷 高通9008刷机">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#_3" class="md-nav__link">
刷包成功后出现的几种情况
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#mtk" class="md-nav__link">
深刷 MTK联发科 刷入/强解
</a>
<nav class="md-nav" aria-label="深刷 MTK联发科 刷入/强解">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#mtk_1" class="md-nav__link">
准备 MTK 工具/工具箱
</a>
</li>
<li class="md-nav__item">
<a href="#_4" class="md-nav__link">
初始化
</a>
</li>
<li class="md-nav__item">
<a href="#bootloader" class="md-nav__link">
强解 Bootloader
</a>
</li>
<li class="md-nav__item">
<a href="#bootvbmeta" class="md-nav__link">
提取boot与vbmeta
</a>
</li>
<li class="md-nav__item">
<a href="#root" class="md-nav__link">
备份 Root 后的手机
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#fastboot" class="md-nav__link">
线刷 Fastboot刷入镜像
</a>
</li>
<li class="md-nav__item">
<a href="#_5" class="md-nav__link">
结束
</a>
</li>
<li class="md-nav__item">
<a href="#ramdisk" class="md-nav__link">
面具 Ramdisk 为「否」的机型?"
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/sudoskys/Root/edit/master/docs/root.md" title="编辑此页" class="md-content__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25Z"/></svg>
</a>
<h1 id="_1">刷机</h1>
<div class="admonition warning">
<p class="admonition-title">须知</p>
<p>阅读者<strong>需要自己承担因尝试 Root 导致的后果</strong>。如果你对自己的动手能力感到怀疑,可以请人!</p>
</div>
<p>熟悉 Linux 的童鞋都知道,我们只需要打上 su 的命令,就可以拥有管理员权限。
su是运行环境变量PATH下面的一个可执行文件当任意软件运行su时软件的权限就会被提升到Root权限。</p>
<p>未Root的安卓系统是没有su这个文件的所以Root一个手机就是将su文件放入到系统运行环境变量PATH下面。 之后软件运行su程序就可以提升到Root权限。</p>
<p>所以Root就是赋予手机管理员权限本质就是将su程序放入手机系统文件夹下面。</p>
<p>取得 Root 的方式大致分为两种
- 第三方 Rec 接管
- Magisk 修补 Boot 镜像</p>
<p><strong>用户手段有深刷,实现方式有卡刷,线刷。</strong></p>
<div class="admonition tip">
<p class="admonition-title">Do you know?</p>
<p>Magisk 是一个强大的 Android 框架,是一个通用的第三方 systemless 接口通过这样的方式实现一些较强大的功能。它修改启动分区并保留了系统文件。这种修改只是虚拟地覆盖在原始文件上。当某些东西请求系统文件时修改后的版本将被发送到magisk指定的位置。但是由于所有系统文件都是完整的因此可以欺骗SafetyNet认为一切正常。应用仍然可以在有被root的手机上运行。它通过挂载一个与系统文件相隔离的文件系统来加载自定义内容为系统分区打开了一个通往平行世界的入口所有改动在那个世界Magisk 分区)里发生,在必要的时候却又可以被认为是(从系统分区的角度而言)没有发生过。当被挂载的 Magisk 分区被隐藏甚至被取消挂载时,原有系统分区的完整性丝毫未损。因此严格来说 Magisk 可以被看作是一种文件系统。</p>
</div>
<h2 id="boot">线刷/深刷 修补 Boot 提取权限</h2>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>线必须是原装线或者质量靠谱的线,否则会出现 <code>USB Error</code> </p>
</div>
<p>如果你没有使用 MTK ,请通过<code>adb devices</code>命令再次确认已经连上手机。</p>
<h3 id="magisk">准备 <strong>Magisk</strong></h3>
<p>你可以从 <a href="https://github.com/topjohnwu/Magisk/releases">Github</a> 或者 文件包 [1^] 下载它,推荐去 Github 下载,越新越好。</p>
<p><strong>安装Magisk Manager APP后如果它显示<code>Ramdisk</code> 为"是",那么你才可以进行下面的操作。</strong></p>
<div class="admonition help">
<p class="admonition-title">Help</p>
<p>Ramdisk 是系统中的一个小分区Ramdisk 告诉系统接下来要加载哪些东西。Magisk 的目的是修改 Ramdsik把自己加进开机需要加载的系统组件中。App 中 Ramdisk 的值为「否」时,表示需要修改的 Ramdisk 被放在了 recovery.img 中,我们需要提取并修改 recovery.img。具体操作方法见节尾。</p>
</div>
<p>Tips极少数小米设备存在检测设备信息错误的问题Ramdisk 虽然显示为「否」,但实际上是需要修改 boot.img。</p>
<blockquote></blockquote>
<h3 id="img">准备修补的img</h3>
<p>官方 ROM 的压缩包,例如 <a href="https://developers.google.com/android/images">Google</a><a href="https://www.miui.com/shuaji-393.html">小米</a><a href="https://mirrors.lolinet.com/firmware/moto/">Moto</a>,由厂商发布,可从固定的发布页面、机型论坛等获取相关链接。一些厂商同时提供了 OTA 包和全量包,我们优先下载全量包,解压后即可获得 boot.img也就是我们所需要的 boot 分区的镜像文件。请去官网或者其他平台下载<strong>符合</strong>你的<strong>机型和型号</strong>的rom包
使用ZIP解压工具解压完整的ROM卡刷包最新MIUI系统安装包找到<code>boot.img</code>
<code>vbmeta.img</code>两个文件,复制出来备用。</p>
<p>接下来,寻找 Recovery 包或 img 镜像放电脑上,如果是 img 文件则可以直接使用,如果是压缩包则解压找出 img 或者 payload 解包。</p>
<p>如果你使用的是第三方开发者制作的 ROM也同样需要下载系统全量包解压获取而部分开发者也会单独释出 boot.img 为玩家提供便利。如果你比较幸运,在论坛中有人分享了自己修改好的镜像,可以直接获取进行刷写。</p>
<div class="admonition info">
<p class="admonition-title"><strong>payload 解压 OTA 包获取其中的 boot.img</strong></p>
<p><em>Payload 工具已经在工具包中给出,目前此工具因为依赖版本问题难以运行。</em></p>
<p>像Google 给出的刷机包,解压其中的 image 包可以直接获得我们想要的各种镜像文件。但部分厂商给出的升级包以及部分第三方 ROM 的刷机包中解压出来只有 payload.bin无法进一步解压获得我们想要的各种镜像文件。</p>
<p>解压 payload.bin 需要用到特殊的工具,我们可以在 Github 上找到开源的 <a href="https://github.com/vm03/payload_dumper">payload dumper</a>,这是一个基于 python 3 的命令行工具。</p>
<p>以 zip 格式下载源代码,本地解压得到 payload_dumper-master 文件夹,下属两个 py 后缀的 python 文件。将 ROM 的 .zip 包解压缩后,把其中的 payload.bin 文件移送到 payload_dumper-master 中。</p>
<div class="highlight"><pre><span></span><code>pip3 install protobuf <span class="c1">#安装 protobuf</span>
<span class="c1">## 定位到 payload_dumper-master 文件夹</span>
python3 -m pip install protobuf
python3 -m pip install -r requirements.txt
python3 payload_dumper.py payload.bin
</code></pre></div>
</div>
<p><strong>如果没有,且你是联发科(天矶&lt;920你可以使用 MTK深刷 进行提取请见MTK强解小节注意解锁 Bootloader 后才可以提取)。</strong></p>
<p>准备好 boot.img 后,打开打开<code>Magisk Manager</code>APP点击<code>Magisk</code>后边的<code>安装</code>,选择安装方式为<code>选择并修改一个文件</code>,从电脑端复制 <code>boot.img</code> 文件到手机并选中该文件,点击<code>开始</code> 仔细阅读修改结果并从结果中复制patch后的文件一般在<code>Download</code>文件夹下,文件名类似<code>magisk_patched-24100_gk0te.img</code>)到电脑。</p>
<div class="admonition danger">
<p class="admonition-title">警告</p>
<p>⚠️ <strong>你所用到的镜像(提取或修改)都要留存副本!否则变砖警告!</strong></p>
</div>
<h2 id="recovery">卡刷 第三方 Recovery</h2>
<p>有的Recovery作者附带了刷入脚本这样的直接运行脚本按着走就行了这里讲一下通用方法。</p>
<p>手机关机,<strong>长按 音量减键 + 电源键</strong> 进入 <code>FASTBOOT</code> 模式。用数据线把手机和电脑连接起来。以 <code>OrangeFox</code> 为示例。在上述步骤的下载后会得到一个压缩包,打开该压缩包,解压其中的 <code>recovery.img</code> 到任意一个位置。 压缩包是为了在有第三方 Recovery 的情况下刷入/更新 OrangeFox ,但是我们目前并没有,所以我们需要解压其中的 <code>recovery.img</code> 来使用 <code>fastboot</code> 刷入。如果你选择使用 LR.Team 定制版 TWRP可以选择一键刷入版就不会有下一步~~复杂~~
的操作。</p>
<p>然后打开终端,输入 <code>fastboot flash recovery 上一步解压的 recovery.img 的文件地址</code> (或者 <code>.\fastboot</code> <strong>这一步需要配置好 ADB 环境。</strong></p>
<p>不出意外,会输出:</p>
<div class="highlight"><pre><span></span><code>sending recovery OKAY传输Recovery
writing recovery OKAY刷入Recovery
finished.
</code></pre></div>
<p><strong>执行完毕后长按 音量加键 + 电源键</strong>,出第一屏即一秒左右可松手,进入 <code>Recovery</code>模式。当然你也可以使用 <code>fastboot reboot recovery</code>来进入 <code>Recovery</code>模式。</p>
<p>一般情况下,会出现一个英文界面,从上往下依次写着 <code>Mount</code> <code>Dectypt</code> ,这是让你解密 Data 。输入你的锁屏密码即可,<strong>记得输入完后点击右下角的勾</strong></p>
<p>解密DATA分区后才能刷入第三方ROM可以理解为是对官方系统的保护.</p>
<p>解密DATA会格式化数据解密完成后DATA被清空当然也包括内置卡上也空了。<strong>所以一定先备份好手机上的一切重要资料,包括手机存储/内置卡/外置卡上重要数据!</strong></p>
<p>经过十秒左右秒钟的解密后,不出意外会显示欢迎界面,点击屏幕下方勾即可。然后就是挂载 <code>System</code> 的界面,滑动下方滑块即可。</p>
<p>最后就进入了主界面。</p>
<div class="admonition info">
<p class="admonition-title">Info</p>
<p>💡 如果你是卡刷官方包后不做任何操作是肯定会恢复官方recovery的关于如何防止恢复官方recovery办法。进入Recovery后不是特别老的机型一般都需要做一下防覆盖否则重启进系统后刷的Recovery会被官方Recovery覆盖。最常用的办法是卡刷完官方ROM包后刷个Magisk.zip就OK了。如果你并不想ROOT但是又不想恢复官方recovery可以再卡刷完ROM后。签名boot、当然有的TWRP高级里没有签名boot功能但是一般情况下都会有防止覆盖TWRP功能这俩个功能实现原理不一样但是它俩都可以防止恢复官方recovery (资料来自搞机助手,非常感谢).(如果你不想使用 Magisk可以试试 OrangeFox 的防止还原 Recovery 的功能,在 <code>设置</code>&gt; <code>OTA</code>下。</p>
</div>
<div class="admonition help">
<p class="admonition-title">Help</p>
<p>橙狐改简体中文:点击底部的 <code>Menu</code> &gt; 右上角的齿轮图标 &gt; <code>Regional</code> &gt; 点击 <code>Language</code> 下的 <code>English</code> ,选择 <code>Chinese Simplified</code> 。</p>
</div>
<blockquote></blockquote>
<p><sup id="fnref:13"><a class="footnote-ref" href="#fn:13">1</a></sup></p>
<p>💡 给手机刷入 Recovery 其实也不需要电脑,用另一部手机借助 <a href="https://f-droid.org/zh_Hans/packages/com.termux/">Termux</a> 也是同样可以的。在 Termux 配置好 ADB 环境后,照上述步骤刷入即可。安装 Termux 的那部手机无需 ROOT。</p>
<h3 id="_2">特殊情况说明</h3>
<p><strong>新款联发科机型必须关闭AVB2.0校验</strong></p>
<p>否则任何对系统的修改都会导致卡在Fastboot。涉及的机型包括但不限于红米66A99A红米Note8Pro红米10X4G5G红米K30U小米Play以及之后的联发科机型。至于AVB2.0怎么关闭不同机型不同安卓版本方法不用可以在TWRP里找这个功能或者找刷过的大佬问方法。</p>
<p><strong>红米3S进入Recovery模式的方法是长按三键</strong></p>
<p>附上 Redmi Note 7 Pro教程</p>
<p><a href="https://blog.linioi.com/posts/11/">如何在 Redmi Note 7 Pro 上刷机?</a></p>
<p>相关Recovery下载</p>
<p><a href="https://mi.fiime.cn/Recovery">小米Recovery下载|Recovery大全-FiimeROM</a></p>
<p><a href="https://twrp.me/Devices/">Devices</a></p>
<p><a href="https://orangefox.download/zh-CN">OrangeFox Recovery Downloads</a></p>
<p><a href="https://kamiui.ml/E52shuaji/">偶然发现的仓库</a></p>
<h2 id="9008">深刷 高通9008刷机</h2>
<p><strong>理论上高通处理器都可以用这个方法</strong></p>
<div class="admonition info">
<p class="admonition-title">用这个方法必须要满足两个最基本条件</p>
<p>1.能找到 QPST 专用刷机包</p>
<p>2.确认手机能进9008端口</p>
</div>
<p><em>💡 高通 QPST 线刷其实就是利用高通芯片自带的9008端口将手机系统内的所有分区的镜像文件直接刷写手机。这个刷机方式比 REC卡刷 和 fastboot 线刷,更底层、高效、强大。这种方式,不需要进入手机的任何分区,就可以直接刷写手机固件。</em></p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>高通的 QPST线刷模式因联机之后端口名字叫Qualcomm HS-USB QDLoader 9008 (COMx)而得名。该模式下用户可通过QPST及其衍生工具本质为QPST命令行调用直接对手机的Flash芯片进行读写操作而不需要解锁Bootloader。常见刷机工具有QPSTMiFlashPro等工具刷机包中一般会有一个分区表xml文件。以及一个eif文件。XML文件命名一般为Rawprogram数字.XML和Patch数字.XML,EIF文件一般命名为prog_存储芯片类型比如UFS和EMMC<em>firehose</em>(SOC型号比如MSM8998或者SDM855)_内存类型一般是DDR.eif只要带有这两个文件的一般都是高通支持9008的刷机包。 进入9008模式高通略为麻烦。MSM8994及以前的SoC可以通过Fastboot命令直接进入9008模式<code>adb reboot edl</code></p>
</div>
<blockquote></blockquote>
<hr />
<p>此方案无需改线,无需触点短接等操作,需要电脑进行操作</p>
<p>我们将手机的变砖分为四个程度</p>
<ol>
<li>能亮屏,按键有反应 开机卡住 连接USB电脑有反应</li>
<li>黑屏 ,按键有反应 连接电脑有反应</li>
<li>屏幕不亮 按键无反应 连接电脑有反应</li>
<li>砖头什么样 手机什么样---黑砖</li>
</ol>
<p><strong>首先去下载高通的线刷工具,一般下载最新版本的即可。</strong></p>
<p><code>https://qpsttool.com/category/download</code></p>
<p>运行该线刷工具需要电脑识别到端口9008在电脑设备管理器中可以找到如果没有反应需要电脑安装9008的驱动。
<code>https://www.aliyundrive.com/s/KTLkyyjTsDB</code></p>
<p>接着需要下载官方固刷包进行刷入就可以了</p>
<h3 id="_3">刷包成功后出现的几种情况</h3>
<p>1.数据线自动断开链接,手机充电灯亮起-----刷写成功</p>
<p>2.无反应!------换包刷写,或试另一种刷写方式</p>
<p><strong>💡 按住手机上下音量+电源调试手机进入9008模式其次电脑识别到9008端口</strong></p>
<h2 id="mtk">深刷 MTK联发科 刷入/强解</h2>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>联发科的底层刷机模式没有高通那么麻烦。该模式在 MTK 内部被称为 MTK in-house developed loader。MTK 的该模式与高通略有不同该模式具有帮助系统寻找Uboot的功能。该模式除了具有启动功能之外还具有下载功能。首先还是需要明确的是mtk芯片都有一个boot rom如果没有这个rom那么程序是无法被下载到 Nand Flash中的然后此时的Flash上是为空的没有任何数据的。系统在上电之后它会检测是启动模式还是下载模式如果是下载模式它会初始化一个usb的串口将Preloader加载到内部的SRAM中跳转到Preloader中去执行初始化好Flash和外部RAM之后依次将preloader、lk、kernel、android下载到nand flash中去。刷机工具是SP Flash Tools 需要验证的对应的DA文件或者 MTKclinet</p>
</div>
<h3 id="mtk_1">准备 MTK 工具/工具箱</h3>
<p>💡 <strong>解释</strong>MTk 工具依赖安卓的一种漏洞来实现 Root ,提取 boot.img在使用前请关注你的社区酷安等。工具箱的使用都有说明请自行咨询或查阅资料。</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p><strong>天矶920 以后的设备不受此方法支持天矶1200仍旧支持</strong></p>
</div>
<p><a href="https://github.com/bkerler/mtkclient">GitHub - bkerler/mtkclient: Inofficial MTK reverse engineering and flash tool</a></p>
<p>MTK 提供不同平台的版本,但是因为依赖 Python所以你需要从文件包或从 <a href="https://www.python.org/downloads/">Download Python | Python.org</a> 安装Python<strong>确保安装时勾选 ADD PYTHON to PATH</strong></p>
<p>并使用 <code>pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple</code> 配置国内镜像源。</p>
<p>这里以Windows系统为演示系统。乌班图看<a href="https://zhuanlan.zhihu.com/p/452973221">这里</a></p>
<h3 id="_4">初始化</h3>
<p>在 mtkclient-main 文件夹下右键打开命令行
执行 <code>python setup.py install</code></p>
<p>🛠 下面每执行一次命令,都需要重复关机状态下 “插上USB同时按住音量加减及开机键待到看到命令行变成这个后就松手”步骤。 <strong>一定不要输错命令!!!!!!!</strong></p>
<p><strong>备份 Root 前手机全部分区</strong></p>
<p><code>python mtk rl out</code>
自救命令使用mtkclient写入备份的镜像
<code>python mtk wl out</code></p>
<p><strong>这个步骤如果备份用户数据会耗费8小时你可以备份到userdata时中断并删除 usedata.img。</strong></p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p><strong>将项目目录下的out文件夹复制出来防止后续覆盖</strong></p>
</div>
<h3 id="bootloader">强解 Bootloader</h3>
<p>如果你OEM已经解锁且Bl也已经解锁的请跳过这步。</p>
<p>如果你没有获取到深度测试或者官方解锁的,可以用 <code>python mtk da seccfg unlock</code> 尝试解锁,风险自担,<strong>这一步会清除你手机的全部数据,请注意</strong></p>
<p>强解后请重置手机,输入 <code>python mtk reset</code> <strong>如果是MTK 可以不清除设备所有数据</strong>重置。完毕后长按开机键开机开机第一屏会有提示按一下开机键即可解决因为重置过手机所以第一次开机时间会有点长耐心等待即可。待到开机后设置中打开开发者选项就可以看到OEM解锁选项变灰出现一行小字引导加载程序已解锁。开机前会有一段英文提示即为解锁成功可以用 <code>fastboot oem lks</code> 验证,返回 0 代表解锁成功)</p>
<p>附:重新锁回使用 <code>python mtk da seccfg lock</code> ,谨慎使用。</p>
<h3 id="bootvbmeta">提取boot与vbmeta</h3>
<p>使用如下命令,提取手机中的 boot 和 vbmeta.img 镜像
<code>python mtk r boot,vbmeta boot.img,vbmeta.img</code></p>
<p>手机关机待到关机完成插上USB同时按住音量加减及开机键待到看到命令行提取的数字闪动后请松手。</p>
<p>提取完毕后boot与vbmeta 的镜像文件会在目录中,然后<strong>请备份它们到一个其他的文件夹</strong></p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p><strong>按照上文【准备修补的img】小节准备修补后的镜像注意一定要使用最新版本的面具会解决很多问题。</strong></p>
</div>
<p>有的手机没有 vbmeta 分区,会有提示,没关系。
<strong>准备修补后的镜像</strong>,重命名为<code>boot.patched</code>,放入项目根目录</p>
<div class="admonition help">
<p class="admonition-title">Help</p>
<p>🛠 个别如遇无法开机等问题可尝试保持boot镜像中的vbmeta,此选项在最新版面具中已支持。</p>
</div>
<p>执行命令刷入重启手机安装面具即可发现root成功
<code>python mtk w boot,vbmeta boot.patched,vbmeta.img.empty</code></p>
<h3 id="root">备份 Root 后的手机</h3>
<p>使用如下命令备份手机全部镜像,以便可以在手机变砖时进行自救。
<code>python mtk rl out</code>
自救命令使用mtkclient写入备份的镜像
<code>python mtk wl out</code></p>
<div class="admonition tip">
<p class="admonition-title">Tip</p>
<p><strong>这个步骤如果备份用户数据会耗费8小时你可以备份到userdata时中断并删除 usedata.img。</strong>
<strong>然后将项目目录下的out文件夹复制出来防止后续覆盖还有就是一定不要输错命令</strong></p>
</div>
<div class="admonition help">
<p class="admonition-title">Help</p>
<p>🛠 如果在解锁中遇到问题请先去 <a href="https://github.com/bkerler/mtkclient/issues">https://github.com/bkerler/mtkclient/issues</a> 搜索遇到的问题如果是新的bug欢迎向作者反馈。需注明机型和提供相应的preloader。还有就是花钱请人救砖。</p>
</div>
<h2 id="fastboot">线刷 Fastboot刷入镜像</h2>
<p>卡刷是最值得推荐的,过程也不复杂,只要刷机过程保持电量充足,刷机包正确,刷机过程不对手机进行操作,一般都是能成功刷入的。</p>
<ol>
<li>无需第三方 <strong>Recovery</strong></li>
<li>不影响系统升级(完整包升级)</li>
</ol>
<p>复制修改镜像后的完整路径(<strong>在 Windows 中,选中文件 &gt; Shift + 右键,会多出「复制为路径」命令</strong>),在终端中输入:</p>
<div class="highlight"><pre><span></span><code>## 手机重启到 Bootloader
adb reboot bootloader
## 如果 Ramdisk 为 yes
fastboot flash boot &lt;修改后的 boot.img 路径&gt;
## 刷入完成后重启
fastboot reboot
</code></pre></div>
<p>如果想要谨慎一点,比如说修改的镜像文件是从网上下载的,想先试试看能否正常启动,则可以用命令:<code>fastboot boot</code>。这样顺利启动系统后即可暂时拥有 Magisk ,不过重启后就会失效。</p>
<p>文件包中有Han.GJZS-v2.12.1附带了很多工具可以使用ADB和FastBoot不懂不要用</p>
<hr />
<h2 id="_5">结束</h2>
<p>确认 Root 没有问题后,再打开 Magisk App 中选择<strong>安装 &gt; 直接安装</strong>,来「永久」写入 Magisk。</p>
<p>系统更新时想要保留 Magisk 的,重新打包刷入一次是最为通用稳妥的办法。</p>
<div class="admonition info">
<p class="admonition-title">Info</p>
<p>Magisk 工作机制是「拦截」Magisk通过挂载一个与系统文件相隔离的文件系统来加载自定义内容为系统分区打开了一个通往平行世界的入口所有改动在那个世界Magisk 分区里发生在必要的时候却又可以被认为是从系统分区的角度而言没有发生过。Magisk 可以被看作是一种文件系统,这种文件系统通过巧妙的实现方式避开了对系统文件的直接修改</p>
</div>
<h2 id="ramdisk"><strong>面具 Ramdisk 为「否」的机型?</strong>"</h2>
<ol>
<li>下载当前系统的全量包,如果你使用了第三方 Recovery那么 recovery.img 就是这个第三方的镜像。提取 recovery.img <strong>或者</strong> MTK 中执行 <code>python mtk r recovery recovery.img</code>,备份,然后传到手机上</li>
<li>修改镜像打开面具在选择修补文件后会多出一个「Recovery Mode」的选项。记得勾选</li>
<li>刷入镜像:使用的命令是 <code>fastboot flash recovery &lt;修改后的 recovery.img 路径&gt;</code> <strong>或者</strong> <code>python mtk w recovery &lt;修改后的 recovery.img 路径&gt;</code></li>
</ol>
<p>这几步完成后,重启手机。和修改 boot.img 不同的是,我们需要立即按下设备进入 Recovery 的组
合键,这样才能挂载 Magisk 。这是因为我们是通过修改 recovery.img 的方式挂载 Magisk 的,只有在按下组合键的情况下,设备才会启动 recovery 分区,从而实现 Magisk 的挂载。</p>
<p>按下组合键后,设备不会进入 Recovery 模式,而是会闪屏过后直接进入一个有 Magisk 的系统。每一次重启都要这样做才能挂载 Magisk。进入系统后就没有特别需要注意的问题了。</p>
<p>而想要进入真正的 Recovery ,我们需要在按下组合键后的闪屏界面长按音量 + 键。</p>
<div class="footnote">
<hr />
<ol>
<li id="fn:13">
<p><strong><a href="https://blog.linioi.com/posts/8/">通过 ADB 给手机刷入第三方 Recovery</a></strong>&#160;<a class="footnote-backref" href="#fnref:13" title="Jump back to footnote 1 in the text">&#8617;</a></p>
</li>
</ol>
</div>
</article>
</div>
</div>
</main>
<footer class="md-footer">
<nav class="md-footer__inner md-grid" aria-label="页脚" >
<a href="../prepare/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 准备" rel="prev">
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</div>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
上一页
</span>
准备
</div>
</div>
</a>
<a href="../better/" class="md-footer__link md-footer__link--next" aria-label="下一页: 优化" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
下一页
</span>
优化
</div>
</div>
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4Z"/></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Copyright &copy; 集体所有,商用需申请所有作者
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
<div class="md-social">
<a href="https://t.me/gjzsr" target="_blank" rel="noopener" title="t.me" class="md-social__link">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!--! Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M248 8C111.033 8 0 119.033 0 256s111.033 248 248 248 248-111.033 248-248S384.967 8 248 8Zm114.952 168.66c-3.732 39.215-19.881 134.378-28.1 178.3-3.476 18.584-10.322 24.816-16.948 25.425-14.4 1.326-25.338-9.517-39.287-18.661-21.827-14.308-34.158-23.215-55.346-37.177-24.485-16.135-8.612-25 5.342-39.5 3.652-3.793 67.107-61.51 68.335-66.746.153-.655.3-3.1-1.154-4.384s-3.59-.849-5.135-.5q-3.283.746-104.608 69.142-14.845 10.194-26.894 9.934c-8.855-.191-25.888-5.006-38.551-9.123-15.531-5.048-27.875-7.717-26.8-16.291q.84-6.7 18.45-13.7 108.446-47.248 144.628-62.3c68.872-28.647 83.183-33.623 92.511-33.789 2.052-.034 6.639.474 9.61 2.885a10.452 10.452 0 0 1 3.53 6.716 43.765 43.765 0 0 1 .417 9.769Z"/></svg>
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "..", "features": [], "search": "../assets/javascripts/workers/search.ecf98df9.min.js", "translations": {"clipboard.copied": "\u5df2\u590d\u5236", "clipboard.copy": "\u590d\u5236", "search.config.lang": "ja", "search.config.pipeline": "trimmer, stemmer", "search.config.separator": "[\\s\\-\uff0c\u3002]+", "search.placeholder": "\u641c\u7d22", "search.result.more.one": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.more.other": "\u5728\u8be5\u9875\u4e0a\u8fd8\u6709 # \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.none": "\u6ca1\u6709\u627e\u5230\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.one": "\u627e\u5230 1 \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.other": "# \u4e2a\u7b26\u5408\u6761\u4ef6\u7684\u7ed3\u679c", "search.result.placeholder": "\u952e\u5165\u4ee5\u5f00\u59cb\u641c\u7d22", "search.result.term.missing": "\u7f3a\u5c11", "select.version.title": "\u9009\u62e9\u5f53\u524d\u7248\u672c"}}</script>
<script src="../assets/javascripts/bundle.9c69f0bc.min.js"></script>
</body>
</html>

28
site/sitemap.xml Normal file
View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://root.dianas.cyou/</loc>
<lastmod>2022-08-14</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://root.dianas.cyou/about/</loc>
<lastmod>2022-08-14</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://root.dianas.cyou/better/</loc>
<lastmod>2022-08-14</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://root.dianas.cyou/prepare/</loc>
<lastmod>2022-08-14</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://root.dianas.cyou/root/</loc>
<lastmod>2022-08-14</lastmod>
<changefreq>daily</changefreq>
</url>
</urlset>

BIN
site/sitemap.xml.gz Normal file

Binary file not shown.