仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1298|回复: 18
打印 上一主题 下一主题

[学习教程] IOS编程:为iOS项目搭建Travis CI服务器仓酷云

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-18 11:38:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
你可能还需要学习使用Xcode这个开发环境,接著你需要掏钱向苹果注册开发者权限,基本的帐号是99美金。本视频为“斯坦福大学iPhone开发教程”,51CTO将不断关注本视频教程的更新进度,为大家提供最新的视频。你是不是已经试着为你的iOS项目搭建一台撑持延续集成的服务器,从我的团体履历而言,这可不是一个轻松的活。你必要筹办一部Mac,安装好全体所需的软件和插件。你要卖力办理一切的用户账户并供应平安回护。
底本你想节俭的工夫,终极你会发明你消费了大批的工夫往保护这台服务器。不外假如你的项目托管在GitHub上,如今有了新的但愿:TravisCI。该服务能够为你的项目供应延续集成的撑持,也就意味着它会卖力好托管一个项目标一切细节。在Ruby的天下中,TravisCI已久负盛名。从2013年4月入手下手,Travis也入手下手撑持iOS和Mac平台。
在这篇文章中,我会向你展现怎样一步步为你的项目集成Travis。不但包含编译项目和举行单位测试,还可以将你的使用投送到你一切的测试设备上。为了演示,我在GitHub上放了一个示例项目。在这篇文章的最初,我会教你怎样用Travis往定位程序中的毛病。
GitHub集成
我最喜好Travis的一点就是他与GitHub的WebUI集成的十分好。比如pull哀求。Travis会为每次哀求都实行编译操纵。假如统统一般,pull哀求在GitHub上看起来就像如许:

<br>
万一编译不乐成,GitHub页面会响应的改动色彩赐与提示:

<br>
链接Travis和GitHub
让我们看一下怎样链接你的GitHub项目到Travis。利用你的GitHub账号上岸Travis。关于公有事情目次,你必要注册一个Travis专业版账号。
上岸乐成后,你就能够为你的项目翻开Travis撑持。找到属性页面,在此列出了你的一切GitHub项目。不外要注重,假如你今后创立了一个新的事情目次,要利用Syncnow按钮举行同步。Travis只会偶然更新你的项目列表。

<br>
如今只必要翻开这个开关就能够为你的项目增加Travis服务。今后你会看到Travis会和你的GitHub项目设置相干联。下一步应当告知Travis当它收到项目修改以后该做甚么。
轻量级的项目设置
TravisCI必要你的项目标一些基础信息。在你项目标根目次创立一个名叫.travis.yml的文件,内容以下:

1

language:objective-c



Travis编译器运转在假造机情况下.已利用Ruby,Homebrew,CocoaPods和一些编译剧本举行过设置。上述的设置项已充足编译你的项目了。
预装的编译剧本会剖析你的Xcode项目,编译项面前目今的一切Target。假如一切文件都没有编译毛病测试也没有跳进项目就编译乐成了。如今能够将你的修改Push到GitHub看看能乐成编译。
固然这看起来仿佛很复杂,不外对你的项目纷歧定合用。几近没有甚么文档来引导用户怎样设置默许的编译举动。举个栗子,有一次我没有效摹拟器的SDK招致反省使用署名时产生了毛病。假如方才谁人最轻量级的设置对你的项目不合用的话,让我们来看一下怎样用定制的编译命令来合用Travis。
界说编译命令
Travis利用命令行来编译你的项目。因而,第一步就是使项目可以在当地编译。作为Xcode命令行工具的一部分,Apple供应了xcodebuild命令。
翻开你的终端输出:

1

xcodebuild&ndash;help



这会列出xcodebuild可用的一切参数。假如命令实行不乐成,确保你的命令行工具已乐成安装。一般一个罕见的编译命令看起来像如许:

1

xcodebuild-project{project}.xcodeproj-target{target}-sdkiphonesimulatorONLY_ACTIVE_ARCH=NO



利用iphonesimulatorSDK是为了不使用署名毛病。这是必需的一步直到我们稍后引进证书为止。经由过程设置ONLY_ACTIVE_ARCH=NO我们能够确保在摹拟器的架构下编译。你也能够设置分外的属性。用manxcodebuild来浏览文档。
关于利用CocoaPods的项目,你必要指定workspace和scheme。

1

xcodebuild-workspace{workspace}.xcworkspace-scheme{scheme}-sdkiphonesimulatorONLY_ACTIVE_ARCH=NO



Schemes是由Xcode主动天生的,但这在服务器上不会产生。确保一切的scheme都被设为shared并到场到事情目次中。不然它只会在当地事情而不会被TravisCI辨认。

<br>
我们的示例项面前目今的.travis.yml文件如今应当看起来像如许:

1
2
3

