iOS-Jenkins脚本打包上传fir
来源:互联网 发布:加工中心编程视频教程 编辑:程序博客网 时间:2024/05/17 19:16
这次jenkins打包先介绍一下脚本的方式,配置jenkins的方法后续在补上。这种脚本的方式比较简单,要不要jenkins都可以,因为jenkins做的也就是执行几句命令和直接在终端执行没什么区别。
脚本涉及的工具:
- xcodebuild
- xcrun
- fir-cli
其中,xcodebuild和xcrun都是xcode自带的工具,如果没有可以通过下面命令安装,至于这两个工具中的各种命令在这里就不介绍了,有兴趣的同学可以用help查找命令
xcode-select –install
fir-cli
fir提供的脚本工具,主要利用它登录,上传ipa包用,同样可以help查找帮助,或者查看githudfir-cli
若没用fir命令:gem install fir-cli
脚本代码
#!/bin/shecho go to `dirname $0`cd `dirname $0`echo `pwd`dir=`pwd`appName="工程scheme"distDir="$dir/buildipa"configuration="Release"workspace="xxx.xcworkspace" #如果工程是用pod管理的话tool="xcodebuild"#pod update 如果有需要#git pull 如果有需要#清除上次的打包数据$tool clean -workspace $workspace -scheme $appName -configuration $configuration -sdk iphoneos SYMROOT=`pwd`/buildsif [ -d $distDir ];thenrm -rf "$distDir"mkdir $distDirelsemkdir $distDirfireleaseDir="builds/$configuration-iphoneos"rm -rf "$releaseDir"$tool -workspace $workspace -scheme $appName -configuration $configuration -sdk iphoneos build SYMROOT=`pwd`/buildsecho "xcode build completed-----------------"cp -R "$releaseDir/$appName.app" "$distDir/$appName.app"cd "$distDir/$appName.app"/usr/bin/xcrun -sdk iphoneos PackageApplication -v "$distDir/$appName.app" -o "$distDir/$appName.ipa"cd ..fir login fir的API Tokenfir publish "$appName.ipa"
把该填的几项填好,丢到工程目录下面,如果不想用jenkins的话,直接在终端进入该目录下,执行以下命令就可以了。
注:xxx是你的脚本名称。
sh xxx.sh或者赋予脚本权限再去执行chmod +x ./xxx.sh./xxx.sh
要配置jenkins的话也很简单,就一个脚本的配置,如下图,jenkins的安装以及单独配置jenkins不用脚本的方式下次再介绍。
坑点
另外说一个xcode 8.2以后的一个坑,看脚本里面有这样一句代码
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "$distDir/$appName.app" -o "$distDir/$appName.ipa"
这句代码的意思就是利用xcode的PackageApplication工具把 .app文件打包成 .ipa文件,但是,xcode 8.2以后这个插件没有了,当你执行的脚本的时候会报这样的一个错误:
xcrun: error: unable to find utility “PackageApplication”, not a developer tool or in PATH。
意思是说没有PackageApplication这个工具,那么这个时候你就需要在老版本的/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin
这个目录下面拷贝一份,到新版本的这个目录。如果你没有可以在附件中下载。
PackageApplication下载
到目前为止,你至少能直接用脚本或者jenkins来自动打包并上传到fir上面了,下面是后来的开发过程中遇到的问题以及优化工作,不过你完全可以按照上面的方法来打包!!!
后续开发补充
后续的开发中遇到了两个问题:
1. 在后来的开发中偶然看到打包输出的日志中有这么一行代码
warning: PackageApplication is deprecated, use `xcodebuild -exportArchive` instead.
看起来苹果已经把PackageApplication废弃了,xcode8.2之后不提供这个工具也是合理的,这个警告也清楚的告诉我们用 xcodebuild -exportArchive
来代替。
2.在打包的时候我们用上述的方法,会发打的.app和.ipa包都会比用xcode打出来的大。虽说这个问题不影响我们正常的时候,但是始终感觉是个要解决的问题。查看输出日志发现这句日志:
+ /usr/bin/zip --symlinks --verbose --recurse-paths /Users/xxx/buildipa/xxx.ipa .
看到这句就能猜测xcrun打出的 .ipa 的方式,应该是压缩成zip之后改成ipa包的,所以打出的包比较大。
你也许会发现 .app包也是比xcode直接打出来的大,问题就出现在这句命令上面:
$tool -workspace $workspace -scheme $appName -configuration $configuration -sdk iphoneos build SYMROOT=`pwd`/builds
虽然我们用的是xcodebuild工具,但是并没有用archive命令,进入到工程中的build文件夹中,build的文件也不是.archive文件,而是很多文件在一起。由此可见.archive也是一种压缩形式,用这种格式,也是对内容的一次压缩。
基于上面的两个问题就开始研究xcodebuild -exportArchive
看看是否在解决第一个问题的同时,解决第二个问题。
使用xcodebuild工具,主要用到两个方法:
xcodebuild archive -workspace "$workspaceName" -scheme "$scheme" -configuration "$configuration" -archivePath "$archiveBuildDir"#$exportOptionsPlist是对应使用的Plist的完整路径(包括文件名),exportIpaDir路径下生成.ipa文件xcodebuild -exportArchive -archivePath "$archiveBuildDir" -exportOptionsPlist "$exportOptionsPlist" -exportPath "$exportIpaDir"
用xcodebuild -exportArchive
一定是要有exportOptionsPlist的,创建一个plist文件,plist的key你可以用help来查看,我设置了两个key,其他的key你可以自己去设置与实践,文档中写的很清楚了。
method:development compileBitcode:NO
method的可选值:app-store, ad-hoc, enterprise, development
附上脚本:
#!/bin/shecho go to `dirname $0`cd `dirname $0`echo `pwd`dir=`pwd`workspaceName="xxx.xcworkspace"scheme="xxx"configuration="Release"archiveBuildDir="$dir/build/$scheme.xcarchive"exportIpaDir="$dir/buildipa"exportOptionsPlist="$dir/adhocPlist.plist"echo "--------------------Product -> Archive--------------------"xcodebuild archive -workspace "$workspaceName" -scheme "$scheme" -configuration "$configuration" -archivePath "$archiveBuildDir"echo "--------------------xcode Archive completed-----------------"#exportOptionsPlist是对应使用的Plist的完整路径(包括文件名),exportIpaDir路径下生成.ipa文件xcodebuild -exportArchive -archivePath "$archiveBuildDir" -exportOptionsPlist "$exportOptionsPlist" -exportPath "$exportIpaDir"cd "$exportIpaDir"fir login xxxfir publish "$scheme.ipa"
- iOS-Jenkins脚本打包上传fir
- 批量打包上传FIR脚本
- Jenkins自动打包IOS与分发fir
- iOS打包Archive上传到fir.im
- JenKins 自动化打包上传到服务器的fir 工具
- 自动化Jenkins编译打包上传fir或者蒲公英
- iOS开发进阶 - 使用shell脚本自动打包上传到fir.im上
- Jenkins自动打包 配置Jenkins环境,以及ipa包上传fir
- [jenkins工具]之三:jenkins上传android/ios项目到fir.im/蒲公英
- Jenkins + xcode +Fir.im 自动构建项目 、打包ipa并上传
- Jenkins + Xcode + Fir.im 自动构建项目,并打包ipa上传(MAC)
- Jenkins + xcode +Fir.im 自动构建项目 、打包ipa并上传
- Mac环境中Jenkins自动打包上传fir的配置流程(从零开始)一
- Mac中Jenkins自动打包上传fir的配置流程(从零开始)二
- Mac环境中Jenkins自动打包上传fir的配置流程(从零开始)三
- Mac下搭建 Jenkins+Github+蒲公英/fir.im 持续集成环境(iOS自动打包)
- Jenkins+Git+Gradle+Fir 自动Build并上传Fir
- Jenkins+gitHub+Xcode+自动上传fir.im
- React 1 入门教程(改)
- 我的工作备忘2
- Kotlin
- confirm的使用
- notification
- iOS-Jenkins脚本打包上传fir
- 分别使用Matlab和OpenCV标定微距相机
- JS 关于(function( window, undefined ) {})(window)写法的理解
- POJ
- Bootstrap(2)__Bootstrap基础<栅格系统>
- 历史记录+模糊搜索+高亮关键词
- 《奔跑吧Linux》之Linux内核奔跑卷
- Activity启动模式
- 虚拟机安装MAC系统IOS测试环境搭建