iOS自动编译。简化测试与开发。

前言

学如逆水行舟,不进则退。共勉!!!iOS资料|地址

最近研究了一下iOS的自动化编译,目的是为了简化测试和开发的同学沟通协调的次数,实现测试同学可以随时从网页操作编译SVN最新源码并打包ipa进行测试。

具体思路是通过从配置文件读取需要编译的项目配置列表展示在网页上,测试同学选择需要编译的项目,确定后将选择项目的相关参数传入shell脚本运行,编译完成自动跳转至下载页面。原文|地址

主要流程包括:

  1. Shell脚本的编写。通过xcodebuild和xcrun实现自动编译并打包。
  2. PHP调用脚本。开启OS X自带的Apache服务器,编写PHP来调用shell。

编写shell脚本

自动编译其实就是使用了xcodebuild的相关命令来实现编译功能,再使用xcrun来将app打包成ipa。

用到的关键命令

  • 编译workspace
xcodebuild -workspace workspacename -scheme schemename -configuration [-configuration configurationname] clean build SYMROOT=(SYMROOT)
  • 编译project
xcodebuild -target targetname -configuration [-configuration configurationname] clean build SYMROOT=(SYMROOT)
  • 查看配置信息
xcodebuild -list
  • xcrun打包ipa
xcrun -sdk iphoneos PackageApplication -v projectName.app -o ipaName.ipa

需要注意,脚本中的路径最好使用绝对路径。

配置Apache和PHP

启动Apache

启动:sudo apachectl start

停止:sudo apachectl stop

重启:sudo apachectl restart

文件根目录系统级的根目录
http://localhosts/

对应的文件目录是:

/Library/WebServer/Documents/

系统级根目录默认没有开启目录列表,开启方法:
编辑 /etc/apache2/httpd.conf 文件

搜索找到
<Directory “/Library/WebServer/Documents”>
将 Options Multiviews 修改为 Options Indexes Multiviews

用户级根目录

另一个 Web 根目录默认是 ~/Sites ,10.9 中你需要手动创建这个Sites目录。

检查这个目录下是否有 username.conf 文件
/etc/apache2/users/

如果没有,则需要新建一个,username 需要是你的账户名字,建议使用终端创建这个文件:

cd /etc/apache2/users
sudo vi username.conf
贴入以下内容,注意修改 username 为你的账户名字

<Directory "/Users/username/Sites/"> 
Options Indexes MultiViews FollowSymLinksAllowOverride AllOrder allow,denyAllow from allRequire all granted </Directory>

这个文件的权限应该是:

-rw-r--r-- 1 root wheel 298 Jun 28 16:47 
username.conf

如果不是,请修改

sudo chmod 644 username.conf\

编辑 /etc/apache2/httpd.conf 文件,删除下列这些代码前的注释符号: #

Include /private/etc/apache2/extra/httpd-userdir.conf LoadModule authz_core_module libexec/apache2/mod_authz_core.soLoadModule authz_host_module libexec/apache2/mod_authz_host.soLoadModule userdir_module libexec/apache2/mod_userdir.so

编辑 /etc/apache2/extra/httpd-userdir.conf 文件,删除下列这些代码前的注释符号: #

Include /private/etc/apache2/users/*.conf

重启 Apache
sudo apachectl restart

这时,这个网址应该已经可以用了:
http://localhost/~username/

PHP调用shell脚本
这里主要用到了PHP的system命令:system($cmd)
PHP调用shell的权限是比较低的,我们的shell里会需要创建文件及文件夹的权限,解决办法是通过命令行将PHP文件所在目录及目录下的所有文件都提升权限,否则脚本会报权限错误。具体步骤如下:

  1. 打开目录 /private/etc/apache2

  2. 打开文件 httpd.conf
    找到

User _www 
Group _www

修改_www为你的登录用户名

User <登录用户名>
  1. 从命令行重启Apache
sudo apachectl restart

  1. 提升网站目录权限。因为我的网站根目录就是上文提到的用户的Sites文件,因此执行以下命令
sudo chmod 775 ~/Sites
sudo chmod 775 ~/Sites/*

好了,权限问题解决了。当满怀信心看到从网页调用脚本输出信息的时候,结果又报了无法找到证书的错误,OMG,但从终端调用脚本就可以成功,起初以为权限不够导致无法调用证书,绕了一大圈后发现这个问题只是因为钥匙串中的证书一般安装在登录下,只需要移动到系统下就行了。

在这里插入图片描述
关于从SVN仓库获取源码的部分就不写了,既然都可以调用脚本了,这部分就也很简单了。
这个过程还是比较折腾的,希望这篇文章能够save your time 😃

iOS资料|地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值