ipa上传失败错误"The binary file XXX libswiftRemoteMirror.dylib is not permitted"解决

打包完上传到appstore时候报错

ERROR ITMS-90171:Invalid Bundle Structure - The binary file XXX 
libswiftRemoteMirror.dylib is not permitted. 
Your app can’t contain standalone executables or libraries, 
other than the CFBundleExecutable of supported bundles...

复制代码

第一种方式

是强制设置 Always Embed Swift Standard LibrariesNo

第二种方式

是删除libswiftRemoteMirror.dylib文件然后重新签名打包

手动删除.app中的libswiftRemoteMirror.dylib文件,然后对.app进行重新签名,最后再用xcrun压缩成 .ipa文件

在xcodebuild 对工程进行编译打包,生成了对应的.app文件 1.删除App里的libswiftRemoteMirror.dylib

rm  xxxApp.app/libswiftRemoteMirror.dylib
复制代码

2.替换证书配置文件(文件名必须为embedded,不得自定义)

cp  mobileprovision路径  xxxApp.app/embedded.mobileprovision 
复制代码

3.生成entitlements.plist

security cms -D -i mobileprovision路径 > entitlements_full.plist

/usr/libexec/PlistBuddy -x -c 'Print:Entitlements' entitlements_full.plist > entitlements.plist
复制代码

4.重签名(certifierName为重签名证书文件名,可以加证书ID后缀)

certifierName="iPhone Distribution: xxxTechnology Limited(xxxx)"
codesign -f -s $certifierName  --entitlements entitlements.plist xxxApp.app
复制代码

完成后,就可以继续用xcrun命令,把对应的.app文件压缩成.ipa文件。

转载于:https://juejin.im/post/5cedf87ce51d4556bb4cd313

