iOS端构建React Native应用失败:AppAuth代码签名无效
问题描述
我正在React Native应用中集成react-native-app-auth组件,Android端运行正常,但iOS端构建后启动应用时出现以下报错并崩溃:
dyld: Library not loaded: @rpath/AppAuth.framework/AppAuth
Referenced from: /private/var/containers/Bundle/Application/38019FA7-8A4E-43F9-93BE-51A59E42308B/MapMobileWorkbench.app/MapMobileWorkbench
Reason: no suitable image found. Did find:
/private/var/containers/Bundle/Application/38019FA7-8A4E-43F9-93BE-51A59E42308B/MapMobileWorkbench.app/Frameworks/AppAuth.framework/AppAuth: code signature invalid for '/private/var/containers/Bundle/Application/38019FA7-8A4E-43F9-93BE-51A59E42308B/MapMobileWorkbench.app/Frameworks/AppAuth.framework/AppAuth'
/private/var/containers/Bundle/Application/38019FA7-8A4E-43F9-93BE-51A59E42308B/MapMobileWorkbench.app/Frameworks/AppAuth.framework/AppAuth: stat() failed with errno=25
/private/var/containers/Bundle/Application/38019FA7-8A4E-43F9-93BE-51A59E42308B/MapMobileWorkbench.app/Frameworks/AppAuth.framework/AppAuth: code signature invalid for '/private/var/containers/Bundle/Application/38019FA7-8A4E-43F9-93BE-51A59E42308B/MapMobileWorkbench.app/Frameworks/AppAuth.framework/AppAuth'
/private/var/containers/Bundle/Application/38019FA7-8A4E-43F9-93BE-51A59E42308B/MapMobileWorkbench.app/Frameworks/AppAuth.framework/AppAuth: stat() failed with errno=1
我的React Native环境信息:
React Native Environment Info: System: OS: macOS 10.14.6 CPU: (8) x64 Intel(R) Core(TM) i7-7820HQ CPU @ 2.90GHz Memory: 1.29 GB / 16.00 GB Shell: 3.2.57 - /bin/bash Binaries: Node: 10.16.1 - /var/folders/2p/5xwrclh55wjc5glqmnwdcbqm0000gp/T/yarn--1582121305976-0.1309360786018443/node Yarn: 1.22.0 - /var/folders/2p/5xwrclh55wjc5glqmnwdcbqm0000gp/T/yarn--1582121305976-0.1309360786018443/yarn npm: 6.9.0 - ~/.nvm/versions/node/v10.16.1/bin/npm SDKs: iOS SDK: Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1 IDEs: Xcode: 11.3.1/11C504 - /usr/bin/xcodebuild npmPackages: react: 16.8.3 => 16.8.3 react-native: 0.59.5 => 0.59.5
我已经尝试过的操作:
- 目标中已添加AppAuth的.a库和.framework文件,但AppAuth.framework图标为浅黄色(其他已链接.framework为常规黄色)
- 多次删除并重装Pod
- 切换新/旧版构建系统
现在不知道还有什么解决办法,求帮助!
解决思路和方案
这个问题的核心是AppAuth.framework没有被正确签名或嵌入,结合你的操作和环境,试试以下几个步骤:
修正Framework的嵌入与签名配置
浅黄色的Framework图标通常表示它没有被设置为嵌入并签名:- 打开Xcode,进入你的主应用target的「General」标签
- 在「Frameworks, Libraries, and Embedded Content」列表中找到
AppAuth.framework - 将它的「Embed」选项从
Do Not Embed改为Embed & Sign - 保存配置后重新Clean并构建项目
彻底清理构建缓存与Pod依赖
有时候旧的缓存或Pod配置会残留问题:- 执行Xcode的深度清理:按
Cmd+Option+Shift+K清理Derived Data,再按Cmd+Shift+K清理当前项目 - 进入ios目录,删除
Pods文件夹、Podfile.lock和xcuserdata文件夹 - 重新执行
pod install,然后打开.xcworkspace文件构建
- 执行Xcode的深度清理:按
检查Pod中AppAuth的签名配置
有时候Pod依赖的签名会和主项目不一致:- 在Xcode中打开Pods项目,找到
AppAuthtarget - 进入「Signing & Capabilities」标签,勾选「Automatically manage signing」并选择正确的Team
- 确保这里的签名配置和主应用target保持一致
- 在Xcode中打开Pods项目,找到
适配RN版本的组件版本检查
你的RN版本是0.59.5,属于较旧的版本,确认你安装的react-native-app-auth版本是兼容该RN版本的:- 查看
react-native-app-auth的官方文档,找到适配RN0.59的版本号 - 执行
yarn add react-native-app-auth@x.x.x(替换为兼容版本),然后重新执行pod install
- 查看
手动重新导入Framework
如果之前的导入有问题,尝试重新导入:- 先从项目中移除现有的
AppAuth.framework和.a库 - 从
node_modules/react-native-app-auth/ios目录中找到AppAuth.framework - 拖拽到Xcode的「Frameworks」目录,勾选「Copy items if needed」和你的主应用target
- 先从项目中移除现有的
如果以上步骤都试过还是不行,可以尝试重启Xcode和电脑,或者检查你的Apple开发者证书是否有效(比如是否过期、是否包含当前设备的UDID)。
内容的提问来源于stack exchange,提问作者dawsonc623

