当前位置: 首页 > news >正文

Android禁用OTA更新指南:ADB脚本清除系统更新弹窗与红点

你的手机是不是每隔一段时间就弹出一条系统更新通知?设置图标的右上角,是不是始终挂着一个怎么都消不掉的小红点?就算你把系统更新应用的通知权限关掉,它过两天又会换个方式弹出来:可能是锁屏界面,可能是状态栏横幅,也可能是打开设置时直接铺一个全屏更新页面。

这个问题的根源不在“通知权限”,而在系统里负责检查 OTA 更新的一组服务。只要那组服务仍然在后台运行,它就一定会想方设法把“有新版本”这件事告诉你。本文要讲的,就是如何用一段一键安装脚本,在 Android 设备上禁用这些更新服务、清除设置存储里的小红点标记,并从源头拦截 OTA 更新弹窗。

先给出一个明确判断:这个方法对动手能力有一定要求,但它并不复杂。你不需要 Root,不需要刷机,只需要一台 Windows / macOS / Linux 电脑、一根数据线和一份靠谱的脚本。最关键的并不是执行命令,而是搞清楚你到底禁用了哪些包,以及为什么有些包绝对不能动。我会先解释这套机制,再给出可直接运行的脚本,最后列出最常见的坑和恢复办法。

1. 这篇文章真正要解决的问题

很多人都会遇到这几类情况:

  • 系统更新弹窗频繁,而且每次弹出来都是“正在检查更新”,既占后台资源,又打断当前操作。
  • OTA 更新包已经下载好了,但一直被搁置在存储空间里,占掉几百 MB 甚至 1GB 以上,清理又清理不掉。
  • 设置图标出现红点,但点进去看完更新页面,红点依然存在,强迫症非常难受。
  • 尝试关闭“应用通知”或“禁用系统应用”,结果发现很多系统包是灰的,点不动,或者重启后恢复原样。

这些问题的本质,是设备厂商预置的 OTA 更新链路没有被切断。OTA 更新的完整流程通常由三个部分组成:负责联网查询的更新服务、负责下载安装的更新应用,以及负责展示“设置小红点”和系统消息的 Setting 组件。只关掉其中一个,其他两个仍然会继续工作,弹窗自然就会出现。

传统方案大多是“关通知”“清缓存”“停用更新应用”,但往往只能管几天。原因是系统更新服务的包名因品牌、ROM 版本不同而有差异,很多人在不清楚包名的情况下,只能碰运气。这篇文章会提供一个“自动识别候选包 + 备份原状态 + 一键禁用 + 可恢复”的脚本,让你不用到处查包名,也不需要反复试错。

但也要先说明边界:这篇文章的方法只推荐用在你自己的设备、测试设备或已被授权维护的设备上。禁用系统更新意味着你的设备不会自动获得官方安全补丁,长期使用会有安全风险。生产环境、工作主力机、涉及敏感业务的设备,请务必先做备份并评估风险。对大多数普通用户而言,最稳妥的操作顺序是:先用备用机验证效果,再决定是否在主机上执行。

2. 小红点与 OTA 弹窗背后的技术机制

2.1 设置小红点是怎么产生的

设置图标的红点,本质上是 Android 的“通知角标”机制。当 Settings 或系统更新相关应用发送了一条高优先级的通知,桌面的 Launcher 就会读取到未读状态,并在设置图标右上角画一个红点。

在部分 ROM 中,这个红点的数据会缓存在 SettingsProvider 中。即使你在通知栏里划掉了那条更新通知,角标数据也不会立刻清除,需要清掉“设置存储”或重启 Launcher 才能消失。这就解释了为什么很多人只是点开设置看看更新页面,红点仍然存在。

2.2 OTA 更新弹窗是从哪来的

OTA 弹窗不是单一应用突然弹出来的,而是由一条链路触发的:

  1. 某个系统服务检测到当前系统版本号和厂商服务器返回的最新版本号不一致。
  2. 更新服务向用户发送通知,或者直接拉起更新应用。
  3. 更新应用联网下载更新包,下载完成后发送“立即安装”类提醒。
  4. 如果更新包已经存在,那么每次开机、解锁或连接 Wi-Fi 时,更新应用都会再次弹出提示。

这里的核心不是“通知权限”,而是负责查询版本和下载安装的进程。如果这些进程还在运行,即使你关闭通知,它们照样会在后台检查;进程一旦拿到更新包,还是会用系统级弹窗来提醒你。

