Shell应用场景1 ~ iOS脚本自动化打包详细教程

Shell应用场景1 ~ iOS脚本自动化打包详细教程

首页模拟经营打包模拟器更新时间:2024-04-13
一、背景

背景1、手头项目中某个组件或者有一堆代码,需要抽出来封装成framework。
背景2、创建实现一个sdk项目,生成动态库、静态库给第三方使用。

二、脚本自动化原因

手动打包的步骤,简单来说分为三步:
1、编辑Scheme的环境为release环境
2、切换到模拟器状态下执行 command B 编译
3、切换到真机状态下执行 command B 编译

而利用脚本来说,我们只需要运行一下脚本即可。配置好脚本之后,可以运行脚本一键生成真机版framework和模拟器版framework,省去了手动打包浪费的所有时间。

二、实现目标

2.1、sdk源码编译通过,可以手动打包生成真机版framework和模拟器版framework。
2.2、通过脚本一键生成真机版framework和模拟器版framework。

三、解决步骤3.1、创建项目

1、打开终端,输入命令,指定到桌面目录下

cd /Users/lmy/Desktop

2、创建工程项目,执行命令

Pod lib create XESTestSDK

3、配置相关选择。

选择平台

What platform do you want to use?? [ iOS / macOS ]
iOS

选择语言

What language do you want to use?? [ Swift / ObjC ]
ObjC

是否自动生成demo,选择Yes,方便以后测试

Would you like to include a demo application with your library? [ Yes / No ]
Yes

是否集成测试框架

Which testing frameworks will you use? [ Specta / Kiwi / None ]
None

UI 测试

Would you like to do view based testing? [ Yes / No ]
No

指定类前缀

What is your class prefix?
XESApp

4、执行完之后,自动打开项目。

5、项目目录结构如下所示

可以看到项目目录下,只有Example工程,并没有sdk的工程,下面为了保证sdk工程,编译通过,我们手动创建sdk的Xcodeproj。

6、打开Xcode,点击File->New->project,选择Framework。

7、取名XESTestSDK,临时保存到/Users/lmy/Desktop/temp目录下。

8、将/Users/lmy/Desktop/temp/XESTestSDK/XESTestSDK.xcodeproj 拷贝到/Users/lmy/Desktop/XESTestSDK/XESTestSDK.xcodeproj,

将/Users/lmy/Desktop/temp/XESTestSDK/XESTestSDK内文件,合并到
/Users/lmy/Desktop/XESTestSDK/XESTestSDK

删除/Users/lmy/Desktop/temp。

9、如果我们手里有很多源代码可以提前将所有源码拷贝到 /Users/lmy/Desktop/XESTestSDK/XESTestSDK/Classes目录下。

10、打开/Users/lmy/Desktop/XESTestSDK/XESTestSDK.xcodeproj工程,将/Users/lmy/Desktop/XESTestSDK/XESTestSDK下的Assets、Classes所有文件添加到工程中。

11、如果我们添加的文件里面有swift语言开发的文件.swift文件,那我们要记得修改swift的语言版本。

12、我们还可以设置项目生成静态库或者动态库。

3.2、配置Podfile文件和pod引用

1、在 /Users/lmy/Desktop/XESTestSDK 目录下,给sdk项目添加一个Podfile文件,删除_Pods.xcodeproj文件。

2、Podfile文件内容如下所示。

3、执行pod install 或 pod update命令之后,运行XESTestSDK.xcworkspace工程运行并编译通过。

4、修改项目最低支持版本。

3.3、创建打包脚本

1、设置必要参数

# framework打包脚本必要参数: #1、代码工程目录路径,当前路径 Script_Path=`pwd` #2、project目录,当前目录 Project_Path=`pwd` #3、WorkSpace/Project 的名称 Project_Name="XESTestSDK" #4、Project or WorkSpace XcodebuildType='WorkSpace' #5、framework的target的名称 Project_TargetName=$Project_Name #6、输出framework的目录路径 Output_framework=`pwd`/"XESTestSDKFramework" #7、build过程中临时文件夹路径 BUILD_DIR_TEMP=`pwd`/"buildFrameworkTemp" #echo "\nScript_Path目录路径:"$Script_Path"\n" #echo "\n代码工程目录路径:"$Project_Path"\n" #echo "输出framework的目录:"$Output_framework"\n" #echo "build过程中临时文件夹:"$BUILD_DIR_TEMP"\n"

2、创建Workspace类型编译方法archiveWorkspace()

archiveWorkspace(){ #build之前clean一下 xcodebuild clean -workspace ${Project_Name}.xcworkspace -scheme ${Project_TargetName} #模拟器build xcodebuild build -workspace ${Project_Name}.xcworkspace -scheme ${Project_TargetName} -configuration Release -sdk iphonesimulator OBJROOT=${BUILD_DIR_TEMP} SYMROOT=${BUILD_DIR_TEMP} #真机build xcodebuild build -workspace ${Project_Name}.xcworkspace -scheme ${Project_TargetName} -configuration Release -sdk iphoneos OBJROOT=${BUILD_DIR_TEMP} SYMROOT=${BUILD_DIR_TEMP} }

3、创建Project类型编译方法archiveProject()

archiveProject(){ #build之前clean一下 xcodebuild clean -project ${Project_Name}.xcodeproj -scheme ${Project_TargetName} #模拟器build xcodebuild build -project ${Project_Name}.xcodeproj -scheme ${Project_TargetName} -configuration Release -sdk iphonesimulator OBJROOT=${BUILD_DIR_TEMP} SYMROOT=${BUILD_DIR_TEMP} #真机build xcodebuild build -project ${Project_Name}.xcodeproj -scheme ${Project_TargetName} -configuration Release -sdk iphoneos OBJROOT=${BUILD_DIR_TEMP} SYMROOT=${BUILD_DIR_TEMP} }

4、创建打包方法buildStart()

buildStart(){ #判断Output_framework文件夹是否存在,存在则删除 if [[ -d ${Output_framework} ]]; then rm -rf ${Output_framework} fi #判断BUILD_DIR_TEMP文件夹是否存在,存在则删除 if [[ -d ${BUILD_DIR_TEMP} ]]; then rm -rf ${BUILD_DIR_TEMP} fi #创建Output_framework文件夹 mkdir -p ${Output_framework} #创建BUILD_DIR_TEMP文件夹 mkdir -p ${BUILD_DIR_TEMP} #cd到Project_Path目录下 cd $Project_Path #根据XcodebuildType判断调用archiveWorkspace方法还是archiveProject方法 if [ "$XcodebuildType" == "WorkSpace" ];then archiveWorkspace else archiveProject fi echo ">>>>>>>>>>>>>>>> 打包完成!!!" }

5、脚本默认执行代码

#判断项目是否存在 if [[ -d ${Project_Path} ]]; then #定位到源码目录下 cd $Project_Path #调用buildStart方法 buildStart else echo ">>>>>>>>>>> 代码工程目录路径 不存在!!!!!!!!!" fi 3.4、运行脚本

1、打开命令行工具,cd到脚本目录下,运行命令。

sh Framework_Archive.sh

2、运行完脚本之后,查看目录下生成了buildFrameworkTemp目录,buildFrameworkTemp目录下有Release-iphoneos、Release-iphonesimulator 两个目录内分别有真机的XESTestSDK.framework,和模拟器的XESTestSDK.framework。

您可能感兴趣的文章:

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved