我正在开始开发 2 个应用程序扩展,我想按如下方式设置我的构建:
目前,我对每个项目都有不同的构建配置,以显示和隐藏应用程序的其他方面(在某些情况下还有编译器标志)。我使用 fastlane 进行构建。
据我所知,添加或删除应用程序扩展的唯一方法是:
有人能想到更好的解决方案来有条件地包含应用程序扩展吗?
这可以通过向您的主要目标添加运行脚本构建阶段来完成。
添加此脚本,并将配置名称替换为您自己的构建配置名称,并将扩展名替换为您想要为每个配置包含的扩展名:
function embedExtensions() {
for extension in $1
do
rsync -r --exclude .DS_Store --exclude CVS --exclude .svn --exclude .git --exclude .hg --exclude Headers --exclude PrivateHeaders --exclude Modules --exclude \*.tbd --copy-links "${CONFIGURATION_BUILD_DIR}/${extension}.appex" "${CONFIGURATION_BUILD_DIR}/${PLUGINS_FOLDER_PATH}"
done
}
debug_extensions=("PacketTunnelProvider WidgetExtension ShareExtension")
beta_extensions=("PacketTunnelProvider WidgetExtension")
if [ "${CONFIGURATION}" = "Debug" ]
then
embedExtensions $debug_extensions
elif [ "${CONFIGURATION}" = "Beta" ]
then
embedExtensions $beta_extensions
fi
我通过查看 Xcode 的嵌入应用程序扩展构建阶段的构建输出发现了这一点,该阶段使用 Xcode 内部工具
builtin-copy
。但是 rsync
实现了相同的结果并且具有大致相同的选项。