Library静态库Shell脚本

#!/bin/bash

#要build的target名
target_Name="IFlyMSC" #编译模式 Release、Debug
build_model=Release #获取工程当前所在路径
project_path=$(pwd) #编译文件路径
buildPath=${project_path}/build #导出sdk地址
exportSdkPath=~/Desktop/${target_Name}-SDK/${build_model} if [ ! -d $exportSdkPath ]; then
mkdir -p $exportSdkPath;
fi #真机sdk路径
iphoneos_path=${buildPath}/${build_model}-iphoneos/lib${target_Name}.a
#模拟器sdk路径
simulator_path=${buildPath}/${build_model}-iphonesimulator/lib${target_Name}.a
#合并后sdk路径
merge_path=${exportSdkPath}/lib${target_Name}.a #build之前clean一下
xcodebuild -target ${target_Name} clean #模拟器build
xcodebuild -target ${target_Name} -configuration ${build_model} -sdk iphonesimulator ARCHS="i386 x86_64" VALID_ARCHS="i386 x86_64" #真机build
xcodebuild -target ${target_Name} -configuration ${build_model} -sdk iphoneos "ARCHS=armv7 arm64" "VALID_ARCHS=armv7 armv7s arm64" #复制头文件到目标文件夹
cp -R ${buildPath}/${build_model}-iphoneos/include/${target_Name} ${exportSdkPath} #合并模拟器和真机.a包
lipo -create ${iphoneos_path} ${simulator_path} -output ${merge_path} #压缩合并后的文件 #压缩后的文件名
package_date=`date '+%Y-%m-%d日%X'`
sdk_zip_name=lib${target_Name}_${build_model}_${package_date}.zip
#跳转到sdk的输出路径
cd ${exportSdkPath}
#压缩sdk输出路径下的所有文件
zip -r ~/Desktop/${target_Name}-SDK/${sdk_zip_name} ./* #打开合并后的sdk所在路径
open ${exportSdkPath} #删除build文件
if [ -d ${buildPath} ]; then
rm -rf ${buildPath}
fi

Framework静态库Shell脚本编译

#!/bin/bash

#要build的target名
target_Name="HTKit" #编译模式 Release、Debug
build_model=Release #获取工程当前所在路径
project_path=$(pwd) #编译文件路径
buildPath=${project_path}/build #导出sdk地址
exportSdkPath=~/Desktop/${target_Name}-SDK/${build_model} if [ ! -d $exportSdkPath ]; then
mkdir -p $exportSdkPath;
fi #真机sdk路径
iphoneos_path=${buildPath}/${build_model}-iphoneos/${target_Name}.framework/${target_Name}
#模拟器sdk路径
simulator_path=${buildPath}/${build_model}-iphonesimulator/${target_Name}.framework/${target_Name}
#合并后sdk路径
merge_path=${exportSdkPath}/${target_Name}.framework/${target_Name} #build之前clean一下
xcodebuild -target ${target_Name} clean #模拟器build
xcodebuild -target ${target_Name} -configuration ${build_model} -sdk iphonesimulator ARCHS="i386 x86_64" VALID_ARCHS="i386 x86_64" #真机build
xcodebuild -target ${target_Name} -configuration ${build_model} -sdk iphoneos "ARCHS=armv7 arm64" "VALID_ARCHS=armv7 armv7s arm64" #复制真机.framework到目标文件夹
cp -R ${buildPath}/${build_model}-iphoneos/${target_Name}.framework ${exportSdkPath} #合并模拟器和真机.a包
lipo -create ${iphoneos_path} ${simulator_path} -output ${merge_path} #删除framework下的Info.plist
rm -r -f ${exportSdkPath}/${target_Name}.framework/Info.plist #删除framework下的Modules
rm -r -f ${exportSdkPath}/${target_Name}.framework/Modules #压缩合并后的文件 #压缩后的文件名
package_date=`date '+%Y-%m-%d日%X'`
sdk_zip_name=lib${target_Name}_${build_model}_${package_date}.zip
#跳转到sdk的输出路径
cd ${exportSdkPath}
#压缩sdk输出路径下的所有文件
zip -r ~/Desktop/${target_Name}-SDK/${sdk_zip_name} ./* #打开合并后的sdk所在路径
open ${exportSdkPath} #删除build文件
if [ -d ${buildPath} ]; then
rm -rf ${buildPath}
fi

iOS开发系列-Shell脚本编译SDK的更多相关文章

  1. iOS开发系列-Shell脚本生成IPA

    概述 在公司开发到了测试阶段需要频繁打包交付给测试,看似简单的工作,重复的流程总是感觉不是那么好,我们可以借助苹果提供的编译指令编译项目. 自动化脚本编译打包IPA 常见的iOS项目就是基于xcode ...

  2. iOS开发系列--Swift进阶

    概述 上一篇文章<iOS开发系列--Swift语言>中对Swift的语法特点以及它和C.ObjC等其他语言的用法区别进行了介绍.当然,这只是Swift的入门基础,但是仅仅了解这些对于使用S ...

  3. iOS开发系列

    因为最近面试了一些人,校招.初中级.高级.架构师,各种级别的,发现大家水平差异很大,有的高级的工程师很多问题都回答不上来,所以想梳理下iOS的知识点,写成一个系列,如果时间允许的话,会录制成视频放到网 ...

  4. iOS开发系列--Swift语言

    概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...

  5. iOS开发系列--App扩展开发

    概述 从iOS 8 开始Apple引入了扩展(Extension)用于增强系统应用服务和应用之间的交互.它的出现让自定义键盘.系统分享集成等这些依靠系统服务的开发变成了可能.WWDC 2016上众多更 ...

  6. iOS开发系列--C语言之基础知识

    概览 当前移动开发的趋势已经势不可挡,这个系列希望浅谈一下个人对IOS开发的一些见解,这个IOS系列计划从几个角度去说IOS开发: C语言 OC基础 IOS开发(iphone/ipad) Swift ...

  7. 李洪强iOS开发之-环信02_iOS SDK 介绍及导入

    李洪强iOS开发之-环信02_iOS SDK 介绍及导入 iOS SDK 介绍及导入 iOS SDK 介绍 环信 SDK 为用户开发 IM 相关的应用提供的一套完善的开发框架.包括以下几个部分: SD ...

  8. iOS开发系列文章(持续更新……)

    iOS开发系列的文章,内容循序渐进,包含C语言.ObjC.iOS开发以及日后要写的游戏开发和Swift编程几部分内容.文章会持续更新,希望大家多多关注,如果文章对你有帮助请点赞支持,多谢! 为了方便大 ...

  9. iOS开发系列--通知与消息机制

    概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地 ...

随机推荐

  1. strlen、strcpy和strcmp源码

    1.不使用库函数实现strcpy #include <assert.h> char *strcpy(char *dst, const char *src) { assert((dst != ...

  2. C#中的this关键字

    C# this关键字的四种用法 - 天碼行空 - 博客园 https://www.cnblogs.com/jh007/p/6120654.html C#中this关键字详解 - lin37985的专栏 ...

  3. python类的实例方法、静态方法和类方法区别及其应用场景

    https://blog.csdn.net/helloxiaozhe/article/details/79940321 普通实例方法,第一个参数需要是self,它表示一个具体的实例本身. 如果用了st ...

  4. XStream环境设置

    为Windows 2000/XP设置路径: 假设安装在c:Program Filesjavajdk目录: 在“我的电脑”右键单击并选择“属性”. 在“高级”选项卡下单击“环境变量”按钮. 现在,改变“ ...

  5. 【二】Jmeter接口自动化测试系列之函数使用及扩展

    上一篇文章我们了解了Jmeter的参数化的集中方法,虽然方法不是很多,但已经足够使用! 本篇文章,介绍一下Jmeter自带函数的使用和 函数扩展,来满足测试工作中的各种需求! Jmeter自带函数 点 ...

  6. 微信app支付返回-1的问题

    我也是被坑就当留个纪念 前两天查了各种关于微信app支付返回-1的都是ERR_COMM 问题然后各种 验证最后还是误解 第三天去验证了一下微信开放平台发现了问题 appid 不在同一个开放平台 项目之 ...

  7. Spring入门(三)

    测试Spring Bean的自动化装配 方式一:使用配置文件方式启动组件扫描 准备一个接口 package soundsystem; public interface CompactDisc { vo ...

  8. [学习笔记]最小割树(Gomory-Hu Tree)

    最小割树(\(\mathcal{Gomory-Hu Tree}\))简明指南 对于单源最短路径,我们有\(SPFA\)和\(Dijkstra\),对于多源最短路径,我们有\(Floyd\):对于两点间 ...

  9. Redis探索之路(一):Redis简介

    一:NOSQL NotOnlySQL 反SQL运动,非关系型数据库(区别于Mysql关系型书库). 随着Web2.0兴起,“高性能”,“高并发”成为主流. NoSQL以key-value形式存储数据, ...

  10. Jvm之class文件的加载、初始化

    编写的java文件在要真正运行时,会首先被编译成 “.class"结尾的二进制文件,然后被虚拟机加载.那么在虚拟机中一个class文件要成为java实例,需要经历好几个步骤: 一.class ...