当前位置:首页 » 编程软件 » cocoapods管理编译速度

cocoapods管理编译速度

发布时间: 2022-09-28 04:40:10

❶ ios cocoapods 工程怎么调试静态库

创建静态库,有2种方法:
1.不基于pod手动创建(deprecated)
过程比较繁琐,纯体力活不推荐,大体步骤说下
在Xcode中创建一个Cocoa Touch Static Library;
创建Podfile文件;
执行pod install完成整个项目的搭建;
如果需要demo,手动创建示例程序,使用pod添加对私有静态库的依赖,重复执行pod install完成示例项目的搭建。
2.基于pod自动创建
只需要输入pod的lib命令即可完成初始项目的搭建,下面详细说明具体步骤,以BZLib作为项目名演示。
1.执行命令pod lib create BZLib。在此期间需要确认下面4个问题。
Would you like to provide a demo application with your library? [ Yes / No ]
yes
Which testing frameworks will you use? [ Specta / Kiwi / None ]
Kiwi
Would you like to do view based testing? [ Yes / No ]
No
What is your class prefix?
BZ

第一个问题询问是否提供一个demo项目,通常选择Yes,其他的可以根据需要选择。命令执行完后,就会创建好一个通过cocoapods管理依赖关系的基本类库框架。
2.打开BZLib.podspec文件,修改类库配置信息,结果像这样。
Pod::Spec.new do |s|
s.name = "BZLib"
s.version = "0.1.0"
s.summary = "A short description of BZLib."
s.description = <<-DESC
An optional longer description of BZLib

* Markdown format.
* Don't worry about the indent, we strip it!
DESC
s.homepage = "https://github.com/<GITHUB_USERNAME>/BZLib"
# s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2"
s.license = 'MIT'
s.author = { "brycezhang" => "[email protected]" }
s.source = { :git => "https://github.com/<GITHUB_USERNAME>/BZLib.git", :tag => s.version.to_s }
# s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

s.platform = :ios, '6.0'
s.requires_arc = true

s.source_files = 'Pod/Classes/**/*.{h,m}'
s.resource_bundles = {
'BZLib' => ['Pod/Assets/*.png']
}

s.public_header_files = 'Pod/Classes/**/*.h'
s.frameworks = 'MobileCoreServices', 'CFNetwork', 'CoreGraphics'
s.libraries = 'z.1'
s.dependency 'YSASIHTTPRequest', '~> 2.0.1'
end

按照默认配置,类库的源文件将位于Pod/Classes文件夹下,资源文件位于Pod/Assets文件夹下,可以修改s.source_files和s.resource_bundles来更换存放目录。s.public_header_files用来指定头文件的搜索位置。
s.frameworks和s.libraries指定依赖的SDK中的framework和类库,需要注意,依赖项不仅要包含你自己类库的依赖,还要包括所有第三方类库的依赖,只有这样当你的类库打包成.a或.framework时才能让其他项目正常使用。示例中s.frameworks和s.libraries都是ASIHTTPRequest的依赖项。
podspec文件的详细说明可以看Podspec Syntax Reference。
3.进入Example文件夹,执行pod install,让demo项目安装依赖项并更新配置。
localhost:Example bryce$ pod install --no-repo-update
Analyzing dependencies
Fetching podspec for `BZLib` from `../`
Downloading dependencies
Installing BZLib 0.1.0 (was 0.1.0)
Using Kiwi (2.3.1)
Installing Reachability (3.2)
Installing YSASIHTTPRequest (2.0.1)
Generating Pods project
Integrating client project

4.添加代码。因为是示例,只简单封装一下GET请求。
添加BZHttphelper类,注意文件存放的位置在Pod/Classes目录下,跟podspec配置要一致。
运行Pod install,让demo程序加载新建的类。也许你已经发现了,只要新增加类/资源文件或依赖的三方库都需要重新运行Pod install来应用更新。
编写代码。示例代码很简单,创建了一个GET请求的包装方法。
#import "BZHttphelper.h"
#import <YSASIHTTPRequest/ASIHTTPRequest.h>

@implementation BZHttphelper

