iOS shell脚本打包

原文链接:http://www.jianshu.com/p/5abbe0d61cef

参考链接:http://blog.csdn.net/potato512/article/details/52176073

开头

前面几片记录了jenkins的使用,配置一个jenkins环境,我们需要一个比较闲得笔记本做这份工作,不可能自己的本一直开着这个服务,动不动CPU风扇狂转,其他性能下降,反而会影响我们工作,怎么办了,写个shell脚本帮我们完成工程打包、上传。

原理

xcode在jenkins中编译、shell编译还是xcode自身编译都是需要xcode自己的IDE环境决定的,具体来说就是

xcodebuild & xcrun这俩家伙来完成

废话不多说,直接上脚本,需要的自己改一下即可。

project打包上传

#!/usr/bin/bash

#next test
#1.证书
#2.打包状态每部判断

#设置Xcode的Build Settings->Code Signing Resource Rules Path的值为:$(SDKROOT)/ResourceRules.plist 

 #xcodeproj文件的绝对路径
PROJECT="/Users/mac/Desktop/pro/git/MCPayDemo/MCPayDemo.xcodeproj"

SCHEME="MCPayDemo"

#iPhone Distribution:
IDENTITY="iPhone Developer: ma jiancheng (xxxxx)"  

#Distribution Provision File Path
PROVISIONING_PROFILE="/Users/mac/Library/MobileDevice/Provisioning\ Profiles/ead3e7e7-a2e8-45c2-98fa-008f3712xxxx.mobileprovision"

#输出ipa文件的路径, 最好是绝对路径
OUTDIR="/Users/mac/Desktop/pro/git/MCPayDemo/output"

PRODUCTDIR=${OUTDIR}
#FIR 秘钥
FIRTOKEN="5558b26ae383df7390b880xxxxxxx"
#蒲公英aipKey
PAPIKEY="c1ad57c15a5bb0c770c51639xxxxxxx"
#蒲公英uKey
PUKEY="d5eb8f86040b9ae6108ed4c58xxxxxxx"

if [ ! -f $PROVISIONING_PROFILE ]; then
    echo "Please download the provision file for "${PROVISIONING_PROFILE}
    exit 4;
fi
echo "~~~~~~~~~~~~~~~~清理工程~~~~~~~~~~~~~~~~编译工程~~~~~~~"
echo "${OUTDIR}${SCHEME}.ipa"
echo "xcrun -sdk iphoneos PackageApplication -v ${PRODUCTDIR}/${SCHEME}.app -o ${OUTDIR}/${SCHEME}.ipa --sign ${IDENTITY} --embed ${PROVISIONING_PROFILE}"
xcodebuild -project "${PROJECT}" -scheme "${SCHEME}" -configuration  Release clean build CODE_SIGN_IDENTITY="${IDENTITY}" -sdk iphoneos CONFIGURATION_BUILD_DIR=${OUTDIR}
#打包成 .ipa
echo "~~~~~~~~~~~${SCHEME}.ipa}~~~scuess"
echo "xcrun -sdk iphoneos PackageApplication -v ${PRODUCTDIR}/${SCHEME}.app -o ${OUTDIR}/${SCHEME}.ipa --sign \"${IDENTITY}\" --embed ${PROVISIONING_PROFILE}"
xcrun -sdk iphoneos PackageApplication -v "${PRODUCTDIR}/${SCHEME}.app" -o "${OUTDIR}/${SCHEME}.ipa"
# --sign "\"${IDENTITY}\"" --embed "${PROVISIONING_PROFILE}"

#上传到测试平台 -> fir.im
fir p "${OUTDIR}/${SCHEME}.ipa" -T "${FIRTOKEN}"

echo "-------------------->fir.im------->蒲公英---------"
echo "curl -F [email protected]${OUTDIR}/${SCHEME}.ipa -F uKey=${PUKEY} -F _api_key=${PAPIKEY} http://www.pgyer.com/apiv1/app/upload"
curl -F "[email protected]${OUTDIR}/${SCHEME}.ipa" -F "uKey=${PUKEY}" -F "_api_key=${PAPIKEY}" "http://www.pgyer.com/apiv1/app/upload"
echo "\n\n"

workspace打包上传

/#!/usr/bin/bash
#############################################
/# batch rename                                 #
/# Input  :    $1 SCHEME                      #
/#             eg:需要编译的scheme                #
/# Input  :    $2 PROVISION PREFIX           #
/#             eg: mobileprovision文件的名称    #
#############################################

#next test
#1.证书
#2.打包状态每部判断

