#!/bin/bash
#
# 介绍:
# 这个脚本全部自动化编译各指令集静态库后合并。现在支持指令集有armv7 armv7s arm64 i386 x86_64

# 使用:
#  首先cd 到xcode工程目录 然后运行 "sh ./build.sh"  PS:xcode不能含有xcodebuild的Runscript切记!
#
# 验证:
#  cd 到静态库目录  然后 "lipo -info 静态库名称.a "
#
# TODO :
# 1.完成宏定义,解决多次修改工程名字的问题
# 2.增加SVN、GIT版本号
# 3.增加Buildnotes
# 4.完成规范化命名
#

#工程的名字
MY_PROJECT_NAME="ProjectName.xcodeproj"
#编译target的名字
MY_TARGET_NAME="ProjectName"
#LIB名字
MY_STATIC_LIB="lib${PROJECT_NAME}.a"
#编译路径
# 编译静态库名称路径
LIB_DIR = 'tmp/'
#合并静态库文件路径
LIB_FINAL_PATH= "${LIB_DIR}/FinalLib"

#如果目标文件不存在则创建
if [ ! -d "${LIB_DIR}" ]; then
  mkdir -p "${LIB_DIR}"
fi
if [ ! -d "${LIB_FINAL_NAME}" ]; then
  mkdir -p "${LIB_FINAL_NAME}"
fi

# armv7 armv7s

MY_ARMV7_BUILD_PATH='temp/armv7'
MY_CURRENT_BUILD_PATH="${MY_ARMV7_BUILD_PATH}"

xcodebuild -project "${MY_PROJECT_NAME}" -target "${MY_TARGET_NAME}" -configuration 'Release'  -sdk 'iphoneos7.0' CONFIGURATION_BUILD_DIR="${MY_CURRENT_BUILD_PATH}" ARCHS='armv7 armv7s'  VALID_ARCHS='armv7 armv7s' IPHONEOS_DEPLOYMENT_TARGET='5.0' clean build

MY_ARMV7S_BUILD_PATH='temp/armv7S'
MY_CURRENT_BUILD_PATH="${MY_ARMV7S_BUILD_PATH}"

xcodebuild -project "${MY_PROJECT_NAME}" -target "${MY_TARGET_NAME}" -configuration 'Release'  -sdk 'iphoneos7.0' CONFIGURATION_BUILD_DIR="${MY_CURRENT_BUILD_PATH}" ARCHS='armv7s'  VALID_ARCHS='armv7s' IPHONEOS_DEPLOYMENT_TARGET='5.0' clean build

# arm64  代码未修改所以报错

MY_ARM64_BUILD_PATH='temp/arm64'
MY_CURRENT_BUILD_PATH="${MY_ARM64_BUILD_PATH}"

xcodebuild -project "${MY_PROJECT_NAME}" -target "${MY_TARGET_NAME}" -configuration 'Release' -sdk 'iphoneos7.0' CONFIGURATION_BUILD_DIR="${MY_CURRENT_BUILD_PATH}" ARCHS='arm64' IPHONEOS_DEPLOYMENT_TARGET='7.0'  clean build
 
# i386
MY_I386_BUILD_PATH='temp/i386'
MY_CURRENT_BUILD_PATH="${MY_I386_BUILD_PATH}"

xcodebuild -project "${MY_PROJECT_NAME}" -target "${MY_TARGET_NAME}" -configuration 'Release' -sdk 'iphonesimulator7.0' CONFIGURATION_BUILD_DIR="${MY_CURRENT_BUILD_PATH}" ARCHS='i386' VALID_ARCHS='i386' IPHONEOS_DEPLOYMENT_TARGET='5.0' clean build

# x86_64 代码未兼容所以报错

MY_X86_64_BUILD_PATH='temp/x86_64'
MY_CURRENT_BUILD_PATH="${MY_X86_64_BUILD_PATH}"

xcodebuild -project "${MY_PROJECT_NAME}" -target "${MY_TARGET_NAME}" -configuration 'Release' -sdk 'iphonesimulator7.0' CONFIGURATION_BUILD_DIR="${MY_CURRENT_BUILD_PATH}" ARCHS='x86_64' VALID_ARCHS='x86_64' IPHONEOS_DEPLOYMENT_TARGET='7.0' clean build

# #####################
#
# # # 需要重新设置编译target的名字,
#
# #####################
# TARGET 名字
MY_TARGET_NAME="AudioService"
#LIB名字
MY_STATIC_LIB="lib${MY_TARGET_NAME}.a"

#最终静态库路径
MY_FINAL_BUILD_PATH='lib/'
#最终静态库名字
MY_FINAL_STATIC_LIB="AudioService.a"
if [ ! -d "${MY_FINAL_BUILD_PATH}" ]; then
  mkdir -p "${MY_FINAL_BUILD_PATH}"
fi

# 合并不同版本的编译库
lipo -create "${MY_ARMV7_BUILD_PATH}/${MY_STATIC_LIB}" "${MY_ARMV7S_BUILD_PATH}/${MY_STATIC_LIB}" "${MY_ARM64_BUILD_PATH}/${MY_STATIC_LIB}" "${MY_I386_BUILD_PATH}/${MY_STATIC_LIB}" "${MY_X86_64_BUILD_PATH}/${MY_STATIC_LIB}" -output "${MY_FINAL_BUILD_PATH}${MY_FINAL_STATIC_LIB}"

