Build Library By xcodebuild
#!/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相关推荐
- 【iOS小白教程】如何打包:xcodebuild和xcrun介绍
摘抄自2016-06-25-ios-xcodebuild xcodebuild 简介 xcodebuild 用于编译xcode中的projects和workspaces 文档 1 在终端中输入 $ m ...
- xcodebuild和xcrun实现自动打包iOS应用程序
随着苹果手持设备用户的不断增加,ios应用也增长迅速,同时随着iphone被越狱越来越多的app 的渠道也不断增多,为各个渠道打包成了一件费时费力的工作,本文提供一种比较智能的打包方式来减少其带来的各 ...
- Angular library 学习笔记
原文 Use cases for Angular libraries Angular 库有 2 个常见用例: 构建可重用的组件库以在应用程序之间共享. 构建共享服务层功能 - 例如. 用于处理外部数据 ...
- 给iOS工程增加Daily Build
前言 Daily Build是一件非常有意义的事情,也是敏捷开发中关于"持续集成"的一个实践.Daily Build对于开发来说有如下好处: 保证了每次check in的代码可用, ...
- 一个静态库框架模板: iOS Universal Framework Mk 7
项目地址: https://github.com/kstenerud/iOS-Universal-Framework 这是一个Xcode 4使用的项目模板,而不是一个新的开源框架. 这是项目主页,介绍 ...
- 第三方SDK编写文档 - iOS
目录 一.创建一个workspace 二.创建SDK 三.创建Demo 四.Demo的关联以及SDK的开发调试 五.打包 一.创建一个workspace 1.在桌面上创建一个文件夹MyTest(名字自 ...
- iOS 轻量级包管理工具Carthage了解下
Why Carthage? 我们已经熟知Cocoapods了,对于工程来说,帮我们自动创建Xcode WorkSpace和所有的依赖,对于依赖库来说,用来做本地local pod或者远程pod都非常好 ...
- iPhone自动 打包 脚本
xcodebuild和xcrun实现自动打包iOS应用程序 2011-12-03 20:30:07来源:百度搜索研发部作者: 随着苹果手持设备用户的不断增加,ios应用也增长迅速,同时随着iphone ...
- UE4在windows下打包IOS(虚拟机)
UE4在windows下打包IOS 1.简述 2.搭建步骤 3.报错 1.简述 之前整理过在linux下配置UE4的文章(linux下安装编译ue4问题报错的解决方法),今天梳理下在虚拟机上安装Mac ...
最新文章
- Android相机的实现
- Java并发编程—无锁互斥机制及CAS原理
- 【Android休眠】之PowerKey唤醒源实现【转】
- Ruby常用比较操作符
- windows系统下如何把excel数据转换成markdown格式的表格
- 适用于JDeveloper 11gR2的Glassfish插件
- P1616 疯狂的采药(python3实现)--80分
- 图解金山网盾3.6下载保护实现原理
- jQuery学习笔记——筛选元素集合
- UIKit框架类层次图
- IOS 7 Xcode 5 免IDP证书 真机调试
- ESP8266-01/01S配对阿里云生活物联网教程(超详细)
- java学习--自定义类的实例的大小比较和排序
- Java NIO学习与记录(七): Reactor单线程模型的实现
- java 8 中文字体_jdk安装中文字体,解决Can't read the embedded font LNUHUF+SimSun
- 百元性价比高的蓝牙耳机推荐:学生党适合使用的蓝牙耳机
- 用计算机制作课程表,怎么用word做表格-Word制作课程表的方法,学习必备表格,简单易学...
- 计算机网络基础判断题
- win10一根网线连接linux,细说win10系统使用一根网线连接两台电脑的设置教程_
- 不是机器人韩剧所有歌曲_15首超好听经典韩剧OST 《鬼怪》配乐每听必哭
热门文章
- 计算机操作系统虚拟内存管理
- android 寺库trytry_美图与寺库、TryTry三方达成战略合作,美图美妆App将由TryTry运营...
- 500元的SEO教程免费阅读(转)
- 微软正式发布Chromium Edge开发预览版
- 转 云中漫步的 电子书 from simon
- 中华人民共和国数据安全法(全文)
- 家用计算机的普及英语作文,优秀高二英语作文:计算机
- 效能评估指标体系构建
- DEJA_VU3D - Cesium功能集 之 026-军事标绘系列完整组件
- 1323:【例6.5】活动选择