# 不上架App Store把自己的App装到iPhone

> 有Mac和Xcode就能免费安装，但7天后失效。付费账号、TestFlight、Expo build或Expo Go，按情况选择。

原始页面：[不上架App Store把自己的App装到iPhone](https://devoria.fr/zh-hans/blog/install-your-own-app-on-iphone-without-app-store)
作者：[Mehdi Azizi](https://devoria.fr/zh-hans/mehdi-azizi)
发布：2026-11-04
内容最后修订：2026-11-04


可以，你完全可以不经过 App Store，把自己的 App 装到 iPhone 上，甚至可以免费。你需要一台 Mac、Xcode 和一个普通的 Apple 账号。**但用免费账号安装的 App 会在 7 天后失效**：你得重新编译、重新安装。想保留更久，或者在没有 Mac 的情况下安装，就需要付费加入 Apple Developer Program，每年 99 美元。

我自己的 App，Solys、TradaZen 和 Nolera，早在上线之前就在我的 iPhone 上测试了。这篇指南对比五种官方途径，依据的是我在 2026 年 11 月 3 日重新核对过的 Apple 和 Expo 官方页面。如果你关心的是做一个 App 的整体成本，建议先看[免费开发 iPhone 应用](https://devoria.fr/zh-hans/blog/free-iphone-app-development-real-cost)。

## 五种安装方式对比

| 方式                      | 费用         | 是否需要 Mac | 安装有效期       |
| ------------------------- | ------------ | ------------ | ---------------- |
| Xcode，免费账号           | 免费         | 是           | 7 天             |
| Xcode，付费账号           | 每年 99 美元 | 是           | 最长 12 个月     |
| 通过链接安装的 Expo build | 每年 99 美元 | 否           | 最长 12 个月     |
| TestFlight                | 每年 99 美元 | 否           | 每个 build 90 天 |
| Expo Go                   | 免费         | 否           | 依赖你的电脑     |

逐行说明限制：

- **免费账号**：3 台设备、10 个 App ID，有效期 7 天，每台设备最多 3 个 App。
- **付费账号，Xcode 或 Expo 链接**：每个会员年度最多注册 100 台 iPhone。
- **TestFlight**：最多 100 名内部测试员和 10000 名外部测试员，外部测试需要 Apple 审核。
- **Expo Go**：你的项目运行在 Expo Go 这个 App 里面，不能用自定义原生模块。

12 个月的有效期指的是安装描述文件的有效期，来源是 [Expo 文档](https://docs.expo.dev/app-signing/app-credentials/)。其他数字来自下文引用的 Apple 页面。

## 免费方式：Mac 加 Xcode

这是不付会员费、把真正的原生 App 装到 iPhone 上的唯一官方方式。Xcode 在 [Mac App Store 免费下载](https://apps.apple.com/fr/app/xcode/id497799835?mt=12)。当前版本要求 macOS 26.6，以及搭载 Apple M1 或更新芯片的 Mac。

根据 [Xcode 文档](https://developer.apple.com/documentation/xcode/running-your-app-on-simulated-or-physical-devices)，步骤如下：

1. **在 Xcode 中登录你的 Apple 账号**，菜单 Settings，然后 Apple Accounts。没有会员资格时，Xcode 会显示为 Personal Team。
2. **打开项目的 Signing & Capabilities 标签页**。点击 Set Up Signing，选择你的团队，并填写一个唯一的 bundle ID。
3. **用 Device Hub 把 iPhone 和 Mac 配对**，有线或无线都可以。
4. **选择你的 iPhone** 作为运行目标，然后点击 Run。Xcode 会注册设备并生成安装描述文件。

用 Expo 的话，`npx expo run:ios --device` 命令做的是同一件事：它用 Xcode 在本地编译项目，并安装到连接的 iPhone 上。[Expo 明确说明](https://docs.expo.dev/develop/development-builds/introduction/)：这种本地编译是在没有付费账号的情况下，把开发 build 装到 iPhone 上的唯一方式。

### 免费账号的限制

[Apple 关于开发者账号的帮助页面](https://developer.apple.com/help/account/basics/about-your-developer-account)为 Personal Team 规定了三项限制：

- **最多 10 个 App ID**，7 天后过期；
- **最多 3 台设备**，同样 7 天后过期；
- **每台设备最多 3 个 App**。

**安装描述文件在创建 7 天后过期。** 过期后，Apple 要求你重新编译 App，并从 Xcode 重新安装。根据同一页面的表格，免费账号无法使用 App Store Connect、TestFlight，也无法进入证书和描述文件管理区。如果是你每周都在改的个人 App，这还能接受。如果是你想每天随手就用的 App，很快就会觉得麻烦。

## 在 iPhone 上开启开发者模式

由 Xcode 编译的 App，或者从 `.ipa` 文件安装的 App，在开发者模式关闭时无法打开。[Apple 设计这个模式](https://developer.apple.com/documentation/xcode/enabling-developer-mode-on-a-device)是为了防止用户无意中安装有风险的软件。它不影响从 App Store 或 TestFlight 安装的 App。

开启方法：

1. 打开 Settings，然后 Privacy & Security。
2. 在 Security 下面，开启 Developer Mode。
3. 在弹窗中点击 Restart。
4. 重启后，点击 Turn On 确认，再输入你的密码。

根据 Apple 的说明，只有在开始与 Mac 配对之后，或者 iPhone 曾经配对过，这个选项才会出现在设置里。[根据 Expo 的说明](https://docs.expo.dev/guides/ios-developer-mode/)，通过链接安装的 Expo build 和本地开发 build 也需要开发者模式。没有 Mac 的话，Expo 建议先安装 build，再点它的图标：这时会弹出提示，让你开启这个模式。

## 付费账号：让 App 一直装着

加入 [Apple Developer Program](https://developer.apple.com/programs/enroll/) 每个会员年度 99 美元，注册时会以当地货币显示价格。个人和组织怎么选、会员资格包含什么，详见 [Apple 开发者账号：价格与注册](https://devoria.fr/zh-hans/blog/apple-developer-account-price-free-or-99)。

有了会员资格，安装就不再只有 7 天。Expo 指出，安装描述文件在 12 个月后过期。根据 [Apple 关于设备的帮助页面](https://developer.apple.com/help/account/devices/devices-overview)，每个会员年度最多可以注册 100 台 iPhone。**停用设备并不会腾出名额**：计数要到下一个会员年度开始时才会重置为 100。

你可以继续用 Xcode 安装，也可以改用下面两种不需要 Mac 的方式之一。

## 通过链接安装 Expo build

Expo 把这种方式叫做[内部分发](https://docs.expo.dev/build/internal-distribution/)。EAS 的服务器编译你的 App，然后给你一个安装链接。这需要付费的 Apple Developer 账号。

1. **注册你的 iPhone**，用 `eas device:create`。这个命令会生成一个链接或二维码，在手机上打开即可。
2. **在 `eas.json` 中添加一个 profile**，设置 `"distribution": "internal"`，参照 [Expo 教程](https://docs.expo.dev/tutorial/eas/internal-distribution-builds/)。
3. **用这个 profile 运行 iOS build**，然后在 iPhone 上打开安装链接。

**之后新增的 iPhone 需要重新 build**，或者对现有 build 重新签名。Expo 还提醒，已停用的设备仍然计入 100 台的上限。

对于使用了原生模块的个人 App，这是最理想的方式。我的 App 还在用 Expo SDK 57，而 App Store 上的 Expo Go 跟的是 SDK 58：所以我用自己的 build 测试，而不是在 Expo Go 里。

## TestFlight：最省心的方式

TestFlight 会像普通 App 一样安装你的 App，不需要开发者模式，也不需要注册设备。根据 [App Store Connect 帮助](https://developer.apple.com/help/app-store-connect/test-a-beta-version/testflight-overview)，**每个 build 可用 90 天**。你最多可以邀请 100 名内部测试员，也就是有权访问你 App 的 App Store Connect 用户。

这是我日常用的方式。我的 App 的内部测试组设成了自动分发：每次上传的 build 都会自动出现在我 iPhone 上的 TestFlight App 里。[Expo 也确认了这一点](https://docs.expo.dev/eas/json/)：build 会被加入开启了自动分发的测试组。

如果测试员不在你的团队里，[Apple 要求审核](https://developer.apple.com/testflight/)第一个 build。完整细节见 [TestFlight：测试你的 iPhone 应用](https://devoria.fr/zh-hans/blog/testflight-guide-test-iphone-app)。

## Expo Go：一分钱不花先试试

Expo Go 是一个免费 App，从你的电脑加载项目。这是在 iPhone 上看到第一批界面最快的方式，用 PC 也行。从 2026 年 9 月起，[Expo 要求登录](https://expo.dev/changelog/expo-go-57-login)你的 Expo 账号，终端和 iPhone 上的 App 里都要登录。

有两个限制需要知道：

- **版本。** [Expo Go 只支持最新版本的 SDK](https://docs.expo.dev/workflow/upgrading-expo-sdk-walkthrough/)。[它在 App Store 上的版本](https://apps.apple.com/fr/app/expo-go/id982107779)于 2026 年 10 月 22 日发布，跟的是 SDK 58。但这种跟进并没有保证：根据 [Expo 2026 年 5 月 4 日的更新日志](https://expo.dev/changelog/expo-go-and-app-store-may-2026)，2026 年春天它一直停留在 SDK 54，等待 Apple 审核通过。因此从 SDK 56 开始，`create-expo-app` 会让你创建一个与 App Store 版本兼容的项目。如果你的项目用的是其他 SDK，`eas go` 可以生成你自己的 Expo Go 副本，通过 TestFlight 分发，但需要付费会员资格。
- **原生模块。** [Expo 明说了](https://docs.expo.dev/get-started/set-up-your-environment/)：Expo Go 是用来学习的试验场，功能有限，不适合要上线的项目。一旦你加入 Expo Go 里没有的原生模块，就需要开发 build。

## 用 Windows 电脑

Xcode 只有 Mac 版。**在 Windows 上，没有任何官方方式能免费把原生 App 装到 iPhone 上。** [Expo 的 FAQ](https://docs.expo.dev/faq/) 总结得很清楚：在云端编译，用 Expo Go 或开发 build 在真机上测试。你还剩两条路：

- **免费**：Expo Go，项目要兼容它在 App Store 上的版本。
- **付费会员**：EAS 服务器编译你的 App，然后通过链接或 TestFlight 安装。[Expo 说明](https://docs.expo.dev/deploy/submit-to-app-stores/)，它的提交服务在 Windows 和 Linux 上也能用于 iOS。

不用 Mac 的完整流程见[没有 Mac 也能发布 iOS 应用](https://devoria.fr/zh-hans/blog/publish-ios-app-without-mac-expo-eas)。

## 该选哪种方式

- **App 只给自己用，你有 Mac，每周重装一次也无所谓**：Xcode 加免费账号。
- **你想每天随手就用**：付费会员，然后用 TestFlight。
- **你的 App 用了原生模块，而你没有 Mac**：付费会员，然后通过链接安装 Expo build。
- **你刚入门，只想看看界面效果**：Expo Go。
- **你想分享给几个亲友**：TestFlight，用内部测试员或外部测试组。

## 打造你要安装的 App

安装只是最后一步。如果你用 AI 开发 App，[iOS & Android Kit](https://devoria.fr/zh-hans/kits/ios) 以我自己 App 的起步代码为基础，已经为 Expo 配置好，带你按自己的节奏走完四个步骤，直到上架 App Store。AI 在移动项目上常犯的错误，详见[用 AI 开发应用](https://devoria.fr/zh-hans/blog/build-ios-app-with-ai-pitfalls-checks)。

如果你还不确定该怎么做，[免费做个诊断](https://devoria.fr/zh-hans/diagnostic)：它会告诉你真正卡住你的是什么，并发给你我的 Apple 防拒审清单。用 Expo 的完整方法见 [React Native 和 Expo 移动应用](https://devoria.fr/zh-hans/expertise/react-native-expo-mobile-app)页面。

## 常见问题

### 能不能不通过 App Store，免费把自己的 App 装到 iPhone 上？

可以，用 Mac、Xcode 和免费的 Apple 账号。Xcode 会编译 App 并安装到连接的 iPhone 上。安装 7 天后失效，而且最多 3 台设备、每台设备 3 个 App。

### 为什么用 Xcode 安装的 App 7 天后就打不开了？

使用免费账号时，Apple 会让安装描述文件在创建 7 天后过期。这时重新编译 App，再从 Xcode 重新安装即可。付费会员的描述文件最长可用 12 个月。

### 怎么在 iPhone 上开启开发者模式？

打开 Settings，然后 Privacy & Security，在 Security 下开启 Developer Mode。点击 Restart，然后点击 Turn On 并输入密码确认。iPhone 与 Mac 配对后这个选项才会出现。没有 Mac 的话，先安装 build，再点它的图标：会弹出提示让你开启这个模式。

### 能用 Windows 安装自己的 iPhone App 吗？

原生 App 没法免费安装，因为 Xcode 只有 Mac 版。免费的话，你可以在 Expo Go 里运行项目。有付费会员的话，EAS 在云端编译 App，然后你通过链接或 TestFlight 安装。

### 一个开发者账号能注册多少台 iPhone？

付费账号每个会员年度最多 100 台 iPhone。停用设备不会腾出名额。免费账号上限是 3 台设备，7 天后过期。

### 用 TestFlight 安装的 App 能用多久？

每个 build 可用 90 天。到期前上传新的 build，然后在 TestFlight App 里安装即可。


## 你的项目

[iOS & Android Kit](https://devoria.fr/zh-hans/kits/ios)：用 Claude Code 打造你的 iPhone 和 Android 应用：我自己应用的起步代码、上架商店的完整流程，以及全部工具包。¥739。

[诊断：你离自己的 iPhone 应用还差什么](https://devoria.fr/zh-hans/diagnostic)：7 个问题，60 秒：看清真正阻碍你发布 iPhone 应用的原因，拿到你的 4 步路线和适合你的套件。
