首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Xcode 8.3的通用框架?

使用Xcode 8.3的通用框架?
EN

Stack Overflow用户
提问于 2017-08-22 12:30:22
回答 1查看 1.2K关注 0票数 0

我正在努力建立一个通用的快速框架。当我完成以下几个教程之后的框架开发时,比如

https://medium.com/swiftindia/build-a-custom-universal-framework-on-ios-swift-549c084de7c8

Creating a universal framework using Xcode 8?

也可以使用聚合目标,但不能在模拟器中运行。

注意:i使用Swift 3开发,Xcode版本8.3

我也尝试过使用教程脚本,但失败了。

我的框架Xcode扩展也是xcodeproj

我的问题是如何开发通用的快速框架,将发布到客户端,在那里他可以通过模拟器进行测试,以及使用真正的设备?

提前谢谢。

编辑:我遵循this answer指令并成功地构建了快速框架。

https://stackoverflow.com/a/26691080/614154

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-29 12:31:28

您还可以使用以下脚本。支持Swift和模拟器。

  1. 只需将项目设置下的内容->生成阶段添加为新运行脚本阶段
  2. 建设项目
  3. 文件夹将打开,显示您的压缩框架。

https://gist.github.com/PaulEhrhardt/6d2be145c5d1b51c216914e7f032013e

代码语言:javascript
复制
#!/bin/sh

# iOS universal library build script supporting swift modules inclusive simulator slices

# prevention from running xcodebuild in a recusive way
if [ "true" == ${ALREADYINVOKED:-false} ]; then
    echo "RECURSION: Detected, stopping"
else
    export ALREADYINVOKED="true"

# output directory for universal framework
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}/iOS"

# build both device and simulator versions for iOS
xcodebuild -project "${PROJECT_NAME}.xcodeproj" -scheme "${PROJECT_NAME}"  -sdk iphonesimulator -destination 'platform=iOS Simulator,name=iPhone 8' ONLY_ACTIVE_ARCH=NO clean build
xcodebuild -project "${PROJECT_NAME}.xcodeproj" -scheme "${PROJECT_NAME}" -sdk iphoneos ONLY_ACTIVE_ARCH=NO clean build

# copy the framework structure from iphoneos build to the universal folder
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework" "${UNIVERSAL_OUTPUTFOLDER}/iOS"

# copy existing Swift modules from iphonesimulator build to the universal framework directory
SIMULATOR_SWIFT_MODULES_DIR="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule/"
if [ -d "${SIMULATOR_SWIFT_MODULES_DIR}" ]; then
    cp -R "${SIMULATOR_SWIFT_MODULES_DIR}" "${UNIVERSAL_OUTPUTFOLDER}/iOS/${PROJECT_NAME}.framework/Modules/${PROJECT_NAME}.swiftmodule"
fi

# create universal binary file using lipo and place the combined executable in the universal framework directory
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/iOS/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}"

# intermediate step for copying the framework to the project's directory
mkdir -p "${TMPDIR}/${PROJECT_NAME}/Frameworks/iOS"
cp -R "${UNIVERSAL_OUTPUTFOLDER}/iOS/${PROJECT_NAME}.framework" "${TMPDIR}/${PROJECT_NAME}/Frameworks/iOS"

# create a zip file and move it to the project's directory
cd "${TMPDIR}/${PROJECT_NAME}/Frameworks/iOS"
zip -r "${PROJECT_NAME}.framework.zip" "${PROJECT_NAME}.framework"
mkdir -p "${PROJECT_DIR}/universal-framework"
mv "${PROJECT_NAME}.framework.zip" "${PROJECT_DIR}/universal-framework"

# optional: show the project's directory in Finder
open "${PROJECT_DIR}/universal-framework"
fi
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45817711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档