#设置Xcode的Build Settings->Code Signing Resource Rules Path的值为:$(SDKROOT)/ResourceRules.plist 

 #xcodeproj文件的绝对路径[修改]
WORKSPACE_PATH="/Users/mac/Desktop/car/Runnor.CarService.IosApp/"
WORKSPACE_NAME="MCCarServiceiPhone"
SCHEME="MCCarServiceiPhone"

#生成的APP名称,根据xcode项目 plist来定
APPNAME="MCCarServiceiPhone"

#iPhone Distribution: FOO.
IDENTITY="\"iPhone Developer: ma jiancheng (xxxxxxxxx)\""  

#Distribution Provision File Path
PROVISIONING_PROFILE="/Users/mac/Library/MobileDevice/Provisioning\ Profiles/ead3e7e7-a2e8-45c2-98fa-008f3712382d.mobileprovision"

#输出ipa文件的路径, 最好是绝对路径
OUTDIR="${WORKSPACE_PATH}/output"

#FIR 秘钥
FIRTOKEN="5558b26ae383df7390b880bexxxxxxx"
#蒲公英aipKey
PAPIKEY="c1ad57c15a5bb0c770c51639xxxxxxx"
#蒲公英uKey
PUKEY="d5eb8f86040b9ae6108ed4c5xxxxxxxx"

if [ ! -f $PROVISIONING_PROFILE ]; then
    echo "Please download the provision file for " ${PROVISIONING_PROFILE}
    exit 4;
fi
echo "~~~~~~~~~~~~~~~~清理工程~~~~~~~~~~~~~~~~编译工程~~~~~~~"
echo "${OUTDIR}${APPNAME}.ipa"
echo "xcodebuild -workspace ${WORKSPACE_NAME}.xcworkspace -scheme ${SCHEME} -configuration  Release clean build CODE_SIGN_IDENTITY=${IDENTITY} -sdk iphoneos CONFIGURATION_BUILD_DIR=${OUTDIR}"
xcodebuild -workspace "${WORKSPACE_PATH}/${WORKSPACE_NAME}.xcworkspace" -scheme "${SCHEME}" -configuration  Release clean build CODE_SIGN_IDENTITY="${IDENTITY}" -sdk iphoneos CONFIGURATION_BUILD_DIR=${OUTDIR}
#打包成 .ipa
echo "~~~~~~~~~~~${APPNAME}.ipa}~~~scuess"
echo "xcrun -sdk iphoneos PackageApplication -v ${OUTDIR}/${APPNAME}.app -o ${OUTDIR}/${APPNAME}.ipa --sign ${IDENTITY} --embed ${PROVISIONING_PROFILE}"
xcrun -sdk iphoneos PackageApplication -v "${OUTDIR}/${APPNAME}.app" -o "${OUTDIR}/${APPNAME}.ipa"
# --sign "${IDENTITY}" --embed "${PROVISIONING_PROFILE}"

#上传到测试平台 -> fir.im
echo "-------------------->fir.im------->蒲公英---------"
#fir p "${OUTDIR}/${SCHEME}.ipa" -T "${FIRTOKEN}"
# ->  蒲公英

echo "curl -F [email protected]${OUTDIR}/${APPNAME}.ipa -F uKey=${PUKEY} -F _api_key=${PAPIKEY} http://www.pgyer.com/apiv1/app/upload"
curl -F "[email protected]${OUTDIR}/${APPNAME}.ipa" -F "uKey=${PUKEY}" -F "_api_key=${PAPIKEY}" "http://www.pgyer.com/apiv1/app/upload"
echo "\n\n"

#--------------------end--------------

结语

这个shell语句写的比较简单,等闲暇会在本文优化。本文是jenkins的一个衍生,后续会在jenkins上探索一些持续构建的工作。

文/lp_马建成(简书作者)
原文链接:http://www.jianshu.com/p/5abbe0d61cef
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

时间: 2024-10-04 23:44:47

iOS shell脚本打包的相关文章

shell脚本打包ipa

参考:ipa自动打包脚本 :http://webfrogs.me/2013/02/18/ios-automation/ 1.从以上链接中跳至GitHub下载打包所需的shell脚本文件夹 2.打开终端cd到shell文件所在的绝对路径,格式如下 cd shell文件夹所在绝对路径 3.键入一下命令执行脚本 ./ipa-build  iOS工程文件所在绝对路径 (编译时的工程configuration类型) 即可生成所需的ipa包 shell脚本打包ipa,布布扣,bubuko.com

将 shell 脚本打包到 rpm 包中

