SDK
,并且加入了资源图片,公开了管理类。如果有去实践的朋友,你应该会发现Build
这个SDK
是一件相当麻烦的事情。不仅仅要手动选择bundle、framework
进行真机和模拟器的打包。更加重要的是,如果这个包提供给别人用,你要提供两份?一份真机一份模拟器?这也太费劲了吧!
那么有没有合二为一的办法呢?
这个办法很多人都能找到,我随便翻个博客。
你是说每次都让我这样去命令行合并?我觉得还是费劲!
好的吧~有个省事的办法,做个脚本吧!
拿出你创建好的SDK
的工程。再添加一个Target
image.png
选择这个
image.png
这样添加一个脚本框
image.png
脚本中填写代码
image.png
# define output folder environment variable
CONFIGURATION=Release
UNIVERSAL_OUTPUTFOLDER=${SRCROOT}/${CONFIGURATION}-universal/${PROJECT_NAME}.framework
cd "${SRCROOT}/.."
#build support native API
# Step 1. Build Device and Simulator versions
xcodebuild -target MYResource ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"
xcodebuild build -workspace ${PROJECT_NAME}.xcworkspace -scheme ${PROJECT_NAME} ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"
xcodebuild build -workspace ${PROJECT_NAME}.xcworkspace -scheme ${PROJECT_NAME} -configuration ${CONFIGURATION} -sdk iphonesimulator VALID_ARCHS="i386 x86_64" BUILD_DIR="${BUILD_DIR}" BUILD_ROOT="${BUILD_ROOT}"
# make sure the output directory exists
rm -rf "${SRCROOT}/${CONFIGURATION}-universal"
mkdir -p "${SRCROOT}/${CONFIGURATION}-universal"
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/" "${UNIVERSAL_OUTPUTFOLDER}/"
cp -R "${BUILD_DIR}/${CONFIGURATION}-iphoneos/MYResource.bundle" "${SRCROOT}/${CONFIGURATION}-universal/"
rm -rf "${SRCROOT}/${CONFIGURATION}-universal/MYResource.bundle/MYResource"
rm -rf "${SRCROOT}/${CONFIGURATION}-universal/MYResource.bundle/Info.plist"
# Step 2. Create universal binary file using lipo
lipo -create "${BUILD_DIR}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework/${PROJECT_NAME}" "${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework/${PROJECT_NAME}" -output "${UNIVERSAL_OUTPUTFOLDER}/${PROJECT_NAME}"
open ${UNIVERSAL_OUTPUTFOLDER}
# Last touch. copy the header files. Just for convenience
MYResource.bundle
这个名称。换成你的资源包的名字。如果你使用的是Xcode10
以后版本。需要做以下设置。
image.png
更改这个两个选项
image.png
选择脚本,build
一次
image.png
有可能build
失败了
image.png
导致这种情况的原因就是我们没有build
一个release
的SDK
和Resource
,如果你之前已经build
了这release
版本,自然不会报错。
Scheme
image.png
image.png
修改完,选择选择这个Target
编译一次
image.png
一个修改完成。第二个重复上面的操作,改过一定要编译一次!而且必须是成功的。
全部完成,如下图选择脚本,编译。
image.png
image.png
image.png
干了这么多事,还不是麻烦?
虽然我们现在很费事,但是以后我们修改了内容直接编译这个脚本就可以了。有错的话安装上面截图解决。是否一劳永逸了?
怎么知道你真的合包了?
我们来查下这个Framework
的信息
image.png
别慌~如果你细心,你会发现,我们一直选择的这个Generic iOS Device
编译的,从来没有使用模拟器编译过。
image.png
那么来一次吧!两个Target
选个模拟器Build
一次。
image.png
image.png
我保证,这次肯定稳了!不信你看~
image.png