2.3 为什么“关闭通知”不是长久之计

相比普通第三方应用,系统更新组件有几个特殊权限:

  • 部分系统应用的通知权限受保护,用户在设置界面无法直接关闭。
  • 厂商 ROM 可能会在每次系统进程重启后重置用户的数据或偏好。
  • OTA 更新服务可能在更新包下载后用其他包名重新拉起,导致你之前关闭的那个包不再生效。

更有效的思路是直接“禁用用户级更新服务”,也就是通过pm disable-user让相关包对当前用户不可用。这样既不需要 Root,也不会影响系统其他模块的正常启动,因为 Android 的包管理机制会在底层拦截这些包的运行。

下面用一个表格来对比几种常见处理方式的效果:

处理方式是否需要 Root效果风险
关闭通知权限短暂隐藏通知,弹窗仍可能再次出现几乎无风险
清除设置存储小红点可能暂时消失,但更新服务仍会重新触发会丢失部分本地设置
禁用更新服务能阻止大部分 OTA 弹窗可能误禁相关系统组件
Hosts 拦截能阻止域名请求,但部分更新走 IP 直连需要维护规则,误拦会影响其他服务
Magisk 模块能组合多种策略,效果持久设备必须 Root,风险较高

3. 环境准备与前置条件

在开始之前,你需要准备以下环境:

  • 一台 Android 设备。系统版本不限,但建议 Android 8.0 及以上,因为低版本系统的包管理行为有所不同。
  • 一台 Windows / macOS / Linux 电脑,用于执行 ADB 命令。
  • 一条能传输数据的数据线,不是只充电的那种。
  • 在手机上开启“开发者选项”和“USB 调试”。不同品牌开启方式不同,一般是在“设置 -> 关于手机”里连点版本号 7 次。
  • ADB 工具。如果你的电脑已经安装了 Android Studio,可以使用adb;否则请单独安装 platform-tools。

安装平台工具后,可以在终端执行adb version验证是否可用。只要命令能正常输出版本号,就说明环境没问题。版本号建议不要太老,新版本对禁用系统应用的支持更好。

连接设备后,先用以下命令检查设备状态:

adb devices -l

如果输出中出现unauthorized,说明手机端还未授权,请在手机屏幕上点击“允许 USB 调试”。如果输出中出现device,则说明连接正常,可以进入下一步。

之后所有操作都在电脑终端中执行。脚本运行过程中需要网络吗?一般不需要,因为禁用的是本机包,不依赖外网。

4. 核心思路:没有 Root 和有 Root 时怎么做

4.1 无 Root 方案:ADB 禁用更新服务

没有 Root 的情况下,我们依赖 Android 系统提供的pm(package manager)命令。它允许当前用户对部分系统应用执行disable-user,也就是“仅对当前用户禁用”,并不会卸载系统里的文件,因此安全性相对较高。

具体操作流程是:

  1. 扫描当前设备中包名包含updateupdaterota等关键字的包。
  2. 排除明显高危的包,例如com.android.settingscom.google.android.gmscom.google.android.play.services等。
  3. 将这些更新相关包记录到备份文件中。
  4. 执行pm disable-user --user 0禁止它们运行。
  5. 重启设备,观察效果。

这个方案的优点是无 Root、可恢复、不破坏系统文件;缺点是依赖厂商是否允许禁用这些包。部分 ROM 会将更新服务注册为受保护应用,disable-user会直接报错,这时就需要考虑 Root 方案。

4.2 有 Root 方案:冻结、Hosts、Magisk 模块

如果你已经 Root,可以做的事情更多:

  • 使用冻结工具(如 AppManager、SD Maid)把更新服务彻底冻结。
  • 通过 hosts 文件拦截 OTA 更新服务器的域名请求。
  • 制作一个 Magisk 模块,在开机时自动追加 hosts 规则或修改系统属性。

不过,Root 方案虽然能力强,风险也更高。修改系统属性(例如安全补丁日期)可能影响应用兼容性;拦截域名规则写错了可能让其他应用无法联网。因此,下面我会把无 Root 的 ADB 方案作为主线,Root / Magisk 作为进阶补充。绝大多数人的需求,用无 Root 方案就足够了。

5. 一键脚本实现:ADB 方式完整代码

这一节是全文的核心。我会提供一个可直接运行的 Bash 脚本,以及配套的恢复脚本。你需要把脚本保存为本地文件,然后通过终端执行。

5.1 禁用 OTA 更新脚本

这里的脚本会完成以下工作:

  • 检查 ADB 是否可用,检查设备是否连接。
  • 扫描设备中与 OTA 更新相关的候选包。
  • 排除高风险系统包,避免误禁关键组件。
  • 将当前启用状态备份到本地。
  • 向用户确认后,逐个禁用更新服务。
  • 输出后续验证建议。

先创建脚本文件。在电脑上新建一个文件,命名为disable_ota_update.sh,写入以下内容:

#!/usr/bin/env bash set -euo pipefail # ============================================ # disable_ota_update.sh # 用法: ./disable_ota_update.sh # 说明: 通过 ADB 禁用 Android 设备上的 OTA 更新相关组件 # 风险: 操作前请备份设备数据,仅限本人设备使用 # ============================================ ADB="${ADB:-adb}" # 1. 检查 ADB if ! command -v "$ADB" >/dev/null 2>&1; then echo "[错误] 未找到 adb 命令,请先安装 platform-tools。" exit 1 fi # 2. 检查设备连接状态 if ! "$ADB" get-state >/dev/null 2>&1; then echo "[错误] 未检测到已连接设备,请先开启 USB 调试并授权。" exit 1 fi # 3. 定义高风险包名,这些包不建议禁用 DANGEROUS_PACKAGES=( "com.android.settings" "com.android.systemui" "com.google.android.gms" "com.google.android.gsf" "com.google.android.setupwizard" "com.android.providers.settings" ) # 4. 扫描候选包 echo "[信息] 正在扫描系统更新相关包..." mapfile -t CANDIDATES < <("$ADB" shell pm list packages | sed 's/^package://g' | grep -Ei 'update|updater|ota|systemupdate' || true) if [[ ${#CANDIDATES[@]} -eq 0 ]]; then echo "[信息] 没有找到明显的 OTA 更新相关包。" echo "[信息] 如果你的设备仍然弹窗,请手动执行: adb shell pm list packages | grep -Ei 'update|ota'" exit 0 fi # 5. 过滤高风险包 FILTERED=() for pkg in "${CANDIDATES[@]}"; do skip=0 for danger in "${DANGEROUS_PACKAGES[@]}"; do if [[ "$pkg" == "$danger" ]]; then echo "[警告] 高危包 $pkg 将被跳过,避免禁用系统设置或 GMS。" skip=1 break fi done if [[ "$skip" -eq 0 ]]; then FILTERED+=("$pkg") fi done if [[ ${#FILTERED[@]} -eq 0 ]]; then echo "[信息] 过滤高风险包后没有可禁用的候选包。脚本结束。" exit 0 fi # 6. 打印候选包并要求确认 echo "" echo "[信息] 以下包将被禁用:" for pkg in "${FILTERED[@]}"; do echo " - $pkg" done echo "" read -r -p "[确认] 是否继续? (y/N) " confirm if [[ ! "$confirm" =~ ^[Yy]$ ]]; then echo "[信息] 用户取消操作,脚本退出。" exit 0 fi # 7. 备份当前启用状态到本地 BACKUP_DIR="./ota_backup" mkdir -p "$BACKUP_DIR" : > "$BACKUP_DIR/enabled_packages.txt" echo "[信息] 正在备份当前启用的包状态..." for pkg in "${FILTERED[@]}"; do if "$ADB" shell pm list packages -e | sed 's/^package://g' | grep -qxF "$pkg"; then echo "$pkg" >> "$BACKUP_DIR/enabled_packages.txt" fi done echo "[信息] 已备份到 $BACKUP_DIR/enabled_packages.txt" # 8. 禁用相关包 echo "" for pkg in "${FILTERED[@]}"; do echo "[信息] 正在禁用 $pkg ..." if "$ADB" shell pm disable-user --user 0 "$pkg"; then echo "[成功] $pkg 已禁用" else echo "[失败] $pkg 禁用失败,可能是受保护系统应用" fi done # 9. 验证 echo "" echo "[信息] 禁用操作完成。" echo "[提示] 如果设置小红点仍然存在,可以执行: adb shell pm clear com.android.settings" echo "[提示] 恢复脚本将在需要时帮你重新启用这些包。"

保存后,在终端执行:

chmod +x disable_ota_update.sh ./disable_ota_update.sh

