0
#!/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 脚本和下面的配置从命令终端创建/生成 iOS 框架???

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

请让我知道从命令终端创建/生成 iOS 框架的步骤。必须感谢最好的解释

4

2 回答 2

3

只需将参数添加到您的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
于 2017-10-18T11:58:01.847 回答
1

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

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

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

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) 创建通用位码禁用框架

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) 为通用位码启用创建框架

 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 个操作。您可以选择将脚本添加到哪个操作更有意义(您是想在每个 Run 操作上创建这个通用框架还是仅在存档时创建这个通用框架?)。下拉该操作并单击后操作。单击 + 按钮添加新操作,然后单击“新建运行脚本操作”。将“提供构建设置来自”设置为您的框架目标以获取适当的构建设置。将脚本粘贴到文本区域,然后单击关闭。现在,每次执行操作后,您都将脚本放在下面,该脚本运行并再次为设备和模拟器架构构建框架,并将通用框架放在您的项目目录中。这需要一些时间才能完成,特别是如果您的项目很大,因此请耐心等待,直到查找器打开以显示包含框架的项目目录。现在,您可以在每次需要不同的配置(启用或禁用位码)时更改脚本中的代码,或者为不同的配置添加不同的方案,并使用适当的脚本为每个方案执行整个步骤。

于 2017-10-30T22:51:54.183 回答