<think>好的,我现在需要帮助用户解决在Xcode中添加libgsl.dylib和libgslcblas.dylib时找不到这两个库的问题。用户之前已经配置过GSL,但可能遇到路径问题或者库文件未正确安装的情况。 首先,用户的环境是Apple Silicon Mac,通过Homebrew安装GSL。Homebrew默认的安装路径是/opt/homebrew,所以库文件应该在/opt/homebrew/lib下。用户可能没有正确设置Xcode的搜索路径,或者库文件没有被正确链接。 接下来,我需要考虑用户的具体操作步骤。用户在Xcode的Build Phases里添加Linked Libraries时找不到这两个库。可能的原因包括: 1. 库文件不在Xcode默认搜索的路径中,因此Xcode无法自动找到它们。 2. Homebrew安装的GSL可能没有正确生成动态库,或者用户安装的是静态库版本。 3. 用户可能没有安装pkg-config,导致Xcode无法自动配置路径。 4. 可能存在权限问题,导致Xcode无法访问/opt/homebrew/lib下的文件。 针对这些可能性,我需要分步骤给出解决方案。首先,建议用户确认库文件是否存在。可以通过终端命令检查/opt/homebrew/lib下是否有libgsl.dylib和libgslcblas.dylib。如果不存在,可能需要重新安装GSL。 如果库文件存在,但Xcode无法找到,可能是因为Xcode没有权限访问这些路径。用户可能需要手动添加路径到Library Search Paths和Header Search Paths。此外,用户可能需要手动在Finder中找到库文件并拖入Xcode项目中,或者通过添加Other来指定路径。 另外,使用pkg-config可能简化配置,但需要确保pkg-config已经安装并且能找到GSL的.pc文件。如果用户没有安装pkg-config,可能需要通过Homebrew安装,并设置相应的环境变量。 最后,如果问题仍然存在,可能需要检查Xcode的配置,或者考虑使用命令行编译来测试是否GSL安装正确。用户可能还需要检查Homebrew的安装是否完成,是否有错误提示。 总结,解决方案应该包括检查库文件是否存在、手动添加路径、使用pkg-config、或者手动拖入库文件。同时,需要指导用户如何验证每一步是否成功,以及如何处理常见的权限或安装问题。</think>--- ### **问题分析** 在 Xcode 的 **Build Phases → Link Binary With Libraries** 中直接添加 `libgsl.dylib` 和 `libgslcblas.dylib` 时找不到文件,通常是因为以下原因: 1. **库文件未正确安装**:Homebrew 安装的 GSL 可能未生成动态库,或路径未生效。 2. **Xcode 默认搜索路径不包含 `/opt/homebrew/lib`**:需手动指定库路径。 3. **动态库命名或权限问题**:库文件可能被隐藏或命名不一致。 --- ### **解决方案** #### **步骤 1:确认库文件是否存在** 打开终端,检查 `/opt/homebrew/lib` 路径下是否包含目标文件: ```bash ls /opt/homebrew/lib | grep libgsl ``` 预期输出应包含: ``` libgsl.dylib libgslcblas.dylib ``` - **如果不存在**:重新安装 GSL: ```bash brew reinstall gsl ``` --- #### **步骤 2:手动添加库文件到 Xcode** 1. **直接通过路径添加**: - 在 Xcode 的 **Link Binary With Libraries** 界面,点击 **+** → **Add Other...** → **Add Files**。 - 使用快捷键 **⌘+Shift+G**,输入路径 `/opt/homebrew/lib`,找到 `libgsl.dylib` 和 `libgslcblas.dylib` 并添加。 ![Xcode 添加库文件示意图](https://example.com/xcode-add-libs.png) (若无法加载图片,请通过路径手动选择) 2. **拖拽添加**: 打开 Finder,进入 `/opt/homebrew/lib`,将 `libgsl.dylib` 和 `libgslcblas.dylib` 拖拽到 Xcode 的 **Link Binary With Libraries** 区域。 --- #### **步骤 3:配置 Xcode 搜索路径(关键!)** 即使手动添加了库文件,仍需确保编译时能正确搜索到路径: 1. **Header Search Paths**: `Build Settings` → `Search Paths` → `Header Search Paths` → 添加 `/opt/homebrew/include` 2. **Library Search Paths**: `Build Settings` → `Search Paths` → `Library Search Paths` → 添加 `/opt/homebrew/lib` ![Xcode 搜索路径配置示意图](https://example.com/xcode-search-paths.png) --- #### **步骤 4:验证动态库链接状态** 编译后,通过终端检查可执行文件依赖的库路径是否包含 `/opt/homebrew/lib`: ```bash otool -L YourExecutableFile ``` 正确输出示例: ``` /opt/homebrew/lib/libgsl.dylib (...) /opt/homebrew/lib/libgslcblas.dylib (...) ``` --- ### **常见问题补充** #### **1. 库文件存在但 Xcode 仍提示找不到** - **原因**:Xcode 未继承系统路径(常见于 macOS 新版本的安全限制)。 - **解决**:在编译选项中添加 `-rpath`: ```bash # 在 Xcode 的 `Other Linker Flags` 中添加: -Wl,-rpath,/opt/homebrew/lib ``` #### **2. 动态库为符号链接(常见于 Homebrew)** - Homebrew 安装的库可能是符号链接(例如 `libgsl.27.dylib` → `libgsl.dylib`)。 - **无需处理**:Xcode 会自动解析符号链接。 #### **3. 仅需链接静态库** - 若需强制使用静态库,链接 `libgsl.a` 和 `libgslcblas.a`: ```bash # 在 Xcode 的 `Other Linker Flags` 中添加: -lgsl -lgslcblas ``` --- ### **替代方案:使用 pkg-config 简化配置** 1. 安装 `pkg-config`: ```bash brew install pkg-config ``` 2. 在 Xcode 的 `Build Settings` → `Other Linker Flags` 中添加: ```bash $(pkg-config --libs gsl) ``` Xcode 会自动解析库路径和依赖关系。 --- ### **总结** 通过手动指定路径或配置 `pkg-config`,可确保 Xcode 正确识别 Homebrew 安装的 GSL 库。若仍有问题,请检查 Homebrew 环境完整性或尝试重启 Xcode。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值