使用bitcode enable和bitcode禁用从命令行终端创建用于设备和通用配置的iOS Framework

时间:2017-10-18 11:11:33

标签: ios objective-c xcode bitcode ios-universal-framework

#!/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脚本来为Xcode构建选项创建设备和通用框架。

是否可以使用上面的shell脚本从Command终端创建/生成iOS Framework,并使用以下配置

  • 1)为设备bitcode禁用创建框架
  • 2)为设备bitcode启用创建框架
  • 3)为Universal bitcode disable
  • 创建框架
  • 4)为Universal bitcode enable
  • 创建框架
  

请告诉我从中创建/生成iOS Framework的步骤   命令终端。必须欣赏最好的解释

2 个答案:

答案 0 :(得分:3)

只需将参数添加到xcodebuild

即可

ENABLE_BITCODE=NO用于禁用bitcode

ENABLE_BITCODE=YES启用bitcode

例如

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

答案 1 :(得分:1)

在您发布的shell脚本中,将# Step 1. Build Device and Simulator versions下的代码替换为以下内容。

1)为设备bitcode禁用创建框架:

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)为设备bitcode启用创建框架

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)为Universal bitcode disable

创建框架
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)为Universal bitcode enable

创建框架
 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

编辑:
要构建框架,您可以执行以下任一操作:
1.替换每个配置的代码,转到终端并运行shell脚本,方法是导航到包含shell脚本并运行./<nameOfTheShellScriptFile>.sh的文件夹。但请确保您有可用的构建设置。这将在目录${BUILD_DIR}/${CONFIGURATION}-universal中创建具有适当配置的框架 2.在Xcode中添加运行脚本。在Xcode中打开您的项目,单击方案下拉列表(在“停止”按钮旁边)并选择您的框架方案。再次打开下拉菜单,然后单击“编辑方案...”。你会看到左边有6个动作。您可以选择将脚本添加到哪个操作更有意义(您希望在每个“运行”操作上创建此通用框架,还是仅在存档时创建?)。下拉该操作并单击Post-actions。单击+按钮添加新操作,然后单击“新建运行脚本操作”。将“提供构建设置”设置为框架目标以获取适当的构建设置。将脚本粘贴到文本区域中,然后单击“关闭”。现在,每次执行脚本操作后,脚本都会运行并再次为设备和模拟器体系结构构建框架,并将通用框架放在项目目录中。这需要一些时间来完成,特别是如果你的项目很大,所以要耐心等待,直到查找器打开,以显示包含框架的项目目录。现在,您可以在每次需要不同的配置(bitcode启用或禁用)时更改脚本中的代码,或者为不同的配置添加不同的方案,并使用适当的脚本为每个方案执行整个步骤。