- (void)getWithUrl:(NSString *)url withCompletion:(void (^)(id responseObject))completion failed:(void (^)(NSError *error))failed
{
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:url]];
__weak ASIHTTPRequest *weakrequest = request;
[request setCompletionBlock:^{
NSString *responseString = [weakrequest responseString];
completion(responseString);
}];

[request setFailedBlock:^{
NSError *error = [weakrequest error];
failed(error);
}];
[request start];
}

@end

demo项目中调用测试。
#import "BZViewController.h"
#import <BZLib/BZHttphelper.h>

@interface BZViewController ()
{
BZHttphelper *_httpHelper;
}
@end

@implementation BZViewController

- (void)viewDidLoad
{
[super viewDidLoad];
_httpHelper = [BZHttphelper new];
[_httpHelper getWithUrl:@"http://wcf.open.cnblogs.com/blog/u/brycezhang/posts/1/5" withCompletion:^(id responseObject) {
NSLog(@"[Completion]:%@", responseObject);
} failed:^(NSError *error) {
NSLog(@"[Failed]:%@", error);
}];
}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

@end

成功打印,调用成功!
2014-11-23 16:52:23.946 BZLib[6329:96133] [Completion]:<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">

❷ iOS 的自动构建流程

用来打包做类似事情的工具很多,更主要的是为什么使用自动构建:

• 效率上,解放出开发人员的时间。也更方便其他同事使用。

• 保证打包的标准,避免配置或环境问题,带来的失败。把事情做对,比做快更重要。

• 权限安全上,通过构建系统集中管理,对于使用者来说是一个黑盒。

• 项目流程上,便于有需求时做 Daily Build 或者 自动测试。

对于 如何安装 Jenkins 或者 Jenkins 参数配置 之类的基本配置不做涉及。

网上已经有不少详细的文章进行介绍。比如 手把手教你利用Jenkins持续集成iOS项目 https://www.jianshu.com/p/41ecb06ae95f 。

先介绍整体的构建流程,具体的内容会在下面分步骤介绍.

构建前

• 设置构建名

• 配置 app 图标水印(build号,分支)

• ruby 脚本根据参数,修改工程 bundleID ,宏等

• 安装第三方依赖,pod update

执行构建

• xcodebuild clean

• xcodebuild archive

• xcodebuild exportArchive

构建完成

上传分发平台: 蒲公英/fir/appstore(历史版本记录: git tag )

• 符号表处理:上传 bugly

• 归档产物: 上传 FTP 服务器

• 清理: 删除 IPA 等

• 设置构建描述

• 通知: 企业微信 webhook 机器人推送

首先设置我们的构建名称,我这里使用到几个参数:

• BUILD_NUMBER ,Jenkins 自带的参数,代表第几次构建

• BetaPlatform ,设置的选项参数,代表分发平台。我这里的值分别是:fir,pgyer,appstore

• Mode,设置的选项参数,代表 Xcode 构建的环境设置,为 Snapshot 和 Release

• Branch,Jenkins 自带的参数,代表 Git 分支名称

为了打包后进行测试的 APP ,便于定位问题,可以在 App Logo 上打上水印,加入构建使用的 git 分支名,jenkins 构建号,app 版本号 等关键信息。

配置图标水印的流程为:

• 判断此次是否为 appstore 分发平台。如果是 appstore 的话,将旧有的图标目录清理掉,然后将图标复制到使用的目录中。

• 如果不是 appstore ,则为测试平台分发,进行水印处理。

因为要使用替换资源的方式,所以准备两个目录。

一个目录作为 源目录,存放未处理的图片。一个目录作为目标目录,存储 App Logo 使用的图片。

为什么使用两个图片目录存储?假设只用一个,原图为A,当第一次处理,图片为 A1水印图片,当第二次再拿到的图片,已经是被处理过的 A1水印图片了,而不是原图A 。

这里注意 icons_path 为存放原图的地址, icons_dest_path 为要修改使用的目标路径。命名为 AppIcon-Internal。

可以参考 iOS APP图标版本化 https://www.jianshu.com/p/a37e114b7e66

关于 version 的获取, 因为目前版本有改动,使用 ruby 去获取,脚本会在后面提供链接:

还有一个临时存放路径,要提前创建好这个文件夹:

添加水印主要使用到了命令行工具 ImageMagick ,所以要先安装:

具体的脚本如下:

这里使用 ruby 实现参数修改(当然也可使用 python 等各种语言,自己方便就 OK )。

目前做的操作:

• 区分是否 beta 版本 -- 修改定义 beta 宏 的真假值

• 不同分发平台,使用不同 bundleID -- 对 bundleID 进行修改

脚本里依靠 CocoaPods 开源的 Xcodeproj ,对工程的 name.xcodeproj/project.pbxproj 文件进行配置修改。

python 的话,可以使用这个项目 mod-pbxproj

安装/更新第三方库,这里使用到的是 Cocoapods,其它的包管理器可使用其它方式。

在开始之前,我们要做些准备工作,比如设置要使用的变量,常量。

需要提前写好,尽量避免散落。

旧有的方式,是直接通过 info.plist 取:

然而在新的 Xcode 取 版本号 和 bundleID 的方式发生变化,现在 info.plist 里的值是变量名,取版本号为 $(MARKETING_VERSION) , bundleID 为 $(PRODUCT_BUNDLE_IDENTIFIER) .

结局思路是通过脚本到工程配置里去获取,下面使用 ruby 实现了这两个目的。

我们将 App 与 Jenkins 的 build number 设置为同一个,方便需要时,查看构建的参数以及符号表等:

加入 security 解锁操作的原因,是在子节点 ssh 登录上去之后,keychain 没有被解锁.导致打包失败.
解决方案是用 security unlock-keychain 命令将证书解锁。

另外可以通过命令查看描述文件的详细信息 包括UUID等信息

对工程进行构建打包,主要在于使用 Xcodebuild .
分为三个阶段:

• Clean

• Archive

• Export

如果在执行过程中又不喜欢日志输出的,可以在命令行最后加上

每次构建时,对工程进行 clean ,保证没有其它影响的因素。
使用xcodebuild clean [-optionName]...清除编译过程生成文件,使用如下:

非 cocoapods 的工程,将 -workspace "${APP_NAME}.xcworkspace" 换成 -project ${APP_NAME}.xcodeproj 即可。
新版本的 Xcode 有了新的构建系统,使用 -UseModernBuildSystem= 来做新旧区分。

Xcodebuild archive

更新到Xcode9.0后,之前写的自动打包脚本不可用了。

需要添加 -allowProvisioningUpdates,获取访问钥匙串权限的关键所在,设置了这个字段就会在打包过程弹框请求获取钥匙串内容权限。

特别说明的是,exportOptionsPlist 一定要检查,不同的环境和分发平台要选择对。

最简单方式,就是调好需要的环境后,直接手动 archive ,export 出来,使用产物里的 exportOptionsPlist 文件。

检查对应路径是否有 **.ipa 文件:

这里分为 蒲公英,fir,appstore 三个平台,上传 IPA.

下面使用的三个上传命令,最好先提前在机器上实验可以正常用再构建。

上传 bugly

进行完所有操作后,对于产物做一次保存,需要时可以用上。

首先将文件压缩

通过 FTP 插件,把 zip 文件上传到归档的路径下

删除 IPA 等文件,注意的是,当状态为 success 才清理,避免有时上传出问题,可以进行手动上传。

设置构建描述

完成后,企业微信 webhook 机器人推送,效果如下:

这里设置成可选项,避免频繁打扰其它同事。脚本如下:

[1] https://juejin.im/post/6844903843994533896
[2] https://www.cnblogs.com/zhou--fei/p/11371019.html
[3] https://www.jianshu.com/p/4f4d16326152
[4] https://www.jianshu.com/p/f50053d50436
[5] https://dengweijun.com/2018/12/26/Xcode%E8%87%AA%E5%8A%A8%E6%89%93%E5%8C%85%E9%82%A3%E4%BA%9B%E4%BA%8B/

❸ xcode Cocoapods 编译问题

选中Zxing的target,然后build

❹ iOS中如何提高上传大文件的效率