language:objective-c
script:xcodebuild-workspaceTravisExample.xcworkspace-schemeTravisExample-sdkiphonesimulatorONLY_ACTIVE_ARCH=NO



运转测试
一般关于测试来讲你会利用以下的命令(注重test属性)
xcodebuildtest-workspace{workspace}.xcworkspace-scheme{test_scheme}-sdkiphonesimulatorONLY_ACTIVE_ARCH=NO
不幸的是xcodebuild其实不能撑持多target和iOS的使用测试。苹果已在动手办理这个成绩,不外我倡议利用Xctool来取代。
Xctool
Xctool是来自Facebook的命令行工具,他能够匡助你加倍轻松快速的编译测试你的使用。他的黑色输入信息比xcodebuild加倍简便直不雅,布局明晰。同时还增加了对逻辑测试,使用测试的撑持。
Travis中已预装了xctool。要在当地测试的话,必要用Homebrew先安装xctool:

1
2
3

brewupdate
brewinstallxctool



用法十分复杂,xctool利用跟xcodebuild不异的参数:
xctooltest-workspaceTravisExample.xcworkspace-schemeTravisExampleTests-sdkiphonesimulatorONLY_ACTIVE_ARCH=NO
这要这些命令在当地能一般事情,我们就能够把他们增加到.travis.yml文件里:
language:objective-c
script:
&ndash;xctool-workspaceTravisExample.xcworkspace-schemeTravisExample-sdkiphonesimulatorONLY_ACTIVE_ARCH=NO
&ndash;xctooltest-workspaceTravisExample.xcworkspace-schemeTravisExampleTests-sdkiphonesimulatorONLY_ACTIVE_ARCH=NO
今朝我们所增加的设置已充足编译一个框架类的使用。我们可以包管项目能够一般编译并经由过程测试。但关于真实的iOS使用来讲,我们但愿在实在的物理设备长进行测试。很明显,我们要借助Travis来帮我们主动部署。全部历程的第一步,我们必要给我们的使用署名。
使用署名
为了在Travis中给我们的使用署名,我们必要筹办好一切需要的证书和设置文件。就像每一个iOS开辟职员晓得的那样,这多是最坚苦的一步。前面我们将写一些剧本来匡助我们在服务器上给使用署名。
证书和设置文件

  • 苹果环球开辟者干系认证
从苹果的设置页面中下载大概从你的Keychain中导出,将它保留到你的项目目次下scripts/certs/apple.cer这个地位。
2.iPhone公布证书+私钥
假如你还没有一个iPhone公布证书你必要创立一个。上岸你的苹果开辟者账号,你能够跟从上面的步骤创立一个临盆情况的新证书(Certificates>Production>Add>AppStoreandAdHoc)。确保你已下载并安装了这个证书。今后你能够在你的Keychain中找到它,另有一个绑缚的私钥。如今翻开你Mac上的Keychain使用:

<br>
右击证书选择导出将其放在scripts/certs/dist.cer路径,在导出绑缚的私钥,保留到scripts/certs/dist.p12。能够依据你的必要设置一个暗码。
Travis必要晓得你的私钥暗码,我们必要将其贮存在某个中央。明显我们不想用复杂的文原本存储这个暗码。我们能够使用Travis的平安情况变量。翻开终端进进包括.travis.yml文件的目次。起首用geminstalltravis命令安装Travisgem。安装完成后你就能够用以下命令增加暗码:
travisencrypt“KEY_PASSWORD={password}”&ndash;add
如许就能够安装一个叫做KEY_PASSWORD的加密情况变量到你的.travis.yml设置文件。在任何能够被TravisCI实行的剧本中都可使用这个变量。
3.iOS挪动设备存案文件(公布用)
假如你还没有一个公布用的挪动设备存案文件。依据你的开辟者账号范例,你能够选择AdHoc大概InHouse两种分歧的存案文件(ProvisioningProfiles>Distribution>Add>AdHocorInHouse).下载将其保留到scripts/profile/目次下。
我们必要在Travis中会见此存案文件,以是我们必要将此文件的名字存储为一个全局变量。比如我们能够将其定名为TravisExample_Ad_Hoc.mobileprovision,像如许增加:

1
2
3
4
5

env:
global:
-APP_NAME="TravisExample"
-DEVELOPER_NAME="iPhoneDistribution:{your_name}({code})"
-PROFILE_NAME="TravisExample_Ad_Hoc"



这里另有两个声明的全局变量。APP_NAME一般指的就是你的项目主target的名字。DEVELOPER_NAME里是你在项目主target下XcodeBuildSettings中CodeSigningIdentity>Release内里看到的名字。最初搜刮一下你使用的AdHoc大概InHouse设置文件,将个中的黑体笔墨全体往失落。依据你设置的分歧,在一些属性的方括号内里大概不会有任何信息。
加密证书和存案文件
不外你的GitHub权限是公然的。你大概会想要给你的证书和存案文件加密,由于他们包括了你使用的主要信息。假如你利用的是一个公有目次,你能够跳过这一大节。
起首我们必要想出一个暗码来加密我们一切的文件。鄙人面的例子中,我们利用foo这个单词,你完整能够将其交换为利用于你项目标更平安的暗码。在命令行中必要利用openssl来加密这些敏感文件:

