【发布时间】:2017-12-24 20:06:14
【问题描述】:
我正在开发一个依赖 Alamofire 的小型 Swift 框架。我将它用作属于同一工作区的应用程序的嵌入式框架,它运行良好。
当我想构建一个具有聚合目标的通用框架时,问题就出现了。然后,在执行脚本以生成框架时,它会失败并显示消息 No such module 'Alamofire',指的是我的一个源文件中的 import Alamofire。
这是我的 Podfile:
platform :ios, '9.0'
use_frameworks!
inhibit_all_warnings!
target 'FSIBackend' do
pod 'SwiftLint'
pod 'Alamofire'
pod 'SwiftyJSON'
end
这是生成框架的脚本。它可以与其他没有 Pod 依赖的框架一起使用,所以我认为没问题:
set -e
# Setup
FRAMEWORK_NAME="${1}"
BUILD_DIR="${SRCROOT}/build"
OUTPUT_DIR="${HOME}/Desktop/"
OUTPUT="${OUTPUT_DIR}/${FRAMEWORK_NAME}.framework"
rm -rf "${BUILD_DIR}"
rm -rf "${OUTPUT}"
mkdir -p "${OUTPUT_DIR}"
# Build
xcodebuild -target "${FRAMEWORK_NAME}" -configuration Release -arch arm64 -arch armv7 -arch armv7s only_active_arch=no defines_module=yes -sdk "iphoneos"
xcodebuild -target "${FRAMEWORK_NAME}" -configuration Release -arch x86_64 -arch i386 only_active_arch=no defines_module=yes -sdk "iphonesimulator"
# Copy the device version of framework to output.
cp -r "${BUILD_DIR}/Release-iphoneos/${FRAMEWORK_NAME}.framework" "${OUTPUT}"
# Replace the framework executable within the framework with a new version created by merging the device and simulator frameworks' executables with lipo.
lipo -create -output "${OUTPUT}/${FRAMEWORK_NAME}" "${BUILD_DIR}/Release-iphoneos/${FRAMEWORK_NAME}.framework/${FRAMEWORK_NAME}" "${BUILD_DIR}/Release-iphonesimulator/${FRAMEWORK_NAME}.framework/${FRAMEWORK_NAME}"
# Copy the Swift module mappings for the simulator into the framework. The device mappings already exist from step 6.
cp -r "${BUILD_DIR}/Release-iphonesimulator/${FRAMEWORK_NAME}.framework/Modules/${FRAMEWORK_NAME}.swiftmodule/" "${OUTPUT}/Modules/${FRAMEWORK_NAME}.swiftmodule"
# Delete build.
rm -rf "${BUILD_DIR}"
问题是我不知道如何根据 Alamofire 构建我的框架。我是否必须为我的框架创建一个 podspec 并通过 CocoaPods 使用它?这是我第一次创建一个基于 pod 的通用框架,所以我不知道我是否在做一些不可能的事情。
非常感谢。
【问题讨论】:
-
你能发布你在聚合目标中运行的脚本吗?
-
@mag_zbc 完成 :)
-
最近我也遇到了在使用 Pod 的工作区之外构建框架的问题。您可以尝试将
xcodebuild -target "${FRAMEWORK_NAME}"更改为xcodebuild -workspace "YourWorkspace.xcworkspace" -scheme YourScheme -
谢谢@mag_zbc,但我试过了,它不起作用:(
标签: ios swift cocoapods ios-universal-framework