Syl*_*lar 9 mobile carthage visual-studio-app-center visual-studio-app-center-distribute
我继承了一个用 Carthage 构建的项目。使用 Xcode 12,我遇到了这个错误:
致命错误:/Applications/Xcode_12.3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo:/Users/runner/Library/Caches/org.carthage.CarthageKit/DerivedData/12.3_12C33/AEXML/ 4.6.0/Build/Intermediates.noindex/ArchiveIntermediates/AEXML iOS/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/AEXML.framework/AEXML 和 /Users/runner/Library/Caches/org.carthage.CarthageKit/DerivedData/12.3_12C33/AEXML/4.6 .0/Build/Products/Release-iphonesimulator/AEXML.framework/AEXML 具有相同的体系结构 (arm64),并且不能位于同一个 fat 输出文件中
使用通用架构构建通用框架是不可能的。“AEXML”的设备和模拟器切片均针对以下版本构建:arm64 使用 --use-xcframeworks 重新构建以创建 xcframework 捆绑包。
快速的谷歌搜索让我发现了这个适用于我的本地机器。
第一次使用 AppCenter,我使用以下内容创建了一个预构建脚本:
#!/usr/bin/env bash
# Pre-build
# See: https://learn.microsoft.com/en-us/appcenter/build/custom/scripts/#pre-build
echo "Pre-build has started."
sh ./carthage.sh update --use-submodules
echo "Pre-build has ended."
Run Code Online (Sandbox Code Playgroud)
我认为应该使用迦太基来构建这个?我在 AppCenter 中收到错误:
*** 在 AEXML.xcodeproj 中构建方案“AEXML iOS” shell 任务 (/usr/bin/xcrun lipo -create /Users/runner/Library/Caches/org.carthage.CarthageKit/DerivedData/12.3_12C33/AEXML/4.6. 0/Build/Intermediates.noindex/ArchiveIntermediates/AEXML\ iOS/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/AEXML.framework/AEXML /Users/runner/Library/Caches/org.carthage.CarthageKit/DerivedData/12.3_12C33/AEXML/4.6.0 /Build/Products/Release-iphonesimulator/AEXML.framework/AEXML -output /Users/runner/work/1/s/Carthage/Build/iOS/AEXML.framework/AEXML) 失败,退出代码 1:致命错误:/Applications /Xcode_12.3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo:/Users/runner/Library/Caches/org.carthage.CarthageKit/DerivedData/12.3_12C33/AEXML/4.6.0/Build /Intermediates.noindex/ArchiveIntermediates/AEXML iOS/IntermediateBuildFilesPath/UninstalledProducts/iphoneos/AEXML.framework/AEXML 和 /Users/runner/Library/Caches/org.carthage.CarthageKit/DerivedData/12.3_12C33/AEXML/4.6.0/Build/ Products/Release-iphonesimulator/AEXML.framework/AEXML 具有相同的架构 (arm64),并且不能位于同一个 fat 输出文件中
使用通用架构构建通用框架是不可能的。“AEXML”的设备和模拟器切片均针对以下版本构建:arm64 使用 --use-xcframeworks 重新构建以创建 xcframework 捆绑包。
如何在AppCenter中构建?
--use-xcframeworks
Run Code Online (Sandbox Code Playgroud)
此选项仅在 Carthage 0.37.0 中可用。应用程序中心的迦太基版本是0.36.0。他们需要更新应用程序中心项目中使用的 carthage。
您可以查看日志并查看该脚本是否正在运行吗?或者appcenter正在运行carthage二进制文件?
编辑
好消息是 appcenter 识别到 carthage 0.37.0!我appcenter-post-clone.sh在我的项目目录中添加了一个:
#!/usr/bin/env bash
set -e
set -x
carthage update --cache-builds --use-xcframeworks --platform ios
carthage version
echo "" > Cartfile
echo "" > Cartfile.resolved
Run Code Online (Sandbox Code Playgroud)
appcenter 识别已--use-xcframeworks使用,因此需要 0.37.0。
注意:我正在清空 Cartfile*,以便 appcenter 不会运行其本机 carthage 命令(它会在注意到 Cartfile 和 Cartfile.resolved 时执行此操作)。
编辑2
我现在正在考虑在应用程序中心使用类似 carthage_cache 的东西,因为 carthage 签出和构建最终需要花费很多时间。
小智 6
试试这个(您可能需要先升级您的迦太基)
carthage update --no-use-binaries --use-xcframeworks --platform iOS
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4289 次 |
| 最近记录: |