iOS自动化打真机+虚拟机包脚本

4 篇文章 0 订阅
2 篇文章 0 订阅

先说手动打包:

        lipo -create 真机路径 虚拟机路径 -output 真机或虚拟机路径

真机路径和虚拟机路径指的是真机生成的framework中的这个黑色图标的东西。create的输出结果会覆盖掉 output的这个黑丝图标的文件。-output输出的framework就是合并之后的包。

再说自动化脚本

1.新建一个.sh文件,文件名叫啥都行,此处叫xcodebuild,新建一个空白文件,改后缀为.sh就行了。没啥快捷键。文件存放路径一般和即将打包的项目的.xcodeproj同级 

2.在需要打包的xcode项目的build Phases中 new run script phase

3.在新建的run script中添加脚本运行。这里写了之后,每次build都会运行,很浪费时间,不打包的时候这里可以注释掉(前面加#) 

4,真机build一次,虚拟机build一次,就成功了

 

第一个就是真机的包,第二个是真机假虚拟机的包,如果有把pod打成zip的需求,可以添加如下命令,

zip -r 压缩后的zip名字.zip Pod

另外:.虚拟机打包不应包含arm64架构,因此在项目中应该手动去掉。我的项目中还需要去掉i386架构,你的项目如果如果不需要可以去掉。如果有如下报错信息,说明xxx.a不支持某个架构,这里是不支持i386,就需要去掉对应的框架:

xxx.xcodeproj The linked library 'xxx.a' is missing one or more architectures required by this target: i386.

.sh的脚本代码如下:

#!/bin/sh

# 取得build的target名(get project name)
FRAMEWORK_NAME="项目名"
#或者用下面的这个自动获取项目名
#FRAMEWORK_NAME=${PROJECT_NAME}

UNIVERSAL_OUTPUT_FOLDER="${SRCROOT}/Pod"

#UNIVERSAL_PRODUCT_PATH="${UNIVERSAL_OUTPUT_FOLDER}/framework名.framework"

#创建输出目录,并删除之前的framework文件
if [ ! -d "${UNIVERSAL_OUTPUT_FOLDER}" ];then
    mkdir -p "${UNIVERSAL_OUTPUT_FOLDER}"
fi
if [ ! -d "${UNIVERSAL_OUTPUT_FOLDER}/Library" ];then
    mkdir -p "${UNIVERSAL_OUTPUT_FOLDER}/Library"
fi

if [ ! -d "${UNIVERSAL_OUTPUT_FOLDER}/Library-Universal" ];then
    mkdir -p "${UNIVERSAL_OUTPUT_FOLDER}/Library-Universal"
fi

#删除旧的framework
if [ -d "${UNIVERSAL_OUTPUT_FOLDER}/Library/framework名.framework" ];then
    rm -rf "${UNIVERSAL_OUTPUT_FOLDER}/Library/framework名.framework"
fi

if [ -d "${UNIVERSAL_OUTPUT_FOLDER}/Library-Universal/framework名.framework" ];then
    rm -rf "${UNIVERSAL_OUTPUT_FOLDER}/Library-Universal/framework名.framework"
fi
#xcodebuild clean
#rm -rf ${BUILD_DIR}
# 设置真机和模拟器生成的静态库路径 (set devcie framework and simulator framework path)  ${TARGET_NAME}
DEVICE_DIR="${BUILD_DIR}/${CONFIGURATION}-iphoneos/framework名.framework"
SIMULATOR_DIR="${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/framework名.framework"


#拷贝framework到Library和Library-Universal目录
cp -rf "${DEVICE_DIR}" "${UNIVERSAL_OUTPUT_FOLDER}/Library"
cp -rf "${SIMULATOR_DIR}" "${UNIVERSAL_OUTPUT_FOLDER}/Library-Universal"


#合并framework,输出最终的framework到build目录
lipo -create -output "${UNIVERSAL_OUTPUT_FOLDER}/Library-Universal/framework名.framework/framework名" "${DEVICE_DIR}/framework名" "${SIMULATOR_DIR}/framework名"

#判断build文件夹是否存在,存在则删除
if [ -d "${SRCROOT}/build" ]
then
rm -rf "${SRCROOT}/build"
fi


#打开合并后的文件夹
open "${UNIVERSAL_OUTPUT_FOLDER}"


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值