iOS开发进阶 - 使用shell脚本自动打包上传到fir.im上
2016-08-24 12:03
726 查看
如果移动端访问不佳,可以访问我的个人博客
用fir.im测试已经好长时间了,感觉每次打包上传都很麻烦,想着是不是可以用脚本自动打包,在网上搜了一下确实有,下面总结一下如何使用脚本自动打包上传到fir.im,以及打包过程中遇到的问题和解决办法
还有关于fir指令的一些介绍可以去这里查看,传送门
出现
在命令前加上
出现
更换 Ruby 的淘宝源(由于国内网络原因, 你懂的), 并升级下系统自带的 gem
Mac OS X 10.11 以后的版本, 由于10.11引入了
1. 使用 Homebrew 及 RVM 安装 Ruby, 再安装 fir-cli(推荐)
2. 指定 fir-cli 中 bin 文件的 PATH
3. 重写 Ruby Gem 的 bindir
如果出现一下类似的情况说明登录成功了.
上面对关键代码都做了详细解释,下面只需要执行shell脚本就能打包上传了。
然后打开终端,cd到脚本文件在的目录下,执行命名
然后看到一下类似的画面说明上传成功:
以上就是我对于打包上传到fir上的脚本使用的总结,如果大家有问题可以随时问我,谢谢大家的阅读。
用fir.im测试已经好长时间了,感觉每次打包上传都很麻烦,想着是不是可以用脚本自动打包,在网上搜了一下确实有,下面总结一下如何使用脚本自动打包上传到fir.im,以及打包过程中遇到的问题和解决办法
相关资料和下载
首先是打包脚本的下载地址,这个是我找到的比较全的一个,里面有很多不同功能的shell脚本,亲测好用,传送门还有关于fir指令的一些介绍可以去这里查看,传送门
第一步安装fir-cil
fir-cli 使用 Ruby 构建, 无需编译, 只要安装相应 gem 即可.$ ruby -v # > 1.9.3 $ gem install fir-cli
常见的安装问题
使用系统自带的 Ruby 安装, 需确保 ruby-dev 已被正确的安装:$ xcode-select --install # OS X 系统 $ sudo apt-get install ruby-dev # Linux 系统
出现
Permission denied相关错误:
在命令前加上
sudo
出现
Gem::RemoteFetcher::FetchError相关错误:
更换 Ruby 的淘宝源(由于国内网络原因, 你懂的), 并升级下系统自带的 gem
$ gem sources --remove https://rubygems.org/ $ gem sources -a https://ruby.taobao.org/ $ gem sources -l *** CURRENT SOURCES *** https://ruby.taobao.org # 请确保只有 ruby.taobao.org, 如果有其他的源, 请 remove 掉 gem update --system gem install fir-cli
Mac OS X 10.11 以后的版本, 由于10.11引入了
rootless, 无法直接安装 fir-cli, 有以下三种解决办法:
1. 使用 Homebrew 及 RVM 安装 Ruby, 再安装 fir-cli(推荐)
# Install Homebrew: $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" # Install RVM: $ \curl -sSL https://get.rvm.io | bash -s stable --ruby $ gem install fir-cli
2. 指定 fir-cli 中 bin 文件的 PATH
$ export PATH=/usr/local/bin:$PATH;gem install -n /usr/local/bin fir-cli
3. 重写 Ruby Gem 的 bindir
$ echo 'gem: --bindir /usr/local/bin' >> ~/.gemrc $ gem install fir-cli
第二步登录fir.im
登录指令非常简单,只需要fir login API Token,这里面的API Token就是你fir帐号下的API Token,然后通过
fir me查看你是否登录成功.
首先获取API Token
在终端里登录你的fir
fir login API Token fir me
如果出现一下类似的情况说明登录成功了.
获取需要上传应用的appID
第三步使用下载下来的shell脚本进行打包上传
先看一下脚本代码:#! bin/bash #Author:Bruce http://www.heyuan110.com #Update Date:2015.06.23 #Use:命令行进入目录直接执行sh Build+DeployToFir.sh即可完成打包发布到fir.im export LC_ALL=zh_CN.GB2312; export LANG=zh_CN.GB2312 ###############设置需编译的项目配置名称 buildConfig="Release" #编译的方式,有Release,Debug,自定义的AdHoc等 ########################################################################################## ##############################以下部分为自动生产部分,不需要手动修改############################ ########################################################################################## projectName=`find . -name *.xcodeproj | awk -F "[/.]" '{print $(NF-1)}'` #项目名称 projectDir=`pwd` #项目所在目录的绝对路径 wwwIPADir=~/Desktop/$projectName-IPA #ipa,icon最后所在的目录绝对路径 isWorkSpace=true #判断是用的workspace还是直接project,workspace设置为true,否则设置为false echo "~~~~~~~~~~~~~~~~~~~开始编译~~~~~~~~~~~~~~~~~~~" if [ -d "$wwwIPADir" ]; then echo $wwwIPADir echo "文件目录存在" else echo "文件目录不存在" mkdir -pv $wwwIPADir echo "创建${wwwIPADir}目录成功" fi ###############进入项目目录 cd $projectDir rm -rf ./build buildAppToDir=$projectDir/build #编译打包完成后.app文件存放的目录 ###############获取版本号,bundleID infoPlist="$projectName/Info.plist" bundleVersion=`/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" $infoPlist` bundleIdentifier=`/usr/libexec/PlistBuddy -c "Print CFBundleIdentifier" $infoPlist` bundleBuildVersion=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" $infoPlist` ###############开始编译app if $isWorkSpace ; then #判断编译方式 echo "开始编译workspace...." xcodebuild -workspace $projectName.xcworkspace -scheme $projectName -configuration $buildConfig clean build SYMROOT=$buildAppToDir else echo "开始编译target...." xcodebuild -target $projectName -configuration $buildConfig clean build SYMROOT=$buildAppToDir fi #判断编译结果 if test $? -eq 0 then echo "~~~~~~~~~~~~~~~~~~~编译成功~~~~~~~~~~~~~~~~~~~" else echo "~~~~~~~~~~~~~~~~~~~编译失败~~~~~~~~~~~~~~~~~~~" exit 1 fi ###############开始打包成.ipa ipaName=`echo $projectName | tr "[:upper:]" "[:lower:]"` #将项目名转小写 findFolderName=`find . -name "$buildConfig-*" -type d |xargs basename` #查找目录 appDir=$buildAppToDir/$findFolderName/ #app所在路径 echo "开始打包$projectName.app成$projectName.ipa....." xcrun -sdk iphoneos PackageApplication -v $appDir/$projectName.app -o $appDir/$ipaName.ipa #将app打包成ipa ###############开始拷贝到目标下载目录 #检查文件是否存在 if [ -f "$appDir/$ipaName.ipa" ] then echo "打包$ipaName.ipa成功." else echo "打包$ipaName.ipa失败." exit 1 fi path=$wwwIPADir/$projectName$(date +%Y%m%d%H%M%S).ipa cp -f -p $appDir/$ipaName.ipa $path #拷贝ipa文件 echo "复制$ipaName.ipa到${wwwIPADir}成功" echo "~~~~~~~~~~~~~~~~~~~结束编译,处理成功~~~~~~~~~~~~~~~~~~~" #open $wwwIPADir #####开始上传,如果只需要打ipa包出来不需要上传,可以删除下面的代码 export LANG=en_US export LC_ALL=en_US; echo "正在上传到fir.im...." #####http://fir.im/api/v2/app/appID?token=APIToken,里面的appID是你要上传应用的appID,APIToken是你fir上的APIToken fir p $path changelog=`cat $projectDir/README` curl -X PUT --data "changelog=$changelog" http://fir.im/api/v2/app/appID?token=APIToken echo "\n打包上传更新成功!" rm -rf $buildAppToDir rm -rf $projectDir/tmp
上面对关键代码都做了详细解释,下面只需要执行shell脚本就能打包上传了。
执行shell脚本,打包上传
首先把这个脚本文件放到你的项目工程目录下然后打开终端,cd到脚本文件在的目录下,执行命名
sh build_deployto_fir.sh
然后看到一下类似的画面说明上传成功:
执行脚本过程中遇到的问题和解决方案
fir: command not found
这个是因为没有安装fir-cil,导致找不到相应的命令行,只需要安装一下就行了,详情见上文写的如何安装fir-cil。README: No such file or directory
那是因为你的脚本目录下没有README的文件,只需要建一个README的文件就行了,打开终端,cd到当前位置,然后执行下面的命令:touch README
ERROR – : Token can not be blank
这个原因是因为你没有登录fir导致的,你执行这个脚本之前应该先登录一下fir,详情请看上文写的登录fir.im。以上就是我对于打包上传到fir上的脚本使用的总结,如果大家有问题可以随时问我,谢谢大家的阅读。
相关文章推荐
- iOS开发进阶 - 使用shell脚本自动打包上传到fir.im上
- iOS开发进阶 - 使用shell脚本自动打包上传到fir.im上-b
- iOS开发进阶 - 使用shell脚本自动打包上传到fir.im上
- iOS开发进阶 - 使用shell脚本自动打包上传到fir上
- iOS开发-ipa打包终极教程-使用终端和shell脚本实现
- iOS配置shell脚本自动打包上传到蒲公英
- iOS一行shell脚本自动打包上传指定位置
- [iOS 自动打包]shell脚本使用-ipa_build 脚本使用
- linux中使用shell脚本自动登录ftp服务器下载上传文件。
- Linux下使用Shell脚本实现ftp的自动上传下载的代码小结
- Linux使用Shell脚本实现ftp的自动上传下载
- IOS 通过脚本自动打包工具 webfrogs/xcode_shell
- iOS打包Archive上传到fir.im
- iOS工程自动打包 (Shell脚本打包)
- Linux使用Shell脚本实现ftp的自动上传下载
- CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中(转)
- IOS 通过脚本自动打包工具 webfrogs/xcode_shell
- CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中
- Jenkins + xcode +Fir.im 自动构建项目 、打包ipa并上传
- ios使用shell脚本打包ipa软件包