跳到主要内容

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)角色。

  1. 登录 Certificates, Identifiers & Profiles,点左侧的 Devices。
  2. 点左上角的加号。
  3. Platform 选 iOS,填一个好认的设备名,如「张三-iPhone15」,再填 UDID。
  4. 点 Continue,核对信息后点 Register。

一次要加很多台时,可以按 Apple 提供的格式准备设备列表文件,在同一页面批量上传,见注册多个设备。

第三步:编辑描述文件并重新下载

描述文件在生成的那一刻就把设备列表固定下来,新注册的设备不会自动加进旧文件。按 Apple 文档编辑、下载或删除描述文件操作。

  1. 在 Certificates, Identifiers & Profiles 点左侧的 Profiles。
  2. 选中要更新的描述文件。调试用的是 iOS App Development 类型,发给测试人员的是 Ad Hoc 类型。
  3. 点 Edit,在设备列表里勾选新注册的设备。
  4. 点 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 内测分发教程。

注册后仍然装不上要查哪些地方?

  1. 用 kxdevice device list 拿到 UDID,和后台 Devices 页里登记的逐字核对。
  2. 确认 Devices 页里这台设备是启用状态。
  3. 确认描述文件编辑后已经保存并重新下载,证书目录里的是新文件。
  4. 确认主 App 和每个扩展的描述文件都勾选了这台设备。
  5. 重新构建,不要重装旧 .ipa。
  6. 仍然失败,对照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,再判断具体原因。