iOS 安装提示设备未注册怎么办?把 UDID 注册进描述文件
iOS App 安装提示设备未注册,是 Development 或 Ad Hoc 描述文件里没有这台手机的 UDID。按四步解决:查 UDID、注册设备、更新并重新下载描述文件、重新构建安装;付费账号每类设备每年最多 100 台。
iOS App 安装提示设备未注册(设备不在描述文件里),原因是 Development 或 Ad Hoc 描述文件没有登记这台手机的 UDID。解决办法分四步:查到手机的 UDID,在 Apple Developer 网站注册设备,编辑描述文件勾选新设备并重新下载,替换证书目录里的旧文件后重新构建安装。只注册设备、不重新下载描述文件,问题不会消失。
设备未注册时会报什么错?
同一个问题在不同环节的报错文字不同,对照下表确认你遇到的就是设备未注册。
| 出现的地方 | 报错原文 |
|---|---|
| Xcode 构建时 | Provisioning profile "…" doesn't include the currently selected device |
| 安装到手机时 | ApplicationVerificationFailed (Failed to verify code signature of … : 0xe8008015 (A valid provisioning profile for this executable was not found.)) |
| KXBuild 在 VS Code 中安装时 | 该设备不在描述文件的设备列表里,把它的 UDID 加进去并重新生成描述文件 |
| 网页链接或分发平台安装 | 手机上只显示「无法安装」,或图标一直是灰色 |
0xe8008015 不只代表设备未注册。用 App Store 描述文件签的包直接装真机、描述文件过期、证书被吊销也会报这一条。先按下文核对描述文件里的设备列表,确认设备确实缺失,再走注册流程。
只有 Development 和 Ad Hoc 两类描述文件限制设备。App Store Connect 类型的包只能经 TestFlight 或 App Store 安装,不能直接装到手机。
第一步:怎么查到手机的 UDID?
UDID 是每台设备唯一的标识,注册设备时要填。按你手边的工具选一种方法。
| 方法 | 平台 | 操作 |
|---|---|---|
| kxdevice | Windows、Linux、macOS | 运行 kxdevice device list,第一列就是 UDID |
| iTunes | Windows | 设备摘要页点击「序列号」一栏,切换出 UDID |
| 访达(Finder) | macOS | 选中设备,点设备名下方的信息两次显示 UDID,按住 Control 点按后选「拷贝 UDID」 |
| Xcode | macOS | 在设备窗口(新版叫 Device Hub)选中设备,在信息面板的 UDID 一栏复制 |
用 KXBuild 查看 UDID
用数据线把 iPhone 连上电脑,解锁并点「信任此电脑」,然后运行下面的命令。第一列的 UDID 就是描述文件要包含的值。
1kxdevice device list
接了多台手机时,用 --udid 指定一台查看详细信息。
1kxdevice --udid 00008030-000A1B2C3D4E5F6G device info
列表为空时,先按设备准备安装设备驱动,换能传数据的线,解锁手机查看弹窗。
复制 UDID 时整串复制,不要手抄。
第二步:怎么在 Apple Developer 网站注册设备?
以下步骤依据 Apple 文档注册单个设备,截至 2026 年 10 月。操作需要账号持有人(Account Holder)或管理员(Admin)角色。
- 登录 Certificates, Identifiers & Profiles,点左侧的 Devices。
- 点左上角的加号。
- Platform 选 iOS,填一个好认的设备名,如「张三-iPhone15」,再填 UDID。
- 点 Continue,核对信息后点 Register。
一次要加很多台时,可以按 Apple 提供的格式准备设备列表文件,在同一页面批量上传,见注册多个设备。
第三步:编辑描述文件并重新下载
描述文件在生成的那一刻就把设备列表固定下来,新注册的设备不会自动加进旧文件。按 Apple 文档编辑、下载或删除描述文件操作。
- 在 Certificates, Identifiers & Profiles 点左侧的 Profiles。
- 选中要更新的描述文件。调试用的是 iOS App Development 类型,发给测试人员的是 Ad Hoc 类型。
- 点 Edit,在设备列表里勾选新注册的设备。
- 点 Save,然后点 Download,得到新的 .mobileprovision 文件。
工程里有 Widget、通知扩展等扩展 target 时,每个扩展的描述文件都要同样勾选新设备,否则装主 App 时扩展部分会校验失败。
还没有描述文件的,先按在 Windows 上申请 iOS 开发证书、描述文件和 p12生成一份。
第四步:替换证书目录里的文件并重新构建
在 Windows、Linux 上用 KXBuild 构建时,把新下载的 .mobileprovision 放进 keychain 证书目录,覆盖或删掉旧的同名文件。证书目录有两个位置。
工程目录/keychain/,只对这个工程生效。KXBUILD_HOME/keychain/,所有工程共用。Windows 默认是%USERPROFILE%\kxbuild\keychain\。
放好后重新构建并安装。已经打好的 .ipa 里嵌的是旧描述文件,必须重新构建,不能直接重装旧包。
1kxbuild build .\MyApp.xcodeproj --install
在 VS Code 里直接按 F5 或点「构建并运行」也会重新构建并安装到选中的设备。证书目录的规则见Windows 给 iOS App 签名。
确认新描述文件里有这台设备
想在构建前确认,可以在 Windows 上用 Git for Windows 自带的 OpenSSL 解出描述文件内容,查看 ProvisionedDevices 列表里有没有这台手机的 UDID。
1& "C:\Program Files\Git\mingw64\bin\openssl.exe" smime -inform DER -verify -noverify -in .\keychain\MyApp_Dev.mobileprovision -out profile.plist
用编辑器打开 profile.plist 搜索 UDID。搜不到,说明下载的还是旧文件,或者编辑时没有勾选这台设备。
设备名额用完了怎么办?
截至 2026 年 10 月,Apple 的设备管理说明规定如下。
| 账号类型 | 设备上限 | 规则 |
|---|---|---|
| Apple Developer Program(付费) | 每个会员年度、每类设备 100 台 | iPhone、iPad、Apple Watch、Apple TV、Mac 等各自计数 |
| Apple Developer Enterprise Program | 每个会员年度、每类设备 100 台 | 同上 |
| 免费 Apple ID(个人团队) | 3 台 | 设备登记和描述文件 7 天后过期 |
几条容易踩坑的规则。
- 停用设备不会腾出名额。年度中途停用的设备仍然计数,所以只注册确实要测试的设备。
- 续费后的新会员年度可以重置。账号持有人、管理员或 App 管理员在新年度首次登录 Certificates, Identifiers & Profiles 时,可以选择移除部分或全部设备,把每类设备恢复到 100 台名额。重置时先删掉不再使用的设备,再添加新设备。
- 会员到期后设备会被清空。不续费的话,到期 180 天后设备列表自动清空。
名额紧张时,外部测试改用 TestFlight。TestFlight 不需要收集 UDID,也不占设备名额,见TestFlight 内测分发教程。
注册后仍然装不上要查哪些地方?
- 用
kxdevice device list拿到 UDID,和后台 Devices 页里登记的逐字核对。 - 确认 Devices 页里这台设备是启用状态。
- 确认描述文件编辑后已经保存并重新下载,证书目录里的是新文件。
- 确认主 App 和每个扩展的描述文件都勾选了这台设备。
- 重新构建,不要重装旧 .ipa。
- 仍然失败,对照iOS 签名报错与 ipa 安装失败里 0xe8008015 的其他原因排查。
设备未注册的问题解决、安装成功后,点开 App 如果提示需要开发者模式,见iPhone 开发者模式在哪里打开。
常见问题
注册了设备为什么还是提示设备不在描述文件里?
描述文件生成时就固定了设备列表,注册新设备后要到 Profiles 页编辑描述文件,勾选设备、保存并重新下载,替换旧文件后重新构建。只注册设备是不够的。
在 Windows 上怎么查 iPhone 的 UDID?
用数据线连接手机并点信任后,运行 kxdevice device list,第一列就是 UDID。装了 iTunes 的也可以在设备摘要页点击「序列号」切换出 UDID。
Apple 开发者账号每年能注册多少台设备?
截至 2026 年 10 月,付费账号每个会员年度每类设备最多 100 台,iPhone、iPad 等分开计数。年度中途停用设备不会腾出名额,续费进入新年度时可以移除旧设备恢复名额。
不想收集 UDID 怎么给测试人员装 App?
用 TestFlight。上传构建到 App Store Connect 后添加测试员,测试员通过 TestFlight App 安装,不需要注册设备,也不占 100 台名额。
0xe8008015 一定是设备没注册吗?
不一定。用 App Store 描述文件签的包直接装真机、描述文件过期、证书被吊销也会报这个错误码。先解开描述文件查看 ProvisionedDevices 和 ExpirationDate,再判断具体原因。