下以操作最好在虚拟机上操作:如 Docker 最方便了 1. 安装 rpmbuild yum -y install rpmbuild  rpmdevtools -y 2. 生成打包路径 使用 rpmdev-setuptree ,会自动在用户家目录生成一个 rpmbuild 的文件夹,作为工作路径 cd rpmbuild/SPECS 路径,创建 filename.spec 文件(打包 shell 脚本示例),详细含义查阅相关文档 Name: name Version: 0.1.0 Release:

ios打包ipa文件可行方法-使用终端命令和shell脚本

最近做的ios项目要上线了,需要打成ipa包;尝试了一些方法之后终于找到一种比较可行的办法! 打包步骤: 前提mobileprovision描述文件和 开发者证书需要可用,而且是  Distribution的,发布版的 1.使用xcodebuild命令打包成.app文件 创建一个IpaTest的工程, 打开终端,输入以下命令: (1)cd 拖拽你的工程文件夹到终端中生成一个路径,回车 或者使用 linux命令,ls 结合cd 完成目录切换 进入到相应的工程根目录,效果如下: localhost:

iOS开发进阶 - 使用shell脚本自动打包上传到fir.im上-b

用fir.im测试已经好长时间了,感觉每次打包上传都很麻烦,想着是不是可以用脚本自动打包,在网上搜了一下确实有,下面总结一下如何使用脚本自动打包上传到fir.im,以及打包过程中遇到的问题和解决办法 相关资料和下载 首先是打包脚本的下载地址,这个是我找到的比较全的一个,里面有很多不同功能的shell脚本,亲测好用,传送门:https://github.com/heyuan110/BashShell?spm=5176.100239.blogcont5028.4.kFcLtR 还有关于fir指令的一

iOS开发进阶 - 使用shell脚本自动打包上传到fir.im上

如果移动端访问不佳,可以访问我的个人博客 用fir.im测试已经好长时间了,感觉每次打包上传都很麻烦,想着是不是可以用脚本自动打包,在网上搜了一下确实有,下面总结一下如何使用脚本自动打包上传到fir.im,以及打包过程中遇到的问题和解决办法 相关资料和下载 首先是打包脚本的下载地址,这个是我找到的比较全的一个,里面有很多不同功能的shell脚本,亲测好用,传送门 还有关于fir指令的一些介绍可以去这里查看,传送门 第一步安装fir-cil fir-cli 使用 Ruby 构建, 无需编译, 只要

IOS工程自动打包并发布脚本实现

http://blog.csdn.net/ccf0703/article/details/8588667 文章首发地址:http://webfrogs.me/2013/02/18/ios-automation/ 作者:webfrogs 转载请注明出处. 前言 IOS的开发过程中,当需要给测试人员发布测试包的时候,直接使用xcode来做的效率是非常低下的.尤其是当有一点小改动需要重新出包时,那简直是个折磨的人的工作.通过一番研究后,遂决定写一系列脚本,以代替人工完成打包和发布的过程. 目前脚本已经

iOS 制作自动打包脚本 Xcode8.3.2

本文包含以下内容: 前言 1.shell脚本的编写 2.xcodebuild命令 3.完整的可用示例 参考资料 前言 做iOS开发,打包APP是比较频繁的事情,每次都手动去配置一堆东西确实是比较乏味. 另外,我目前负责维护的APP在发布时,不同的Mode设置不同的AppIcon和BundleID, 所以要是可以简单执行一个脚本就完成打包的各种配置,那就轻松了! 于是乎,我就在网上学习了一下实现自动打包的方法,但是好多都是老版本的教程. 所以我打算参考别人的教程,然后自己也研究研究,再把研究的结果

tar ,cpio打包解压. shell脚本for,while,until循环. rpm包管理,select循环菜单,函数function,yum

tar  tar -cf 路径+文件名字后续.tar  +路径 创建归档压缩 tar cf /testdir/etc.tar /etc/ tar cvf 可以查看解压过程 tar tvf 预览作用 tar xvf 解压文件 tar zcvf /testdir/etc2.tar.gz /etc/ 解压再压缩到指定路径,文件格式 tar jcvf cpio 复制 从或到文件 cpio 命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以".cpio"或者".ta

shell脚本利用Here Document ,打包C的源码并编译生成再执行。shell携代攻击程序

shell脚本利用Here Document ,打包C的源码并编译生成再执行. shell携代攻击程序 cat 1.sh #!/bin/bash # echo "正在产生 hello.c ... " echo cat <<'EOF' > hello.c #include<stdio.h> int main() { printf("Hello world! \n"); return 0; } EOF echo "编译 hello