如果你的adb不在系统 PATH 中,也可以用:

ADB=/path/to/adb ./disable_ota_update.sh

5.2 恢复 OTA 更新脚本

为了避免误操作后无法恢复,建议在运行上面脚本之前,先准备好恢复脚本。新建一个文件restore_ota_update.sh,写入以下内容:

#!/usr/bin/env bash set -euo pipefail # ============================================ # restore_ota_update.sh # 用法: ./restore_ota_update.sh # 说明: 从 ota_backup/enabled_packages.txt 恢复禁用的系统包 # ============================================ ADB="${ADB:-adb}" BACKUP_DIR="./ota_backup" if ! command -v "$ADB" >/dev/null 2>&1; then echo "[错误] 未找到 adb 命令。" exit 1 fi if [[ ! -f "$BACKUP_DIR/enabled_packages.txt" ]]; then echo "[错误] 没有找到备份文件 $BACKUP_DIR/enabled_packages.txt" exit 1 fi echo "[信息] 开始恢复备份中的包..." while IFS= read -r pkg; do if [[ -z "$pkg" ]]; then continue fi echo "[信息] 正在重新启用 $pkg ..." if "$ADB" shell pm enable "$pkg"; then echo "[成功] $pkg 已恢复" else echo "[失败] $pkg 恢复失败" fi done < "$BACKUP_DIR/enabled_packages.txt" echo "[信息] 恢复操作完成。建议重启设备后确认系统更新是否恢复工作。"

5.3 手工执行方式

如果你不想用完整脚本,也可以手工执行关键命令。先扫描候选包:

adb shell pm list packages | grep -Ei 'update|updater|ota'

然后查看某个包是否处于启用状态:

adb shell pm list packages -e | grep -Ei 'update|updater|ota'

禁用某个明确的包:

adb shell pm disable-user --user 0 包名

重新启用:

adb shell pm enable 包名

这里要特别提醒:手工方式虽然简单,但容易因为你搞混包名而误禁关键组件,例如误禁了com.android.settings。这会导致设置无法打开,甚至桌面崩溃。所以更推荐使用上面带过滤和备份的脚本。

6. 进阶:利用 Hosts 拦截与 Magisk 模块实现深度屏蔽

如果你已经 Root,可以考虑更深一层的屏蔽方案。但请注意,这一步不是必须的,也不适合所有人。

6.1 Hosts 拦截的基本思路

OTA 更新服务在联网时通常会请求固定的服务器域名。如果将这些域名解析到本地回环地址127.0.0.1,那么更新服务就无法下载新版本信息,也就不会触发弹窗。

在传统 Root 设备上,可以直接编辑/system/etc/hosts,但 Android 10 及以上使用动态分区,系统分区只读,所以更推荐通过 Magisk 模块在开机时追加规则。

你需要先确认设备实际访问哪些域名。方法有几种:

  • 在路由器上查看设备联网日志。
  • 使用抓包工具,在设备上抓取更新请求的域名。
  • 在更新服务被禁用前,通过dumpsys或日志观察。

这里不会给出具体的厂商域名,因为不同设备、不同地区差异很大。如果你写错了域名,可能什么效果都没有;更危险的是,如果误把某个公共域名拦掉,会影响其他联网应用。

6.2 Magisk 模块骨架

Magisk 模块的本质是一个目录,里面包含module.prop和若干脚本。下面是一个最小模块骨架,用于在开机时追加 hosts 域名规则:

OTABlocker/ ├── module.prop ├── post-fs-data.sh └── block_hosts.txt

module.prop内容:

id=ota_blocker name=OTA Blocker version=1.0 versionCode=1 author=yourname description=Block OTA update domain requests on boot

post-fs-data.sh内容:

#!/system/bin/sh MODDIR=${0%/*} if [ -f "$MODDIR/block_hosts.txt" ]; then cat "$MODDIR/block_hosts.txt" >> /system/etc/hosts fi

block_hosts.txt内容:

127.0.0.1 update.example.com 127.0.0.1 ota.example.net

将整个目录压缩成 zip 后,用 Magisk 内置的模块安装功能安装即可。这个模块只负责修改 hosts,不会触碰系统其他文件,卸载也比较干净。

但我必须说明:这个方案的实际效果取决于你能不能拿到准确的更新域名,而且 OTA 更新请求不一定都走域名,有些会走 IP 直连。若只是单纯想消灭弹窗,ADB 禁用更新服务通常是更简单有效的方案,Magisk 模块更适合作为辅助手段。