1
2
3

opensslaes-256-cbc-k"foo"-inscripts/profile/TravisExample_Ad_Hoc.mobileprovision-outscripts/profile/TravisExample_Ad_Hoc.mobileprovision.enc-a
opensslaes-256-cbc-k"foo"-inscripts/certs/dist.cer-outscripts/certs/dist.cer.enc-a
opensslaes-256-cbc-k"foo"-inscripts/certs/dist.p12-outscripts/certs/dist.cer.p12-a



如许能够创立.enc后缀的加密版本证书和设置文件。如今你能够删除大概疏忽那些原始文件。可是有一点万万不要提交未加密的证书与设置文件,不然它们会呈现在GitHub上。假如你不当心如许做了,立即往追求匡助。
如今我们的文件都已加密,我们必要告知Travis怎样解密。以是我们必要供应解密的暗码,利用之前创立KEY_PASSWORD变量一样的体例:
travisencrypt“ENCRYPTION_SECRET=foo”&ndash;add
Lastly,wehavetotellTraviswhichfilestodecrypt.Addthefollowingcommandstothebefore-scriptphaseinthe.travis.yml:
最初我们必要告知Travis那些文件必要解密。在.travis.yml文件的before-script阶段增加以下命令:

1
2
3
4

before_script:
-opensslaes-256-cbc-k"$ENCRYPTION_SECRET"-inscripts/profile/TravisExample_Ad_Hoc.mobileprovision.enc-d-a-outscripts/profile/TravisExample_Ad_Hoc.mobileprovision
-opensslaes-256-cbc-k"$ENCRYPTION_SECRET"-inscripts/certs/dist.p12.enc-d-a-outscripts/certs/dist.p12
-opensslaes-256-cbc-k"$ENCRYPTION_SECRET"-inscripts/certs/dist.p12.enc-d-a-outscripts/certs/dist.p12



如今你在GitHub上的都是平安的了,Travis能够一般的读取利用它们。可是另有一个平安成绩你必要晓得:在Travis的编译日记里大概会显现出解密的暗码,不外对pull哀求来讲不会呈现。
增加剧本
如今我们必要确保一切的证书都导进到TravisCI的钥匙串中。这一步我们必要在scripts文件夹上面增加一个新的文件add-key.sh:

1
2
3
4
5
6
7

#!/bin/sh
securitycreate-keychain-ptravisios-build.keychain
securityimport./scripts/certs/apple.cer-k~/Library/Keychains/ios-build.keychain-T/usr/bin/codesign
securityimport./scripts/certs/dist.cer-k~/Library/Keychains/ios-build.keychain-T/usr/bin/codesign
securityimport./scripts/certs/dist.p12-k~/Library/Keychains/ios-build.keychain-P$KEY_PASSWORD-T/usr/bin/codesign
mkdir-p~/Library/MobileDevice/ProvisioningProfiles
cp./scripts/profile/$PROFILE_NAME.mobileprovision~/Library/MobileDevice/ProvisioningProfiles/



这里我们创立了一个新的一时keychain叫做ios-build,个中包括了一切的证书。注重这里我们利用$KEY_PASSWORD来导进私钥。在最初一步,存案文件会拷贝到Library文件夹。
在创立这个文件后,确保赐与它可实行的权限。在命令行里输出chmoda+xscripts/add-key.sh。上面一切的剧本都必要实行这一步。
如今一切的证书和设置文件都已停当我们能够入手下手给我们的使用署名。注重必定要先编译使用再给其署名。因为我们必要晓得编译好的二进制文件的地位,我保举在编译命令中利用OBJROOT和SYMROOT这两个变量。别的,我们应当把SDK设置为iphoneos,configuration项改成Release。
xctool-workspaceTravisExample.xcworkspace-schemeTravisExample-sdkiphoneos-configurationReleaseOBJROOT=$PWD/buildSYMROOT=$PWD/buildONLY_ACTIVE_ARCH=NO
运转这个命令,你会发明使用编译后的二进制文件呈现在build/Release-iphoneos文件夹上面。如今我们可使用以下的剧本给使用署名和打包。

<p>1
2
3
4
5
6
7
8
9
10
11
12
13
14

