Bha*_*ela 17 frameworks xcodebuild ios xcframework
我们的目标是创建一个隐藏我们内部代码的框架,并为我们的客户提供 SDK。我们已经考虑创建满足我们要求的 XCFramework。互联网上也建议使用 Umbrella 框架,但主要建议避免这种方法。我们的框架依赖于我们通过 Pod 使用的一些第三方库。
问题:XCFramework 不编译 pods 框架。我们收到类似“未找到 Xyz(Pod) 模块”的错误消息。即使我们从客户端添加 pod,它也不起作用。
创建 XCFramework 的代码如下
1)为iOS平台创建一个存档
xcodebuild archive -workspace ABC.xcworkspace \
-scheme ABC \
-sdk iphoneos \
-archivePath "./archives/ios_devices.xcarchive" \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
SKIP_INSTALL=NO
Run Code Online (Sandbox Code Playgroud)
2) 为 iOS-Simulator 平台创建存档
xcodebuild archive -workspace ABC.xcworkspace \
-scheme ABC \
-sdk iphonesimulator \
-archivePath "./archives/ios_simulators.xcarchive" \
BUILD_LIBRARY_FOR_DISTRIBUTION=YES \
SKIP_INSTALL=NO
Run Code Online (Sandbox Code Playgroud)
3) 从档案创建一个 XCFramework
xcodebuild -create-xcframework \
-framework ./archives/ios_devices.xcarchive/Products/Library/Frameworks/ABC.framework \
-framework ./archives/ios_simulators.xcarchive/Products/Library/Frameworks/ABC.framework \
-output build/ABC.xcframework
Run Code Online (Sandbox Code Playgroud)
我们成功获得了 ABC XCFramework,但 XCFramework 中不包含依赖项。有什么解决办法吗?或者有什么方法可以将框架搜索路径设置为客户端?或任何替代方法?
您可以创建一个 pod 并发布它。
检查https://guides.cocoapods.org/making/making-a-cocoapod.html
具有 XCFramework + 第三方依赖项的示例 Podspec 文件
Pod::Spec.new do |s|
s.name = 'XCFrameworkTest' # Name for your pod
s.version = '0.0.1'
s.summary = 'Sample Spec'
s.homepage = 'https://www.google.com'
s.author = { 'Sample' => 'sample@sample.com' }
s.license = { :type => "MIT", :text => "MIT License" }
s.platform = :ios
# change the source location
s.source = { :http => 'http://localhost:8080/XCFrameworkTest.zip' }
s.ios.deployment_target = '10.0'
s.ios.vendored_frameworks = 'XCFrameworkTest.xcframework' # Your XCFramework
s.dependency 'PromisesSwift', '1.2.8' # Third Party Dependency
end
Run Code Online (Sandbox Code Playgroud)
发布 pod 后,客户可以使用 cocopods 来获取我们的框架。
在客户的 Podfile 中
pod 'XCFrameworkTest' #Your pod name
Run Code Online (Sandbox Code Playgroud)
我为此目的创建了一个模板。您可以通过运行命令来测试它
pod lib create YourLibName --template-url="https://github.com/zalazara/pod-template-xcframework.git"
Run Code Online (Sandbox Code Playgroud)
该模板基本上会生成一个示例项目及其 podfile 文件,其中嵌入了要开发的框架,然后生成文件使用工作空间编译框架。
BUILD_DIR="Build"
TMP_DIR="${BUILD_DIR}/Tmp"
IOS_ARCHIVE_PATH="${TMP_DIR}/iOS.xcarchive"
IOS_SIM_ARCHIVE_PATH="${TMP_DIR}/iOSSimulator.xcarchive"
rm -rf ${BUILD_DIR}
rm -rf "${FRAMEWORK_NAME}.xcframework"
xcodebuild archive \
-workspace "Example/${WORKSPACE}" \
-scheme ${SCHEME} \
-archivePath ${IOS_SIM_ARCHIVE_PATH} \
-sdk iphonesimulator \
SKIP_INSTALL=NO \
| xcpretty
xcodebuild archive \
-workspace "Example/${WORKSPACE}" \
-scheme ${SCHEME} \
-archivePath ${IOS_ARCHIVE_PATH} \
-sdk iphoneos \
SKIP_INSTALL=NO \
| xcpretty
xcodebuild -create-xcframework \
-framework ${IOS_SIM_ARCHIVE_PATH}/Products/Library/Frameworks/${FRAMEWORK_NAME}.framework \
-framework ${IOS_ARCHIVE_PATH}/Products/Library/Frameworks/${FRAMEWORK_NAME}.framework \
-output ${FRAMEWORK_NAME}.xcframework \
| xcpretty
Run Code Online (Sandbox Code Playgroud)
欲了解更多信息: https: //github.com/zalazara/pod-template-xcframework.git
| 归档时间: |
|
| 查看次数: |
5359 次 |
| 最近记录: |