从命令行terminal创build带有位代码启用和位代码禁用的设备和通用configuration的iOS框架

#!/bin/sh UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal # make sure the output directory exists mkdir -p "${UNIVERSAL_OUTPUTFOLDER}" # Step 1. Build Device and Simulator versions xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO \ -configuration ${CONFIGURATION} -sdk iphoneos \ BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build xcodebuild -target "${PROJECT_NAME}" -configuration ${CONFIGURATION} \ -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO BUILD_DIR="${BUILD_DIR}" \ BUILD_ROOT="${BUILD_ROOT}" clean build # Step 2. Copy the framework structure (from iphoneos build) to the universal folder cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/" # Step 4. Create universal binary file using lipo and place the combined executable in the copied framework directory lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework/${PROJECT_NAME}" \ "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" \ "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}" # Step 5. Convenience step to copy the framework to the project's directory cp -R "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}.framework" "${PROJECT_DIR}" # Step 6. Convenience step to open the project's directory in Finder open "${PROJECT_DIR}" 

我有上面的shell脚本来创buildXcode构build选项的设备和通用框架。

是可以创build/从命令terminal上面的shell脚本与下面的configuration生成iOS框架?

  • 1)创build设备位码禁用的框架
  • 2)创build设备位码启用框架
  • 3)为通用位代码禁用创build框架
  • 4)为通用位码启用创build框架

请让我知道从命令terminal创build/生成iOS框架的步骤。 必须欣赏最好的解释

只需将参数添加到您的xcodebuild

ENABLE_BITCODE=NO禁用位代码

ENABLE_BITCODE=YES用于启用位代码

例如

 xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build ENABLE_BITCODE=NO 

在发布的shell脚本中,将第# Step 1. Build Device and Simulator versions的代码replace为适当的以下代码。

1)创build设备位码禁用的框架:

 xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO \ -configuration ${CONFIGURATION} -sdk iphoneos \ BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build ENABLE_BITCODE=NO xcodebuild -target "${PROJECT_NAME}" -configuration ${CONFIGURATION} \ -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO BUILD_DIR="${BUILD_DIR}" \ BUILD_ROOT="${BUILD_ROOT}" clean build ENABLE_BITCODE=YES 

2)创build设备位码启用框架

 xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO \ -configuration ${CONFIGURATION} -sdk iphoneos \ BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build ENABLE_BITCODE=YES xcodebuild -target "${PROJECT_NAME}" -configuration ${CONFIGURATION} \ -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO BUILD_DIR="${BUILD_DIR}" \ BUILD_ROOT="${BUILD_ROOT}" clean build ENABLE_BITCODE=YES 

3)为通用位代码禁用创build框架

 xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO \ -configuration ${CONFIGURATION} -sdk iphoneos \ BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build ENABLE_BITCODE=NO xcodebuild -target "${PROJECT_NAME}" -configuration ${CONFIGURATION} \ -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO BUILD_DIR="${BUILD_DIR}" \ BUILD_ROOT="${BUILD_ROOT}" clean build ENABLE_BITCODE=NO 

4)为通用位码启用创build框架

  xcodebuild -target "${PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO \ -configuration ${CONFIGURATION} -sdk iphoneos \ BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}" clean build ENABLE_BITCODE=YES xcodebuild -target "${PROJECT_NAME}" -configuration ${CONFIGURATION} \ -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO BUILD_DIR="${BUILD_DIR}" \ BUILD_ROOT="${BUILD_ROOT}" clean build ENABLE_BITCODE=YES 

编辑:
要构build框架,您可以执行以下任一操作:
1.replace每个configuration的代码,转到terminal,通过导航到包含shell脚本的文件夹并运行./<nameOfTheShellScriptFile>.sh运行shell脚本。 但请确保您有可用的构build设置。 这将在目录${BUILD_DIR}/${CONFIGURATION}-universal创build适当configuration的框架。
2.在Xcode中添加一个运行脚本。 在Xcode中打开你的项目,点击scheme下拉菜单(停止button旁边),然后select你的框架scheme。 再次打开下拉菜单并点击“Edit Scheme …”。 你在左边看到6个动作。 您可以select哪个操作更有意义添加脚本(是否要在每个Run操作中创build此通用框架,还是仅在存档时创build此通用框架?)。 下拉该动作,然后点击“后动作”。 点击+button添加一个新的动作,然后点击“新build运行脚本动作”。 将“提供构build设置”设置为您的框架目标以获取适当的构build设置。 将脚本粘贴到文本区域,然后单击closures。 现在,在每次执行脚本后,脚本都会运行,并为设备和仿真器体系结构再次构build框架,并将通用框架放在项目目录中。 这需要一些时间来完成,特别是如果你的项目很大,所以请耐心等待,直到查找器打开,显示包含框架的项目目录。 现在,您可以在每次需要不同的configuration(位代码启用或禁用)时更改脚本中的代码,或者为不同的configuration添加不同的scheme,并使用适当的脚本对每个scheme执行整个步骤。