6.3 不建议使用的方式:修改安全补丁日期

有些教程会建议修改ro.build.version.security_patch2099-12-31,以中断安全补丁检查。这样做确实能让部分设备认为“已经是最新版本”,也会让设置里的小红点消失,但代价是:部分应用在运行时读取安全补丁日期,一旦发现日期异常,可能拒绝执行银行类、支付类业务;某些系统服务也会出现兼容问题。

所以在本文中我不推荐这种方式。尤其是工作主力机,更不要为了消灭弹窗而改写系统安全属性。

7. 运行结果与效果验证

脚本执行完成后,不能只看终端输出“禁用完成”,还要实际验证效果。

7.1 验证更新服务是否被禁用

执行下面的命令,检查已经被禁用的包是否包含你期待禁用的更新服务:

adb shell pm list packages -d | grep -Ei 'update|ota'

如果命令没有任何输出,说明候选包没有被禁用,可能是厂商使用了其他命名,也可能脚本中的disable-user没有成功。此时需要回到第 5.3 节,手动扫描包名。

7.2 重启设备后观察

结束 ADB 会话,重启设备。重启后临时保留更新应用的包,通常也会被禁用,除非厂商有保护机制。观察以下现象:

  • 设置图标右上角的小红点是否消失。
  • 下拉通知栏是否还有系统更新提醒。
  • 打开设置,是否还会出现“系统更新”入口的角标。
  • 连接 Wi-Fi 后是否还会自动下载更新包。

如果小红点已经消失,说明清除角标或禁用更新服务起了作用;如果红点还在,继续排查。

7.3 清理“设置”存储的补充操作

对部分 ROM 来说,设置小红点的数据是历史遗留缓存,禁用更新服务后不会自动消失。这时需要清除 Settings 应用的数据:

adb shell pm clear com.android.settings

注意:这个命令会清除设置应用的本地数据,包括你自定义的很多设置项,例如通知偏好、显示偏好、部分应用权限设置。执行前请先备份或在备用机上验证。清除设置数据后,桌面图标通常会自动恢复正常,但可能需要重新设置壁纸、铃声音量等偏好。

清除之后,再次执行adb shell pm list packages -d | grep -Ei 'update|ota'确认更新服务仍处于禁用状态。如果红点又出现,大概率是某个更新组件被重新开启,需要继续排查。

8. 常见问题与排查思路

问题现象可能原因排查方式解决方案
运行脚本后没有任何候选包厂商更新服务包名不含常见关键字执行adb shell pm list packages并检查含 update/ota 的包手动识别,并添加到脚本候选列表
禁用后重启又被自动启用系统存在受保护应用的自动恢复机制查看pm list packages -d是否恢复使用 Root 方案冻结,或联合 hosts 拦截
设置小红点仍然存在角标数据缓存在 SettingsProvider 或 Launcher清除设置存储或桌面 Launcher 数据执行pm clear com.android.settings,但要先备份
禁用后系统设置闪退误禁用了设置相关包查看 logcat 或崩溃提示执行adb shell pm enable 包名或运行恢复脚本
Google Play 服务异常误禁用了 GMS 相关包查看pm list packages -d恢复com.google.android.gmscom.google.android.gsf
禁用包时提示not allowed受保护的厂商系统应用查看完整错误信息使用pm disable或 Root 方案
更新包仍然在后台下载更新服务被禁用,但下载服务/连接服务还在查看当前运行的下载服务补禁对应组件,或使用 hosts 拦截域名

排查工作的第一步,永远是确认设备上实际存在的包名。不要凭经验去猜,因为你可能在 A 品牌设备上看到的是com.android.updater,到 B 品牌设备上就变成了com.xx.updater。先扫描,再行动,是这套方法最重要的一步。

9. 最佳实践与工程建议

9.1 不要盲目禁包

系统更新服务通常只占所有系统包的一小部分。最理想的做法是只禁用包名中含updateupdaterota的包,同时警惕高危包。禁用错一个就可能让系统设置无法打开,甚至影响整个系统的稳定性。

我的建议是:脚本提供的过滤列表只是基础,你应该在实际执行前再人工确认一遍。如果你不确定某个包是什么,可以在终端用adb shell dumpsys package 包名查看包信息,或者先在网上搜索确认。

