iOS开发系列-Shell脚本编译SDK
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的更多相关文章
- iOS开发系列-Shell脚本生成IPA
概述 在公司开发到了测试阶段需要频繁打包交付给测试,看似简单的工作,重复的流程总是感觉不是那么好,我们可以借助苹果提供的编译指令编译项目. 自动化脚本编译打包IPA 常见的iOS项目就是基于xcode ...
- iOS开发系列--Swift进阶
概述 上一篇文章<iOS开发系列--Swift语言>中对Swift的语法特点以及它和C.ObjC等其他语言的用法区别进行了介绍.当然,这只是Swift的入门基础,但是仅仅了解这些对于使用S ...
- iOS开发系列
因为最近面试了一些人,校招.初中级.高级.架构师,各种级别的,发现大家水平差异很大,有的高级的工程师很多问题都回答不上来,所以想梳理下iOS的知识点,写成一个系列,如果时间允许的话,会录制成视频放到网 ...
- iOS开发系列--Swift语言
概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...
- iOS开发系列--App扩展开发
概述 从iOS 8 开始Apple引入了扩展(Extension)用于增强系统应用服务和应用之间的交互.它的出现让自定义键盘.系统分享集成等这些依靠系统服务的开发变成了可能.WWDC 2016上众多更 ...
- iOS开发系列--C语言之基础知识
概览 当前移动开发的趋势已经势不可挡,这个系列希望浅谈一下个人对IOS开发的一些见解,这个IOS系列计划从几个角度去说IOS开发: C语言 OC基础 IOS开发(iphone/ipad) Swift ...
- 李洪强iOS开发之-环信02_iOS SDK 介绍及导入
李洪强iOS开发之-环信02_iOS SDK 介绍及导入 iOS SDK 介绍及导入 iOS SDK 介绍 环信 SDK 为用户开发 IM 相关的应用提供的一套完善的开发框架.包括以下几个部分: SD ...
- iOS开发系列文章(持续更新……)
iOS开发系列的文章,内容循序渐进,包含C语言.ObjC.iOS开发以及日后要写的游戏开发和Swift编程几部分内容.文章会持续更新,希望大家多多关注,如果文章对你有帮助请点赞支持,多谢! 为了方便大 ...
- iOS开发系列--通知与消息机制
概述 在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情.iOS中通知机制又叫消息机制,其包括两类:一类是本地 ...
随机推荐
- split("\\s+") 和 split(" +") 有什么区别?
原文地址:https://blog.csdn.net/it_taojingzhan/article/details/51968993 "hello world, this is Al&quo ...
- 12、testng.xml指定运行测试包、测试类、测试方法
目录如下: TestFixture.java 代码如下: package com.testng.cn; import org.testng.annotations.*; public class Te ...
- HDU 6651 Final Exam (思维)
2019 杭电多校 7 1006 题目链接:HDU 6651 比赛链接:2019 Multi-University Training Contest 7 Problem Description Fin ...
- Collection Lists
ArrayList LinkedList Vector 顺序添加 抽象数据类型(ADT)是一个实现包括储存数据元素的存储结构以及实现基本操作的算法. ArrayList (1)ArrayList是 ...
- java中trim()方法是用来干什么的?
trim()的作用是去掉字符串两端的多余的空格,注意,是两端的空格,且无论两端的空格有多少个都会去掉,当然 中间的那些空格不会被去掉,如: String s = " a s f g ...
- 31-Ubuntu-用户权限-02-ls输出信息介绍
ls -l 查看文件夹下文件或目录的详细信息 1 2 3 4 5 6 7 8 9 10 d/- rwx rwx r-x 2 summmer summmer 12288 2月 25 13:34 Ente ...
- pytest--fixture之参数化
场景:测试用例执行时,有的用例需要登陆才能执行,有些用例 不需要登陆.setup和teardown无法满足.fixture可以.默认 scope(范围)function • 步骤: 1. 导入pyte ...
- VS2013 蛋疼的“AJAX Control Toolkit”安装过程
1.AJAX Control Toolkit 下载问题 方法一. 在vs2013中 工具->NuGet程序包管理器->管理解决方案的NuGet程序包 搜索 ajax z找到 AjaxCon ...
- 自定义实现系统max方法
function MyMath(){ //添加了一个方法 this.getMax=function(){ //所有数字中的最大值 var max=arguments[0]; for(var i=0;i ...
- Django添加生产环境配置
在初始化阶段,Django会帮我们创建一个settings.py目录,所有Django的配置都在这个模块中,这样就会产生一些问题,比如同一份配置怎么来更好的区分开发环境和线上环境.当然可以在setti ...