#!/bin/sh
<p>if
愤怒的大鸟 该用户已被删除
沙发
发表于 2015-1-21 11:49:12 | 只看该作者
同很多iOS开发者一样,我也是通过培训进入到iOS开发这个行业,开始没有打算培训,只准备自己学习一些计算机编程相关的知识,毕业时找一份编程相关工作(本人是信息与计算科学这个专业,是数学系)。
若相依 该用户已被删除
板凳
发表于 2015-1-24 19:46:38 | 只看该作者
我也从简单的状态栏适配开始,先研究了下关于状态栏的适配,特总结如下,供广大网友一起讨论交流。
不帅 该用户已被删除
地板
发表于 2015-1-30 08:45:28 | 只看该作者
down下code4app网站的每个分类的代码挨着看
金色的骷髅 该用户已被删除
5#
发表于 2015-2-15 21:33:04 | 只看该作者
然而,在vmware软件环境下,安装Mac OS X操作系统也是一件非常复杂的事情,而且还有可能花费了大量时间,最后却跑不起来。笔者也是经过了大量的实践,
山那边是海 该用户已被删除
6#
发表于 2015-2-26 11:17:09 | 只看该作者
其次学习方法和学习心态很重要,在学习当中应该保持一颗良好的心态。应该借鉴别人好的学习方法,大家互相帮助,取长补短。
海妖 该用户已被删除
7#
发表于 2015-3-1 01:46:47 | 只看该作者
开始的时候甚至想放弃,不过想想自己的未来,只能咬牙坚持,课下就不停的缠着老师。放学就补基础,这些基础的东西没有速成的,只有刻苦努力。我是后来发现的,转变自己的心态,不要读书看资料当成一种痛苦
灵魂腐蚀 该用户已被删除
8#
发表于 2015-3-5 10:16:39 | 只看该作者
特别是在校的学生,都存在一个小小的尴尬——虽然学习iOS开发的热情高涨,但由于没有多余的银子购买昂贵的Mac电脑而踟蹰不前。其实,针对初学者,如果想进入iOS开发的天地
老尸 该用户已被删除
9#
发表于 2015-3-12 04:00:51 | 只看该作者
然而,在vmware软件环境下,安装Mac OS X操作系统也是一件非常复杂的事情,而且还有可能花费了大量时间,最后却跑不起来。笔者也是经过了大量的实践,
谁可相欹 该用户已被删除
10#
发表于 2015-3-19 17:53:15 | 只看该作者
其次学习方法和学习心态很重要,在学习当中应该保持一颗良好的心态。应该借鉴别人好的学习方法,大家互相帮助,取长补短。
因胸联盟 该用户已被删除
11#
发表于 2015-3-27 09:10:40 | 只看该作者
重要的是,放眼全球也的确找不到第二个如苹果iOS平台这样健壮、完整、先进而且为开发者带来真实收益的开发平台来。
若天明 该用户已被删除
12#
发表于 2015-3-27 12:16:59 | 只看该作者
学习ios没什么捷径,关键在于多动手敲,曾看到前辈开玩笑说怎么快速学会某技术,答案是:“提高打字速度,快点写代码就能快点学会了”。
深爱那片海 该用户已被删除
13#
发表于 2015-4-6 17:03:13 | 只看该作者
在百度搜索你想要了解的类名(苹果的cocoa和cocoatouch框架的类名很有特点很容易搜到,前缀都是NS or UI),看别人写的博客详解
14#
 楼主| 发表于 2015-4-6 22:09:59 | 只看该作者
在百度搜索你想要了解的类名(苹果的cocoa和cocoatouch框架的类名很有特点很容易搜到,前缀都是NS or UI),看别人写的博客详解
飘灵儿 该用户已被删除
15#
发表于 2015-4-7 20:39:26 | 只看该作者
中国如今已然发展成为一个软件大国,软件人才的数量跃居全球之首。当然,在苹果平台的开发领域,也保持了相当强劲的发展势头。然而,很多初入iOS开发门槛的开发者,
分手快乐 该用户已被删除
16#
发表于 2015-4-13 22:15:12 | 只看该作者
首先是基础,在汉昌的课程非常全面。从object—c到最后的毕业项目,基本上方方面面都涉及到了,我是一名非计算机专业的学生,起初学习还有点吃力,因为基础知识薄弱。经常像听天书
变相怪杰 该用户已被删除
17#
发表于 2015-4-16 01:12:16 | 只看该作者
培训的时候很痛苦,每天要待12个小时,上午讲课,下午和晚自习解决作业,看文档,学习的时候感觉就是资料太少,而且看着资料也不明所以,非常痛苦,
小魔女 该用户已被删除
18#
发表于 2015-4-23 15:43:01 | 只看该作者
从C语言入门,因为IOS开发用的是OC语言,是在C基础上的,不过也跟C不是很搭界,你可以直接学习OC语言也可以,
莫相离 该用户已被删除
19#
发表于 2015-4-24 12:19:56 | 只看该作者
AD: iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-2 04:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表