ios - 使用 "Aggregate target"和 "Cocoa Touch Framework"的框架。有什么区别?

标签 ios objective-c xcode cocoa xcode7

我可以使用“聚合目标”在 XCode 中创建框架。也可以在 XCode 7 中创建“Cocoa Touch Framework”。

它们有什么区别? 在新项目中哪种方式更可取?

最佳答案

我更喜欢制作 Cocoatouch 框架。 最后,运行脚本使其成为通用框架。 您不需要将其加入聚合。

仅供引用,这是我现在使用的脚本。 我从网上找到了这个脚本。 (不记得出处了)

set -e
set +u
# Avoid recursively calling this script.
if [[ $SF_MASTER_SCRIPT_RUNNING ]]
then
exit 0
fi
set -u
export SF_MASTER_SCRIPT_RUNNING=1


# Constants
SF_TARGET_NAME=${PROJECT_NAME}
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal

# Take build target
if [[ "$SDK_NAME" =~ ([A-Za-z]+) ]]
then
SF_SDK_PLATFORM=${BASH_REMATCH[1]}
else
echo "Could not find platform name from SDK_NAME: $SDK_NAME"
exit 1
fi

if [[ "$SF_SDK_PLATFORM" = "iphoneos" ]]
then
echo "Please choose iPhone simulator as the build target."
exit 0
fi

IPHONE_DEVICE_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphoneos

# Build the other (non-simulator) platform
xcodebuild -project "${PROJECT_FILE_PATH}" -target "${TARGET_NAME}" -configuration "${CONFIGURATION}" -sdk iphoneos BUILD_DIR="${BUILD_DIR}" OBJROOT="${OBJROOT}" BUILD_ROOT="${BUILD_ROOT}" CONFIGURATION_BUILD_DIR="${IPHONE_DEVICE_BUILD_DIR}/arm64" SYMROOT="${SYMROOT}" ARCHS='arm64' VALID_ARCHS='arm64' $ACTION

xcodebuild -project "${PROJECT_FILE_PATH}" -target "${TARGET_NAME}" -configuration "${CONFIGURATION}" -sdk iphoneos BUILD_DIR="${BUILD_DIR}" OBJROOT="${OBJROOT}" BUILD_ROOT="${BUILD_ROOT}"  CONFIGURATION_BUILD_DIR="${IPHONE_DEVICE_BUILD_DIR}/armv7" SYMROOT="${SYMROOT}" ARCHS='armv7 armv7s' VALID_ARCHS='armv7 armv7s' $ACTION

# Copy the framework structure to the universal folder (clean it first)
rm -rf "${UNIVERSAL_OUTPUTFOLDER}"
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework"

# Smash them together to combine all architectures
lipo -create  "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/arm64/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/armv7/${PROJECT_NAME}.framework/${PROJECT_NAME}" -output "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}"

转到项目设置 -> 构建阶段,然后单击加号按钮添加新的运行脚本。

关于ios - 使用 "Aggregate target"和 "Cocoa Touch Framework"的框架。有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33084146/

相关文章:

ios - PageViewController 和屏幕/数据刷新

ios - Swift 3 - 如何使用 Alamofire 和 SwiftyJSON 获取 JSON 对象

Objective-C:使用 isa 属性来确定变量是否已被释放

ios - iOS 8 设备上没有 Xcode 的静默通知问题

ios - swift 4 "This class is not key value coding compliant"

ios - Swift 中的约束没有做我想做的事

ios - 将日期转换为具有不同日期格式 ios 的字符串?

ios - 为许多应用程序使用 Storyboard

使用 AdMob 横幅时 iOS 应用程序不断崩溃

ios - 共享 session 的应用程序错误