Xcode 相关
前段时间,swift5 的 ABI终于稳定了,为此自己升级了自己的 mac 系统,和最新的 Xcode,期间又久违的对 Xcode 进行了一遍配置,为了方便以后,暂记录一下用到的东西。
Xcode 代码块路径
Xcode 代码块的路径,每次更新代码块的时候都需要重新上网查一遍,太麻烦,所以记录一下
~/library/developer/xcode/userdata/codeSnippets
Xcode 使用 Vim
可以快速提高工作效率的神器,但是由于 Xcode8以后苹果就不在支持插件Xcode 的插件了,所以想要在 Xcode中使用 Vim需要费一番功夫,要先对 Xcode 进行签名,然后用到第三库开插件 XVim2实现需求,其github地址为:https://github.com/XVimProject/XVim2
对Xcode进行签名
- 关闭 Xcode
- 准备代码签名证书 XcodeSigner如图所示:
- 打开终端输入命令
sudo codesign -f -s XcodeSigner /Applications/Xcode.app
对 Xcode 进行签名,过程非常非常的缓慢,大概5-10min,慢慢等待签名成功即可
安装 XVim2插件
- 下载源码git clone https://github.com/XVimProject/XVim2.git
- 进入工程目录
- 使用命令
xcode-select -p
确认返回的 Xcode 路径是否正确,如果不正确,使用xcode-select -s
设置 - 在终端中使用
make
命令编译 XVim2工程,出现Build Succeeded
即为编译成功,中间可能会弹出提示信息,输入y
即可 - 打开 Xcode,提示是否加载 Xvim 插件,选择
Load Boundle
,如果不小心选择了skip Boundle
关闭 Xcode,输入该命令后重新选择defaults delete com.apple.dt.Xcode DVTPlugInManagerNonApplePlugIns-Xcode-[Xcode 版本号]
- 安装成功后可以在
Edit
中XVim
选择开启或关闭
Xcode10.1 控制台输出问题
升级 Xcode10.1以后控制台会打印多余的 log 信息,比如:
1
2
Failed to create synchronous remote object proxy: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service named com.apple.commcenter.coretelephony.xpc was invalidated.}
打开终端,输入一下命令可以解决:xcrun simctl spawn booted log config --mode "level:off" --subsystem com.apple.CoreTelephony
Carthage介绍
提起 iOS 的包管理工具,第一个想到的肯定是 cocoapods,但是我今天想介绍的是另一个开发工具 Carthage,相比 cocoapods 它更加的轻量级,而且可以大幅提升你开发时的编译速度!我们都知道 cocoapods的工作原理是将所有的第三方安装包放在一个工程目录下,这样我们有时候 Clean 了工程,或者切换编译模式,或者打包的时候都需要把第三方的框架代码都编译一遍,如果工程项目很大,用到的第三方库很多,编译速度就慢的惨不忍睹,于是在这样的背景下我认识了 Carthage,他以 framework 的形式管理第三方库,只需要在安装的时候编译一遍,以后都不用编译了!极大的提升了开发体验,而且由于工作原理,还可以和 cocoapods一起用哦,强烈推荐尝试使用。
安装Carthage
推荐使用 Homebrew 安装,运行命令brew install carthage
,喝一杯咖啡,等待它安装完成就好了,等到安装运行完成后,可以使用carthage version
确认一下是否安装成功,如果能打印出 carthage的版本号就是安装成功了
使用Carthage
使用命令cd [工程目录]
进入工程的根目录,然后创建一个配置文件Cartfile
,命令为:touch Cartfile
,这时候可以使用自己的记事本或者 Vim 打开该文件,在这里面写上你需要安装的第三方库,样例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
github "ReactiveCocoa/ReactiveObjC" >= 2.5
github "AFNetworking/AFNetworking" ~> 3.0
github "hackiftekhar/IQKeyboardManager"
#github "SDWebImage/SDWebImage"
github "CocoaLumberjack/CocoaLumberjack"
github "dzenbot/DZNEmptyDataSet"
github "ibireme/YYKit"
github "SVProgressHUD/SVProgressHUD"
github "banchichen/TZImagePickerController"
github "danielgindi/Charts" == 3.0.5
github "RamWire/NinaPagerView"
>= 2.5
:使用2.5或以上版本~> 3.0
:大于3.0-4.0之间的最新版本==3.0.5
:使用3.0.5版本- 如果什么都不写则使用最新版本
Cartfile
文件编辑完成后,打开终端,进入工程的根目录,运行命令:carthage update --no-use-binaries --platform iOS
或者 carthage update
安装第三方库,我个人更喜欢第一个命令,只会打包出 iOS 平台的相关 framework包, carthage的安装和 cocoapods 不太一样, cocoapods 只是将第三方库的源码拷贝到本地,在工程运行的时候进行编译,但 carthage不仅仅会将源码拷贝到本地还会使用命令行工具对源码打包编译为可用的 framework包,所以该过程极慢需要耐心等待,完成后项目结构目录如下:
然后我们需要打开工程,添加编译好的 framework包
最后我们需要写一个Run Script
来解决如果在项目中有未使用的 framework 提交苹果审核的时候回自动拒绝的问题:
1
/usr/local/bin/carthage copy-frameworks
在第四步中添加框架路径$(SRCROOT)/Carthage/Build/iOS/[框架名称]
然后就可以享受编程啦