9.2 一定要备份当前状态

脚本里的enabled_packages.txt备份文件非常重要。它记录了你禁用了哪些包、这些包原本是否是启用状态。如果有一天你想要恢复系统更新,只需运行恢复脚本,不用再去回忆之前动了哪些东西。

9.3 选择正确的执行对象

强烈建议不要在重要设备上立刻执行。先找一台备用手机或者不常用的旧设备,完整跑一遍脚本,确认无异常后再操作主力机。这样即使出现问题,也不会影响正常使用。

9.4 安全更新不能完全忽略

禁用 OTA 更新意味着你不会自动收到安全补丁。如果你的设备用于支付、办公或存储敏感资料,建议每隔一段时间手动开启更新服务,下载并安装安全补丁,然后再次禁用。不要因为弹窗烦恼就彻底放弃安全维护,这是治标不治本的隐患。

9.5 保留 ADB 调试入口

执行完脚本后,不建议立刻关闭 USB 调试。如果你需要恢复系统更新,或者发现某个应用异常,随时可以用adb shell pm enable恢复相关包。一旦关闭 USB 调试,再想恢复就会多一道解锁步骤。

9.6 面向不同 ROM 的通用策略

每个厂商 ROM 的更新包名可能不一样,但这套方法的核心思路是通用的:先扫描,再备份,然后禁用,最后验证。只要你愿意花几分钟看完输出结果,就能把“一键安装”变成“按需定制”。如果某台设备限制较多,再考虑 Root 方案或 Magisk 模块,不需要在一开始就追求最复杂的手段。

如果你在实机操作时遇到了脚本不认设备、找不到候选包、禁用后又被自动恢复这几种情况,先把本文第 8 节的表格再读一遍。这套方案真正的门槛,从来不是那几行命令,而是你愿不愿意在动手之前,先把设备上的包名和自己的预期目标都搞清楚。

http://www.cnnetsun.cn/news/4335166.html

相关文章:

  • 我的世界AI建筑生成模组:从安装部署到批量生成实践指南
  • 2026实测报告:毕业论文AI论文软件横向测评,千笔AI凭三大硬指标登顶
  • C++实现B站直播场控机器人:从弹幕协议到可编程架构全解析
  • 网易2018校招C++开发笔试题全解析:核心考点、编程题与避坑指南
  • STM32F407气压计定高四轴实战:从滤波到串级PID完整解析
  • 三参数叠前反演核心逻辑与实操避坑指南
  • 基于Java+SSM的农家乐预约系统设计与实现(源码+文档+部署讲解等)
  • 2024年中国50个生态功能保护区空间数据:三件套格式与GIS应用指南
  • 基于JavaWeb的在线学习系统毕设:源码+数据库+部署全攻略
  • 2026年7月上饶市新房价格深度分析报告
  • 中兴交换机配置总结
  • LangChain1.2学习第三章—— LangSmith、提示词模板、历史对话、消息
  • Harness三道防线:门禁、白名单、循环上限如何堵住线上bug
  • SpringBoot+Vue+微信小程序游戏攻略分享系统毕设开发全攻略
  • 8万字Java八股文开源合集:从HashMap到Kafka的高频考点与面试应用
  • 基于Python和Neo4j构建医疗知识图谱问答系统实践
  • 2018字节跳动算法笔试复盘:高频考点与工程实践避坑指南
  • 嵌入式ROS双系统通信实战:上位机+驱动协同设计与CMake构建
  • Simulink光伏MPPT仿真全解析:boost电路与算法实现
  • 基于SpringBoot+Vue的在线问卷调查系统从开发到论文全流程解析
  • 程序员面试八股文攻略:最强八股文第四版拆解与高效使用指南
  • STM32低功耗串口唤醒实战:睡眠与停止模式详解及代码实现
  • 单目3D检测与BEV可视化:Python工程实现与坐标变换详解
  • 代码随想录最强八股文第四版:从Java基础到分布式面试通关指南
  • 大模型+多模态感知:人形机器人TonyPi全功能实战解析
  • 三极管饱和深度:从面试考点到开关电路工程设计
  • 9,000张真菌感染图像分类数据集:设计与训练实践
  • 具身智能商业化应用难题与TVA破解之道(17)
  • 多模态遥感图像处理实战:红外、可见光、高光谱与SAR配准及目标检测全流程
  • MATLAB与XFOIL耦合的翼型气动分析及优化系统实现