一个适当的插件架构可以意味着一个完全不同的IDE。Sublime Text和TextMate就是很好的例子。你知道Xcode也支持插件吗?如果你不这样做我也不会感到吃惊,苹果并没有把太多精力投入到广告Xcode中的这一部分。事实上,很少有文献可用于为Xcode创建插件。

幸运的是,这并未能阻止开发者为Xcode开发插件。有着广泛的插件使得Xcode上的工作更加轻松和愉快,填补了苹果留下的空白领域。在这个快速贴士,我会告诉你一些我每天使用的插件。
Alcatraz
安装Xcode插件通常是挺痛苦的,但用了Alcatraz就不再如此了。今年早些时候,Alcatraz达到一个重要的里程碑,1.0,现在它和Xcode5兼容了。如果你还没有安装Alcatraz呢,那我鼓励你先这样做。
1XcodeColors
XcodeColors是Robbie Hanson开发的一个插件,给Xcode的控制台增加了颜色。这个插件与CocoaLumberjack组合特别好用,那是一个很棒的日志库,也是Robbie写的。这种组合一直是我多年来真正的救星,它让调试更轻松更好,并色彩缤纷。

2XToDo
这个插件不仅凸显TODO,FIXME,???,以及!!!注释,也在便利列表呈现他们。

3Backlight
一些插件可能看起来微不足道或者很简单,但如果你认同他们的价值就太棒了。Backlight是这样的一个插件。它所做的一切,就是突出显示当前正在编辑的行。很简单,也很有用。

4CocoaPods
CocoaPods是事实上的iOS和OS X开发的依赖管理器。如果你不曾使用CocoaPods,那我鼓励你尝试一次。十分钟内本教程可以让你上手。

Xcode还有一个CocoaPods的插件,这使得整合CocoaPods更容易。该CocoaPods的插件增加了一个CocoaPods菜单到Xcode的产品菜单。如果你不喜欢命令行,那么你一定会喜欢这个插件。

5 ACCodeSnippetReposito
像管理Xcode的插件一样,在Xcode里管理代码段是不容易的。Arnaud Coomans分享了这个意见,并创建了一个漂亮的插件,用Git仓库来同步Xcode的代码片段。

美妙之处在于,你已经在Xcode手动添加的代码片段是不会被改变的。从Git仓库导入代码片段只需要点击几下。要备份你的代码片段,这样也是一个聪明的方法,或者如果您使用多台机器,这给了它们一个中心位置。

6GitDiff
图形用户界面使git对开发者不显得那么吓人了。而像Tower和SourceTree这样的程序是伟大的,我常常想知道我目前工作的文件中有什么改变,在Xcode的代码编辑器。这个GitDiff插件,使这一切成为可能,多么伟大。

它是Xcode的代码编辑器的一个微妙的补强,加上了足够的可见信息以了解上次提交以来发生了什么变化。

7KSImageNamed
自动完成是很大的,特别是如果你正在写Objective-C。如果Xcode能自动完成文件名难道不会很伟大吗?比如图像文件的名称。
Kent Sutherland创建的KSImageNamed插件正是这么做的。它不仅将节省您的时间,这将确保错别字是过去的事情了。

8Peckham
添加import语句有时候挺让人讨厌的。如果您需要导入一个pod的头文件,例如,然后Xcode的自动完成功能不会为你工作。Peckham插件解决了这个问题。

按Command-Control-P,输入您要查找的头文件的几个字母,在插件给出的选项列表中选择它。这是一个伟大的对Xcode的自动完成功能的补强。

9FuzzyAutocomplete
说到自动完成的,大多数iOS和OS X开发者已经开始依赖于Xcode的强大的自动完成功能。然而,Xcode的实现自动完成还不完美,你并不总是给出你所期望或想要的建议。

Jack Chen和Leszek Ślażyński已经创造了FuzzyAutocomplete插件来替代之。它利用Xcode用于其快速打开的算法,这在模式匹配方面做得很出色。它工作得非常,非常好。

