位置: 主页 > 乐通088老虎机 >

使用 xcodegen 管理 iOS 项目,从此摆脱 xcodeproject

时间:70-01-01 08:00 来源:

本文我们将先容假如经由过程应用xcodegen,来更有效地来治理 iOS.xcodeproj文件。

那么问题来了,为什么我们要应用xcodegen,.xcodeprojects 到底有什么问题呢?

Xcode 应用项目文件.xcodeproj文件来绑缚 IDE 的源代码和资本。在大年夜多半环境下都能优越的事情,然则无意偶尔候它会裸露出一些毛病来:

在不合的分支上添加了源码文件或资本后无法确定文件是否精确,虽然说你可以手动去办理.xcodeproj文件中的合并冲突。

假如想要同步电脑上的文件夹布局或者项目中的group布局,我们每每是经由过程人工手动来抉择,这就难免会造成肴杂。幸运的是已经有对象可以来办理这个问题了,比如synx或xcodeproj gem的排序功能。

Xcode 只会在编译后才会提示你项目中存在文件的损掉。

编写依附关系并构建多个目标的脚本可能会变得异常麻烦。

xcodegen 简介

xcodegen是一个对象,它容许我们从名为project.yml的文件中的定义天生xcodeproj文件。因为xcodeproj文件可以随时天生,我们以致不必将它保存在我们的git中并且可以轻忽它。

以下是xcodegen的两个最紧张的功能:

可以经由过程这种要领为各类平台(iOS,tvOS,macOS,watchOS)定义各类 Xcode target(application,frameworks 等)。

它还容许将源文件的文件夹连接到目标,从而更轻易治理哪些源代码文件包孕在哪个目标中。

虽然xcodegen是一个刚出来不久的项目,但它已经可以做很多事了。接下来就让我们来体验xcodegen带来的快感吧~

安装xcodegen

经由过程homebrew安装xcodegen

brew install xcodegen

天生 APP 项目工程

首先,应用 Xcode 创建一个Single View AppiOS 利用法度榜样,以便得到项目起先所有必需的.m,.xcassets等文件。

现在我们经由过程应用project.yml文件来从新创建项目,关闭 Xcode 并在根目录中创建一个project.yml文件,输入以下内容:

name: XcodegenTest # The name of the Appoptions: # Some general settings for the projectcreateIntermediateGroups: true # If the folders are nested, also nest the groups in XcodeindentWidth: 2 # indent by 2 spacestabWidth: 2 # a tab is 2 spacesbundleIdPrefix: "de.number42"targets: # The List of our targetsXcodegenTest:type: applicationplatform: iOSdeploymentTarget: "10.3"sources:#Sources- path: XcodegenTest

然后,重命名现有的.xcodeproj(稍后我们可以用它来比较经由过程xcodegen天生的工程的效果是否一样)。

image

接着回到终端,并在项目根目录下输入敕令xcodegen并回车:

image

然后回到工程目录,打开刚天生的XcodegenTest.xcodeproj文件,见证事业的时候到了~,跑起来~cmd + run运行项目。“Ah, Build Successed” !,统统都跟之前 xcode 天生的.xcodeproj一样~

image

image

image

天生 TestTargets

在project.yml文件中添加如下代码:

XcodegenApp-iOS-Tests:type: bundle.unit-testplatform: iOSdeploymentTarget: "10.3"sources:- path: XcodegenTestTestsdependencies:- target: XcodegenTest

同样的先关闭 Xcode( Xcode 对照怪,假如在项目文件打开时去变动项目文件可能就会呈现莫名其秒的差错),在敕令行输入xcodegen从新天生.xcodeproj文件,然后打开工程,“看吧,你要的TestTargets出来了”,接着cmd + u跑来来。“Ah, Build Successed ~,统统尽在掌控之中~”。

image

添加UI Tests跟上面的操作一样,同样地在project.yml文件中添加如下代码,然后关闭 xcode, 从新天生.xcodeproj:

XcodegenApp-iOS-UITests:type: bundle.ui-testingplatform: iOSsources:- path: XcodegenTestUITestsdependencies:- target: XcodegenTest

如上,便是经由过程xcodegem来天生TestTargets的历程~

天生 Framework 工程

在 Xcode 中掩护子模块老是有点麻烦。应用xcodegen可以轻松将模块化引入您的利用法度榜样。

接下来我们将先容若何做到这一点,创建一个XcodegenAppFramework,此中包孕经典的动物种类:

1)在根目录下创建XcodegenAppFramework目录

2)创建Animal .h/.m,添加如下内容

//Animal.h

import

@interface Animal : NSObject

(void)sayHellow;

(NSString *)helloTipTrick;

@end

//Animal.m

import "Animal.h"

import

@implementation Animal

(void)sayHellow {

NSLog(@"Hello iOS Trick");

}

(NSString *)helloTipTrick {

return @"关注 "iOS开拓技巧栈" ,看奇技淫巧";

}

@end

3)在XcodegenAppFramework目录下添加Info.plist文件,并输入响应内容。

⚠️:因为 Info.plist 文件内容过长,在此就不列出该文件的内容了,完备的 Info.plist 内容可以关注微信"民众,"号 “ iOS 开拓技巧栈” 回覆关键字 xcodegen 得到。

4)为XcodegenAppFramework添加project.yml

XcodegenAppFramework:type: frameworkplatform: iOSdeploymentTarget: "10.3"sources:- path: XcodegenAppFramework

5)为XcodegenTest添加依附

dependencies:- target: XcodegenAppFramework

关闭 xcode,回到敕令行从新输入xcodegen回车,从新天生.xcodeproj,“Build Successed~”,然则等等,到今朝为止,什么也没发生?

ok,接下来让我们来看看能否跟寻常一样应用XcodegenAppFramework。

6)导入XcodegenAppFramework,在 ViewController 类中添加如下代码:

#import - (void)viewDidLoad {[super viewDidLoad];[Animal sayHellow];self.messageLabel.text = [Animal helloTipTrick];}

接着CMD + R让 Demo 跑起来,统统竟然都跟曩昔的要领一样~

应用依附治理对象

xcodegen 可以为每个 target 声明一个或多个依附项。

Cocoapods

就跟日常平凡应用 podfile 一样。在project.yml中不必要引用pod本身。应用xcodegen天生项目后,只需运行 pod install,它将自动把项目集成并创建 workspace。

Carthage

xcodegen让 Carthage 依附集成变得异常简单!

只需在 target 中引用它们,xcodegen会在需要时自动链接和嵌入 Carthage frameworks 来完成剩下的事情。下面我们将会经由过程 Carthage 导入Toast依附来演示这个操作:

1)安装 carthage

brew install carthage

2)创建一个Cartfile文件

3)添加以下内容

github "scalessec/Toast" ~> 4.0.0

4)carthage update --platform iOS

5)在project.yml的XcodegenTesttarget 依附中添加一下内容:

- carthage: Toast

6)关闭 Xcode ,并在敕令行中履行xcodegen敕令,打开项目,并输入如下代码,着末编译并运行项目,统统正常,完美~

#import [self.view makeToast:@"Hello iOS Trick" duration:1 position:CSToastPositionCenter];

图 Carthage 依附运行效果

image

如上,xcodegen的一些基础用法就先容到这了,当然xcodegen的功能远远不止这些,假如对xcodegen的更多内容感兴趣,请关注我们的"民众,"号iOS 开拓技巧栈,后面我们也会分享xcodegen的其他用法,敬请等候~

热门文章
最新文章

Copyright © 2002-2011 lt118乐通专用网站 版权所有