Mephisto

个人站

欢迎来到我的个人站~


iOS 开发小技巧记录

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进行签名:

  1. 关闭 Xcode
  2. 准备代码签名证书 XcodeSigner如图所示:

  1. 打开终端输入命令sudo codesign -f -s XcodeSigner /Applications/Xcode.app对 Xcode 进行签名,过程非常非常的缓慢,大概5-10min,慢慢等待签名成功即可

安装 XVim2插件:

  1. 下载源码git clone https://github.com/XVimProject/XVim2.git
  2. 进入工程目录
  3. 使用命令xcode-select -p确认返回的 Xcode 路径是否正确,如果不正确,使用xcode-select -s设置
  4. 在终端中使用make命令编译 XVim2工程,出现Build Succeeded即为编译成功,中间可能会弹出提示信息,输入y即可
  5. 打开 Xcode,提示是否加载 Xvim 插件,选择 Load Boundle,如果不小心选择了skip Boundle关闭 Xcode,输入该命令后重新选择defaults delete com.apple.dt.Xcode DVTPlugInManagerNonApplePlugIns-Xcode-[Xcode 版本号]
  6. 安装成功后可以在EditXVim 选择开启或关闭

Xcode10.1 控制台输出问题

升级 Xcode10.1以后控制台会打印多余的 log 信息,比如:


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 打开该文件,在这里面写上你需要安装的第三方库,样例如下:


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"

  1. >= 2.5:使用2.5或以上版本
  2. ~> 3.0:大于3.0-4.0之间的最新版本
  3. ==3.0.5:使用3.0.5版本
  4. 如果什么都不写则使用最新版本

Cartfile文件编辑完成后,打开终端,进入工程的根目录,运行命令:carthage update --no-use-binaries --platform iOS 或者 carthage update 安装第三方库,我个人更喜欢第一个命令,只会打包出 iOS 平台的相关 framework包, carthage的安装和 cocoapods 不太一样, cocoapods 只是将第三方库的源码拷贝到本地,在工程运行的时候进行编译,但 carthage不仅仅会将源码拷贝到本地还会使用命令行工具对源码打包编译为可用的 framework包,所以该过程极慢需要耐心等待,完成后项目结构目录如下:

然后我们需要打开工程,添加编译好的 framework包

最后我们需要写一个Run Script来解决如果在项目中有未使用的 framework 提交苹果审核的时候回自动拒绝的问题:

/usr/local/bin/carthage copy-frameworks

在第四步中添加框架路径$(SRCROOT)/Carthage/Build/iOS/[框架名称] 然后就可以享受编程啦

最近的文章

Spring Boot学习记录(一)

前言由于公司业务需要,自己也有学习后台开发的兴趣爱好,所以从今年开始的时候自己慢慢的会学习一些后台相关的知识,主要就是学习 Spring Boot,该系列的教程一个是为了记录自己在学习过程中踩得坑,一个是对自己在学习中的知识整理,如果能帮到更多的人就更好了,下面,开始自己的学习之旅吧工具环境 开发 IDE:IDEA 2019 运行环境:Java1.8 系统: MacOS 10.14.4Helloworld国际惯例,我们开始写一个helloworld工程(笑),主要有两种创建工程的方法...…

java继续阅读
更早的文章

ACG Picture项目错误修复记录

__TCCAccessRequest 错误在上线自己的项目后随着用户的增多,有一天我在后台发现了大量的__TCCAccessRequest崩溃 bug,这个 bug在不同的机型,不同的系统里面都可以触发,自己测试了很久都没有找到, bug 堆栈信息如下:根据堆栈信息可以可以定位到是权限相关的错误,由于没有开启相关权限导致了应用的奔溃,自己的项目是一个图片类的应用,所需要的权限只有通知权限和相册权限,但是这两个权限自己都有开通,在排查许久之后发现,在调用系统分享的时候,弹出来的控制器里面可以...…

iOS继续阅读