10Xcode的Dash
Dash是一个用于浏览文档的了不起的软件。我每天都用它。我更喜欢的是它的集成到Xcode,感谢它的Xcode插件。你可能yij知道,你可以按住Option键单击Xcode的编辑器中的符号去跳到文档。不过,我不是Xcode的文档浏览器的忠实粉丝,而这也正是Dash插件工作的地方。

该插件打开Xcode的文档浏览器,而不是Dash,如果你按住Option键点击符号。不仅是Dash速度非常快,它也集成了CocoaDocs。例如,如果你按住Option键点击AFNetworking库的方法,那么Dash将显示该方法的文档。我爱这个功能。

❺ iOS开发~CocoaPods最新使用详细说明

一、概要
iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods)可以用来方便的统一管理这些第三方库。

二、安装
CocoaPods是用Ruby实现的,要想使用它首先需要有Ruby的环境。幸运的是OS X系统默认已经可以运行Ruby了,因此我们只需执行以下命令:
注:身在天朝的我们经常被墙在国内,程序员看不翻出去看看的话永远不知道外边的世界是多么的精彩。为了下载速度,我们得换镜像(用淘宝的镜像去安装)

$ gem sources -l
$ gem sources --remove https://rubygems.org/ <span class="comment">//移除自带的镜像</span>
$ gem sources -a https://ruby.taobao.org/
$ gem sources -l // 查看本地的镜像是不是换成淘宝的了
最后,执行下面的命令,如果网络畅通的话就大功告成了(安装的时候,会让你输入你的mac的密码,输入后,按Enter键。注:你要是不知道密码的话,试试123 ,或许有奇迹哦)

gem install cocoapods
至此安装就完成了,我们可以尝试搜索一个第三方类库:

pod search AFNetworking
你会发现搜出git上的跟它相关的信息

三、使用
使用CocoaPods的第一步,是在当前项目下,新建一个Podfile文件:

touch Podfile
然后利用vim打开Podfile文件编辑,加入你想要使用的类库,格式如下:

vim Podfile //打开文件
输入:
<pre name="code" class="ruby"><pre><span style="font-family:'courier new', courier;font-size:12px;"><span style="color:#000000;">platform :ios</span></span>

pod 'AFNetworking', '~> 2.3.1'

输入完上面的东西后,先按esc停止编辑,再按:号,输入wq,点enter键。(创建完成)

最后一步,执行命令:

pod install
当终端出现类似下面的提示后,就代表成功了:

[!] From now on use `XXXXX.xcworkspace`.

注:

关于Podfile文件编辑时,第三方库版本号的各种写法:

pod ‘AFNetworking’ //不显式指定依赖库版本,表示每次都获取最新版本
pod ‘AFNetworking’, ‘2.0’ //只使用2.0版本
pod ‘AFNetworking’, ‘>2.0′ //使用高于2.0的版本
pod ‘AFNetworking’, ‘>=2.0′ //使用大于或等于2.0的版本
pod ‘AFNetworking’, ‘<2.0′ //使用小于2.0的版本
pod ‘AFNetworking’, ‘<=2.0′ //使用小于或等于2.0的版本
pod ‘AFNetworking’, ‘~>0.1.2′ //使用大于等于0.1.2但小于0.2的版本,相当于>=0.1.2并且<0.2.0
pod ‘AFNetworking’, ‘~>0.1′ //使用大于等于0.1但小于1.0的版本
pod ‘AFNetworking’, ‘~>0′ //高于0的版本,写这个限制和什么都不写是一个效果,都表示使用最新版本

❻ 使用pod打开xcodeproj为什么报错