# lipo -create "${MY_ARM_BUILD_PATH}/${MY_STATIC_LIB}" "${MY_I386_BUILD_PATH}/${MY_STATIC_LIB}" -output "${MY_FINAL_BUILD_PATH}${MY_FINAL_STATIC_LIB}"
     
  
# rm -rf 'temp'
# rm -rf 'build'

open "${MY_FINAL_BUILD_PATH}"

Build Library By xcodebuild相关推荐

  1. 【iOS小白教程】如何打包:xcodebuild和xcrun介绍

    摘抄自2016-06-25-ios-xcodebuild xcodebuild 简介 xcodebuild 用于编译xcode中的projects和workspaces 文档 1 在终端中输入 $ m ...

  2. xcodebuild和xcrun实现自动打包iOS应用程序

    随着苹果手持设备用户的不断增加,ios应用也增长迅速,同时随着iphone被越狱越来越多的app 的渠道也不断增多,为各个渠道打包成了一件费时费力的工作,本文提供一种比较智能的打包方式来减少其带来的各 ...

  3. Angular library 学习笔记

    原文 Use cases for Angular libraries Angular 库有 2 个常见用例: 构建可重用的组件库以在应用程序之间共享. 构建共享服务层功能 - 例如. 用于处理外部数据 ...

  4. 给iOS工程增加Daily Build

    前言 Daily Build是一件非常有意义的事情,也是敏捷开发中关于"持续集成"的一个实践.Daily Build对于开发来说有如下好处: 保证了每次check in的代码可用, ...

  5. 一个静态库框架模板: iOS Universal Framework Mk 7

    项目地址: https://github.com/kstenerud/iOS-Universal-Framework 这是一个Xcode 4使用的项目模板,而不是一个新的开源框架. 这是项目主页,介绍 ...

  6. 第三方SDK编写文档 - iOS

    目录 一.创建一个workspace 二.创建SDK 三.创建Demo 四.Demo的关联以及SDK的开发调试 五.打包 一.创建一个workspace 1.在桌面上创建一个文件夹MyTest(名字自 ...

  7. iOS 轻量级包管理工具Carthage了解下

    Why Carthage? 我们已经熟知Cocoapods了,对于工程来说,帮我们自动创建Xcode WorkSpace和所有的依赖,对于依赖库来说,用来做本地local pod或者远程pod都非常好 ...

  8. iPhone自动 打包 脚本

    xcodebuild和xcrun实现自动打包iOS应用程序 2011-12-03 20:30:07来源:百度搜索研发部作者: 随着苹果手持设备用户的不断增加,ios应用也增长迅速,同时随着iphone ...

  9. UE4在windows下打包IOS(虚拟机)

    UE4在windows下打包IOS 1.简述 2.搭建步骤 3.报错 1.简述 之前整理过在linux下配置UE4的文章(linux下安装编译ue4问题报错的解决方法),今天梳理下在虚拟机上安装Mac ...

最新文章

  1. Android相机的实现
  2. Java并发编程—无锁互斥机制及CAS原理
  3. 【Android休眠】之PowerKey唤醒源实现【转】
  4. Ruby常用比较操作符
  5. windows系统下如何把excel数据转换成markdown格式的表格
  6. 适用于JDeveloper 11gR2的Glassfish插件
  7. P1616 疯狂的采药(python3实现)--80分
  8. 图解金山网盾3.6下载保护实现原理
  9. jQuery学习笔记——筛选元素集合
  10. UIKit框架类层次图
  11. IOS 7 Xcode 5 免IDP证书 真机调试
  12. ESP8266-01/01S配对阿里云生活物联网教程(超详细)
  13. java学习--自定义类的实例的大小比较和排序
  14. Java NIO学习与记录(七): Reactor单线程模型的实现
  15. java 8 中文字体_jdk安装中文字体,解决Can't read the embedded font LNUHUF+SimSun
  16. 百元性价比高的蓝牙耳机推荐:学生党适合使用的蓝牙耳机
  17. 用计算机制作课程表,怎么用word做表格-Word制作课程表的方法,学习必备表格,简单易学...
  18. 计算机网络基础判断题
  19. win10一根网线连接linux,细说win10系统使用一根网线连接两台电脑的设置教程_
  20. 不是机器人韩剧所有歌曲_15首超好听经典韩剧OST 《鬼怪》配乐每听必哭

热门文章

  1. 计算机操作系统虚拟内存管理
  2. android 寺库trytry_美图与寺库、TryTry三方达成战略合作,美图美妆App将由TryTry运营...
  3. 500元的SEO教程免费阅读(转)
  4. 微软正式发布Chromium Edge开发预览版
  5. 转 云中漫步的 电子书 from simon
  6. 中华人民共和国数据安全法(全文)
  7. 家用计算机的普及英语作文,优秀高二英语作文:计算机
  8. 效能评估指标体系构建
  9. DEJA_VU3D - Cesium功能集 之 026-军事标绘系列完整组件
  10. 1323:【例6.5】活动选择