通用自定义iOS框架使用Xcode 6.4

我创build了一个使用Xcode 6的自定义iOS框架。我尝试了很多使框架通用的脚本(用于模拟器和设备)。但是他们都没有为我工作。请build议我为iOS创build一个自定义通用框架Xcode 6。

通过terminal将两个二进制文件合并为一个通用二进制文件:

首先编译设备二进制文件,然后分别编译模拟器二进制文件。

find两个二进制文件。 如果你想检查哪个体系结构被编译到每个体系结构中,你可以在terminal中运行这个命令:

lipo -info /path/to/binary

示例输出:

胖文件中的体系结构:/ path / to / binary是: armv7 arm64

现在,您可以将两个二进制文件合并为一个:

lipo -create /path/to/simulator/binary /path/to/device/binary -output /path/to/output/binary

输出二进制文件将同时具有仿真器和设备架构。

根据你的问题,使自定义的通用框架,你需要按照这个步骤,或访问“ http://www.raywenderlich.com/65964/create-a-framework-for-ios ”作为框架提到raywenderlich。

1.)创build一个项目。

2.)通过selectCocoa Touch静态库,将新的目标添加到您的项目中。 (更多参考请访问: http : //www.raywenderlich.com/65964/create-a-framework-for-ios )

3.)现在你需要做的是将你的静态库设置为活动scheme。 确保您已经在Tragets库的Build Settings中添加了“arm64”。

4.)selectiOs设备并进行构build。 但为此,您需要在下面添加脚本,以使其适用于所有设备。

脚本:

 # define output folder environment variable UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal UNIVERSAL_OUTPUTFOLDERx64=${BUILD_DIR}/${CONFIGURATION}-universalx64 # Step 1. Build Device and Simulator versions xcodebuild -target DKHelperLib ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" xcodebuild -target DKHelperLib -configuration ${CONFIGURATION} -sdk iphonesimulator -arch i386 BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" xcodebuild -target DKHelperLib -configuration ${CONFIGURATION} -sdk iphonesimulator -arch x86_64 BUILD_DIR="${UNIVERSAL_OUTPUTFOLDERx64}" BUILD_ROOT="${BUILD_ROOT}" # make sure the output directory exists mkdir -p "${UNIVERSAL_OUTPUTFOLDER}" # Step 2. Create universal binary file using lipo lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/lib${PROJECT_NAME}.a" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/lib${PROJECT_NAME}.a" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/lib${PROJECT_NAME}.a" "${UNIVERSAL_OUTPUTFOLDERx64}/${CONFIGURATION}-iphonesimulator/lib${PROJECT_NAME}.a" # Last touch. copy the header files. Just for convenience cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/include" "${UNIVERSAL_OUTPUTFOLDER}/" 

build立和分配框架:

在框架项目中:

  1. 设置目标(和项目,只是为了安全)的构build设置“仅build立活动体系结构”为NO。 我们希望构build所有体系结构,以便二进制文件可以在所有支持的设备上使用,而不仅仅是我们正在为之构build的设备。 根据您的部署目标(以及由此产生的支持的设备),您可能需要添加架构ARMv7s
  2. 为模拟器构build和构build设备,这将在派生的数据文件夹中生成两个框架。

在docker:

  1. find项目的派生数据path。 find“Build-> Products”文件夹。 里面应该是'-iphoneos'和'-iphonesimulator'。 每个内部都是一个.framework文件夹。 复制其中的一个到一些不错的文件夹。 从这些.frawework文件夹中的每一个,将其中的二进制文件复制到一个文件夹。
  2. 在terminal中运行命令'lipo -create -output <outputName> <binaryFromiphoneos> <binaryFromiphonesimulator>'。 这将创build一个包含模拟器和设备的所有体系结构的胖二进制文件。 将复制的.framework目录中的一个replace为新生成的。

要在另一个应用程序中使用框架:

  1. 在Project Navigator中selectProject,select目标,然后select'General'标签。
  2. 将.framework文件夹拖动到“在此处添加embedded式二进制文件”的位置。
  3. 在目标的构build设置中,将.framework文件夹的path添加到“框架searchpath”。
  4. 使用#import <frameworkName / frameworkName.h>在源代码中导入文件