一、什么是CocoaPods
CocoaPods是iOS项目的依赖管理工具,该项目源码在Github上管理。开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省设置和第三方开源库的时间。
在使用CocoaPods之前,开发项目需要用到第三方开源库的时候,我们需要
1.把开源库的源代码复制到项目中
2.添加一些依赖框架和动态库
3.设置-ObjC,-fno-objc-arc等参数
4.管理他们的更新
在使用CocoaPods后,我们只需要把用到的开源库放到一个名为Podfile的文件中,然后执行pod install.Cocoapods就会自动将这些第三方开源库的源码下载下来,并且为我们的工程设置好响应的系统依赖和编译参数。
二、CocoaPods的原理
CocoaPods的原理是将所有的依赖库都放到另一个名为Pods的项目中,然后让主项目依赖Pods项目,这样,源码管理工作都从主项目移到了Pods项目中。Pods项目最终会编译成一个名为libPods.a的文件,主项目只需要依赖这个.a文件即可。
三、CocoaPods的安装
CocoaPods可以方便地通过Mac自带的RubyGems安装。
打开Terminal,然后键入以下命令:
$ sudo gem install cocoapods
执行完这句如果报告以下错误:
ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - Errno::ETIMEDOUT: Operation timed out - connect(2) (https://rubygems.org/latest_specs.4.8.gz)
ERROR: Possible alternatives: cocoapods
这是因为ruby的软件源rubygems.org因为使用亚马逊的云服务,被我天朝屏蔽了,需要更新一下ruby的源,过程如下:
$ gem sources -l (查看当前ruby的源)
$ gem sources --remove https://rubygems.org/
$ gem sources -a https://ruby.taobao.org/
$ gem sources -l
如果gem太老,可以尝试用如下命令升级gem
$ sudo gem update --system
升级成功后会提示: RubyGems system software updated
然后重新执行安装下载命令
$ sudo gem install cocoapods
这时候应该没什么问题了
接下来进行安装,执行:
$ pod setup
Terminal会停留在 Setting up CocoaPods master repo 这个状态一段时间,是因为要进行下载安装,而且目录比较大,需要耐心等待一下.如果想加快速度,可使用cocoapods的镜像索引.(文章末尾附使用镜像索引的方法)

❼ Android有没有像类似于 IOS 的 cocoapods这样的包管理工具

每种语言发展到一个阶段,就会出现相应的依赖管理工具, 或者是中央代码仓库。比如

Java: maven,Ivy
Ruby: gems
Python: pip, easy_install
Nodejs: npm
随着iOS开发者的增多,业界也出现了为iOS程序提供依赖管理的工具,这个工具叫:CocoaPods。

CocoaPods简介

CocoaPods是一个负责管理iOS项目中第三方开源代码的工具。CocoaPods项目的源码在Github上管理。该项目开始于2011年8月12日,经过一年多的发展,现在已经超过1000次提交,并且持续保持活跃更新。开发iOS项目不可避免地要使用第三方开源库,CocoaPods的出现使得我们可以节省设置和更新第三方开源库的时间。

拿我之前开发的粉笔网iPhone客户端为例,其使用了14个第三方开源库。在没有使用CocoaPods以前,我需要:

把这些第三方开源库的相关文件复制到项目中,或者设置成git的submole,然后这些开源库通常需要依赖系统的一些framework,我需要手工地将这些framework一一增加到项目依赖中,比如ASI网络库就需要增加以下framework: CFNetwork, SystemConfiguration, MobileCoreServices, CoreGraphics and zlib。
对于RegexKitLite这个正则表达式库,我还需要设置-licucore的编译参数
手工管理这些依赖包的更新。
这些体力活虽然简单,但毫无技术含量并且浪费时间。在使用CocoaPods之后,我只需要将用到的第三方开源库放到一个名为Podfile的文件中,然后执行pod install。CocoaPods就会自动将这些第三方开源库的源码下来,并且为我的工程设置好相应的系统依赖和编译参数。

热点内容
迭代法编程c 发布:2025-05-15 04:58:01 浏览:814
用什么dns服务器地址快 发布:2025-05-15 04:52:59 浏览:26
手机端so反编译 发布:2025-05-15 04:50:55 浏览:610
linuxlamp安装 发布:2025-05-15 04:50:45 浏览:578
sqlplus缓存区怎么设置 发布:2025-05-15 04:50:44 浏览:858
shell脚本环境变量 发布:2025-05-15 04:45:18 浏览:693
安卓nba2k18什么时候出 发布:2025-05-15 04:38:42 浏览:393
王者安卓转苹果为什么显示失败 发布:2025-05-15 04:35:49 浏览:18
手机优酷缓存视频格式 发布:2025-05-15 04:13:45 浏览:210
公益电影分镜头脚本插画 发布:2025-05-15 04:08:37 浏览:961