如何使用现有的静态库构建可可触摸框架

时间:2014-11-26 20:03:15

标签: ios xcode frameworks

我试图在Xcode 6中使用现有的静态库构建一个可可触摸框架。我已经在"其他链接器标志中链接了所有必需的静态库"选项,框架构建。

然而,框架的大小太小,所以它看起来似乎没有正确构建。此外,我有很多缺少的符号应该包含在静态库中。

有没有人知道如何使用现有的静态库构建可可触摸框架?我需要将所有静态库中的所有符号都包含在我的框架中?

谢谢!

3 个答案:

答案 0 :(得分:0)

如果您只有一个库文件(.a),则必须执行以下操作:

  • 创建一个" Cocoa触控框架"在Xcode 6中。
  • 添加标题文件。
  • 添加库文件(.a)。
  • 添加聚合目标。
  • 选择"聚合目标"并在"构建阶段"添加"新运行脚本阶段"。
  • 将此内容发布到脚本:
######################
# Options
######################

FRAMEWORK_NAME="${PROJECT_NAME}"
SIMULATOR_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${FRAMEWORK_NAME}.framework"
DEVICE_LIBRARY_PATH="${BUILD_DIR}/${CONFIGURATION}-iphoneos/${FRAMEWORK_NAME}.framework"
UNIVERSAL_LIBRARY_DIR="${BUILD_DIR}/${CONFIGURATION}-iphoneuniversal"
FRAMEWORK="${UNIVERSAL_LIBRARY_DIR}/${FRAMEWORK_NAME}.framework"

######################
# Build Frameworks
######################

xcodebuild -scheme ${PROJECT_NAME} -sdk iphonesimulator -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphonesimulator 2>&1

xcodebuild -scheme ${PROJECT_NAME} -sdk iphoneos -configuration ${CONFIGURATION} clean build CONFIGURATION_BUILD_DIR=${BUILD_DIR}/${CONFIGURATION}-iphoneos 2>&1

######################
# Create directory for universal
######################

rm -rf "${UNIVERSAL_LIBRARY_DIR}"
mkdir "${UNIVERSAL_LIBRARY_DIR}"
mkdir "${FRAMEWORK}"

######################
# Copy files Framework
######################

cp -r "${DEVICE_LIBRARY_PATH}/." "${FRAMEWORK}"

######################
# Make an universal binary
######################

lipo "${PROJECT_DIR}/YOURFOLDER/YOURLIBRARY.a" -create -output "${FRAMEWORK}/${FRAMEWORK_NAME}" | echo
open "${UNIVERSAL_LIBRARY_DIR}/"
  • 生成框架会编译设备的新目标

答案 1 :(得分:0)

您应该按照上述步骤创建聚合目标。

然后选择聚合目标=>构建设置=> Mach-O类型,将动态库更改为静态库。此选项确定您的框架是否包含静态库的符号。

答案 2 :(得分:-1)

动态库仅适用于ios 8.如果需要在项目中使用动态库,请在“常规”选项卡中添加框架“链接框架”和“库”以及“嵌入式二进制文件”。它将起作用。

您可以更改静态库而不是动态库。构建设置 - > Mach-O - >静态库,以及将部署目标更改为iOS 7.0。更改后,在您的框架中完成这两项工作是在iOS 7.0及更高版本上工作。然后包含静态库以将二进制文件与库链接。