🌍 Nrfr 完全指南
免 Root 修改 SIM 卡国家码,解决国际漫游兼容性问题,突破区域限制
1. 什么是 Nrfr?
Nrfr(发音:”nefer”)是一款开源的 Android 工具,由开发者 Ackites 创建,托管在 GitHub 上,目前获得超过 8,000 颗 Star。它可以在 不需要 Root 的情况下,修改手机的 SIM 卡国家码(Country Code),从而解决国际漫游时运营商配置不兼容、区域限制等问题。
简单来说:当你插上境外 SIM 卡时,部分 App 或系统功能会因为国家码检测而拒绝工作。Nrfr 可以”告诉”系统你的 SIM 卡来自另一个国家,让 App 以为你就在那个国家,从而解锁功能。
Nrfr 最突出的特点是它完全基于 Android 原生 API 实现——不依赖 Xposed、Magisk 等任何第三方框架,仅通过调用系统级 CarrierConfigLoader 接口完成修改。通过 Shizuku 提供必要的权限支持,整个过程安全、可逆。
2. 实现原理 — 如何通过 Shizuku 修改国家码
2.1 核心架构
Nrfr 的工作流程可以分为三层:
- 桌面端工具(nrfr-client) — 基于 Wails + React 构建的桌面应用,负责连接手机、自动安装 Shizuku 和 Nrfr APK。它不是必须的,但你第一次使用时会非常方便。
- Shizuku 特权服务 — 通过无线调试或 ADB 启动的高权限后台服务。Nrfr 通过 Shizuku API 获得调用系统隐藏 API 的权限。
- Nrfr Android 应用 — 用户直接操作的界面,选择 SIM 卡、设定目标国家码、执行修改。
2.2 关键技术细节
Nrfr 的核心是 Android 系统中的 CarrierConfigLoader 服务。这是 Android 从 8.0(API 26)开始内置的系统服务,用于管理运营商配置参数。CarrierConfigLoader 的工作原理如下:
- 不是修改 SIM 卡 — Nrfr 不会对 SIM 卡本身进行任何写入操作。SIM 卡上的数据(IMSI、ICCID 等)完全不变。
- 修改系统层面的配置 — 它改变的是 Android 系统 读取 SIM 卡信息的方式,相当于在系统层面对 SIM 卡国家码做了一个”重定向”。
- 通过 Shizuku 桥接 — CarrierConfigLoader 的某些接口需要系统级权限(shell 或 system UID)。普通 App 没有这个权限,但 Shizuku 提供了这个桥梁。Nrfr 通过 Shizuku API 调用
CarrierConfigLoader.overrideConfig方法,传入新的国家码和运营商配置。 - 永久生效 — 修改后会持久化在系统的 carrier config 数据库中,即使重启手机也不会丢失。
- 完全可逆 — 应用内提供一键还原功能,调用
CarrierConfigLoader.removeOverrideConfig即可清除所有修改。
2.3 为什么需要 Shizuku?
CarrierConfigLoader 的 overrideConfig 方法签名上有 @RequiresPermission 注解,调用者需要持有 MODIFY_PHONE_STATE 权限或具有 system/shell UID。普通第三方 App 即使声明了权限也无法获取,因为这是一个 signature|privileged 级别的权限。
Shizuku 通过 ADB(或 Root)启动一个具有 shell UID 的后台进程,Nrfr 通过 Shizuku 的 Binder IPC 机制让这个进程代为执行系统调用,从而绕过权限限制。整个过程不需要用户有 Root 权限——只需要在开发者选项中开启无线调试即可。
💡 提示:原理总结 Shizuku 提供权限代理 → Nrfr 通过 Shizuku API 调用 CarrierConfigLoader.overrideConfig → 系统修改运营商参数 → App 和系统应用读取到新的国家码 → 区域限制解除。
3. Nrfr vs 其他方案
| 方案 | 是否需要 Root | 安全性 | 持久性 | 便利性 | 适用范围 |
|---|---|---|---|---|---|
| Nrfr | ❌ 不需要 | ✅ 原生 API,不修改系统 | ✅ 重启后仍生效 | ✅ 一键操作,图形界面 | 仅修改国家码相关 |
| Xposed 模块 | ❌ 需要 Root | ⚠️ 修改系统框架 | ✅ 持久 | ⚠️ 需要安装框架 | 任意可 Hook 的功能 |
| Magisk 模块 | ✅ 需要 | ⚠️ 修改系统分区 | ✅ 持久 | ⚠️ 需要刷模块 | 系统级修改 |
| VPN/代理伪装 | ❌ 不需要 | ✅ 不涉及系统 | ❌ 关闭即失效 | ✅ 简单 | 仅网络层面 |
| 修改 build.prop | ✅ 需要 | ⚠️ 可能触发 SafetyNet | ✅ 持久 | ⚠️ 需文件操作 | 整体设备信息 |
可以看到,Nrfr 最大的优势在于 无需 Root + 使用原生 API + 操作简单 的结合。它只修改国家码相关的运营商配置,而不是篡改整个系统,因此安全性也更高。
4. 典型使用场景
4.1 TikTok 区域限制
TikTok 会检测 SIM 卡的国家码来判断用户所在地区。如果你人在海外但插着国内 SIM 卡,或相反情况,TikTok 可能限制功能或显示错误内容。使用 Nrfr 将国家码改为目标地区(如 JP、US),即可正常使用。
4.2 Samsung Health 地区检测
Samsung Health 在首次启动时会检测 SIM 卡国家码,如果检测到不支持的地区,会限制部分功能(如心率监测、压力检测等)。Nrfr 可以绕过这一限制。
4.3 国际漫游运营商配置兼容
在国外使用国内 SIM 卡漫游时,部分运营商功能可能无法正常工作——比如 VoLTE、WiFi Calling、运营商名称显示异常等。修改国家码可以让系统加载正确的运营商配置。
4.4 应用地区检测绕过
很多应用会根据 SIM 卡国家码自动选择语言、功能集或内容策略。通过 Nrfr 修改国家码,可以解锁某些地区专属功能,或获得更好的本地化体验。
4.5 运营商参数适配
部分 MVNO(虚拟运营商)或小众运营商的配置不完整,导致手机无法正确识别。修改国家码可以让系统使用相近的运营商配置,恢复正常通信功能。
5. 快速开始 — 完整操作步骤
方法一:使用桌面端快速启动工具(推荐)
适合第一次使用 Nrfr 的用户,工具会自动帮你完成一切。
准备工作:
- 从 GitHub Releases 下载最新版
nrfr-vX.X.X-release.zip,解压到电脑。 - 手机开启开发者选项:进入「设置 → 关于手机」,连续点击「版本号」7 次。
- 进入「开发者选项」,开启:USB 调试、USB 调试(安全设置)(如果有)、USB 安装。
- 用数据线将手机连接到电脑,允许 USB 调试授权。
操作步骤:
- 运行解压后的
Nrfr桌面工具(Windows/Mac/Linux 均支持)。 - 工具会自动检测已连接的设备。
- 自动安装 Shizuku 到手机(如果尚未安装)。
- 按照提示完成 Shizuku 的启动(推荐使用无线调试方式)。
- 工具自动安装 Nrfr APK 到手机。
- 在手机上打开 Nrfr App,选择要修改的 SIM 卡。
- 输入或选择目标国家码(如 US、JP)。
- 点击「应用修改」—— 立即生效。
方法二:手动安装(适合进阶用户)
如果你已经有 Shizuku 运行环境,可以直接下载 APK:
- 从 Releases 下载
nrfr-vX.X.X.apk。 - 安装到手机。
- 确保 Shizuku 已启动运行。
- 打开 Nrfr,选择 SIM 卡和国家码,点击应用。
⚠️ 注意:注意 Android 14/15 及以上系统可能需要额外的无线调试配对步骤。如果使用桌面端工具,这些步骤会自动引导你完成。
方法三:手动安装(离线/无电脑环境)
如果你手边没有电脑,也可以直接在手机上完成:
- 下载 Nrfr APK 和 Shizuku APK 到手机。
- 安装 Shizuku,按照 Shizuku 的无线调试方式启动(需要开启开发者选项中的「无线调试」)。
- 安装 Nrfr APK。
- 打开 Nrfr,选择国家码并应用。
单卡和双卡设备均支持——双卡设备可以为每张 SIM 卡分别设置不同的国家码。
修改完成后
- ✅ 修改会立即生效,无需重启手机。
- ✅ 重启后配置仍然保持。
- ✅ 如需还原,只需在 Nrfr 中点击「还原」按钮。
6. 功能详解
无需 Root
通过 Shizuku 获取权限,不修改系统文件,不影响系统稳定性,不会触发 SafetyNet。
完全可逆
一键还原功能,清除所有修改回到原始状态。不会对 SIM 卡本身造成任何影响。
持久生效
修改存储在系统 carrier config 数据库中,重启后依然有效,无需重复设置。
双卡支持
双卡设备可以为每张 SIM 卡独立配置不同的国家码,互不干扰。
即时生效
修改后无需重启手机,应用设置即刻生效,切换国家码只需几秒钟。
桌面端工具
跨平台桌面工具(Windows/Mac/Linux),自动检测设备、安装组件、引导操作。
原生 API
基于 Android 原生 CarrierConfigLoader API,不依赖 Xposed/Magisk 等第三方框架。
轻量高效
APK 体积小,内存占用低,后台无常驻进程,不影响日常使用。
7. 常见问题与排查
Q1:修改国家码有风险吗?
💡 提示:Nrfr 不修改 SIM 卡物理数据,也不修改系统分区。所有修改都是通过 Android 原生 API 在系统层面对运营商配置的临时覆盖,可以通过应用内的还原功能一键清除。但请注意,修改国家码可能导致某些与运营商绑定的服务暂时不可用(如 VoLTE、WiFi Calling),还原即可恢复。
Q2:提示 Shizuku 未运行怎么办?
💡 提示:Nrfr 需要 Shizuku 在后台运行。如果使用桌面端工具,它会自动安装并引导你启动 Shizuku。如果手动操作,请确保1) 已安装 Shizuku App;2) 已通过无线调试方式启动 Shizuku(Shizuku App 内会有启动向导);3) Shizuku 状态显示「正在运行」。
Q3:修改后没有效果?
💡 提示:可能是因为1) 目标 App 有缓存,尝试清除 App 数据或重启 App;2) 部分 App 不仅检测国家码,还会检测 IP 地址、系统语言等,需要配合其他方法;3) 某些特殊设备(如定制 ROM)的 CarrierConfigLoader 实现可能不同。可以尝试修改为其他地区代码。
Q4:还原后国家码没变回来?
💡 提示:Nrfr 的还原功能会清除所有修改覆盖。如果还原后仍有异常,可以尝试1) 重启手机;2) 重新插拔 SIM 卡。CarrierConfigLoader 会在系统启动时重新加载原始运营商配置。
Q5:支持哪些 Android 版本?
💡 提示:Android 8.0(API 26)及以上版本。CarrierConfigLoader 从 Android 8.0 开始引入。Android 14/15/16 的兼容性已有社区修复版本(如 liuxian513/Nrfr-Community-Improved 提供了 Android 16 的 CarrierConfig 回退修复)。
Q6:桌面端工具打不开?
💡 提示:桌面工具基于 Wails 构建,跨平台支持 Windows/Mac/Linux。如果运行时遇到问题,可以尝试1) 确保系统已安装 ADB(工具内置了 ADB 服务端);2) 检查 USB 连接和数据线质量;3) 在 Release 页面直接下载 APK 手动安装,同样可以使用。
Q7:修改国家码会影响银行 App 吗?
💡 提示:不会。银行 App 通常使用 IMSI 或 ICCID 来识别 SIM 卡归属,而 Nrfr 只修改 CarrierConfigLoader 层面的国家码返回值,不影响 SIM 卡本身的身份信息。但如果你将国家码改到完全无关的地区,某些本地化服务(如外卖、地图)可能显示异常。
Q8:为什么有些设备不支持?
💡 提示:少数定制 ROM(如小米 EU 版、华为鸿蒙等)可能移除了 CarrierConfigLoader 的某些接口,或修改了权限检查逻辑。此外,部分运营商锁定的设备(Carrier Locked)可能也会限制配置修改。如遇到不支持的情况,可在 GitHub 提交 Issue 反馈。
8. 从源码构建
如果你想自己从源码构建 Nrfr,项目包含两个部分:快速启动工具(桌面端)和 Android 应用。
8.1 快速启动工具 (nrfr-client)
基于 Wails 2 + React 19 + TypeScript + Tailwind CSS 构建。
# 进入客户端目录
cd nrfr-client
# 安装依赖
npm install
# 开发模式
wails dev
# 构建发布版本
wails build
8.2 Android 应用 (app)
标准 Android 项目,使用 Gradle 构建。
# 进入 Android 应用目录
cd app
# 使用 Gradle 构建 Debug 版本
./gradlew assembleDebug
# 构建完成后 APK 位于:
# app/build/outputs/apk/debug/app-debug.apk
构建完成后,快速启动工具位于 nrfr-client/build/bin/,Android APK 位于 app/build/outputs/apk/。
8.3 技术栈一览
| 组件 | 技术 |
|---|---|
| 桌面端 | Wails 2 + React 19 + TypeScript + Tailwind CSS 3 |
| Android 端 | 原生 Android (Java/Kotlin) + Gradle |
| 核心依赖 | Shizuku API + Android CarrierConfigLoader |
| Go 版本 | 1.21+ (Wails 后端) |
9. 总结
Nrfr 是一款精巧且实用的 Android 工具,它巧妙地利用了 Android 原生 CarrierConfigLoader API 和 Shizuku 权限桥接机制,在不 Root 的情况下实现了 SIM 卡国家码的修改。对于频繁国际旅行、使用境外 SIM 卡、或者被 App 地区限制困扰的用户来说,Nrfr 提供了一种安全、高效、可逆的解决方案。
其核心优势可以概括为:
- 零 Root 依赖 — 通过 Shizuku 获取必要权限,不破坏系统完整性。
- 纯原生实现 — 只调用系统公开 API,不依赖 Xposed/Magisk 等第三方框架。
- 操作极简 — 桌面端一键引导安装,手机端点选即可修改。
- 安全可逆 — 不修改 SIM 卡,不修改系统分区,一键还原。
- 开源免费 — Apache-2.0 协议,代码完全开放,社区持续维护。
如果你正好需要解决 SIM 卡国家码相关的问题,Nrfr 值得一试。项目还在积极开发中,遇到问题可以到 GitHub 提交 Issue 或参与贡献。
⚠️ 注意:📌 本文相关资源
• GitHub 仓库https//github.com/Ackites/Nrfr
• 最新 Releasehttps//github.com/Ackites/Nrfr/releases
• 依赖项目 Shizukuhttps//shizuku.rikka.app
• 许可证Apache-2.0