Xcode清空缓存
iOS开发长时间使用Xcode会产生一系列的缓存,定时清理可以节省出一大部分内存。
- 移除iPhone模拟器产生的缓存数据(Devices) : 点击Finder,点击前往文件夹,输入:~/资源库/Developer/CoreSimulator/Devices/,打开界面如下图,可以删除清空Devices底下的文件。
如图 :
Devices文件夹下的文件移入废纸篓后,立即运行会发现编译成功但模拟器无法运行,提示 :This app could not be installed at this time.(此时无法安装此应用程序。)
点击程序坞的模拟器图标,会提示:Unable to boot device because it cannot be located on disk.(无法启动设备,因为它不在磁盘上。)
此时打开Xcode,打开模拟器选择下拉列表,选择add additional simulators...,在弹出的界面中选择模拟器,删除所有的模拟器,然后重新添加需要的模拟器。
在打开的弹框中选择模拟器,右击选择Detele删除该模拟器。
删除模拟器完毕后,可以选择+号,从新添加模拟器。
然后重新选择新添加的模拟器,模拟器可以成功运行。
2.移除Xcode的缓存文件DerivedData
点击Finder,点击前往文件夹,输入:~/Library/Developer/Xcode/DerivedData/,打开界面如下图,可以删除清空DerivedData底下的文件。文件夹中保存的是Xcode的缓存文件,曾经在Xcode跑过的所有项目的索引、build的信息等都会保存在这里。删除后在下次打开项目编译的时候将会重新生成。
3.移除打包App产生的数据Archives
点击Finder,点击前往文件夹,输入:~/资源库/Developer/Xcode/Archives/,打开界面如下图,根据项目需要进行移除,如果是线上版本,建议保留。
4.移除打包App产生的数据Products 点击Finder,点击前往文件夹,输入:~/资源库/Developer/Xcode/Products/,打开界面如下图,根据项目需要进行移除,里面是以项目Bundle Identifier命名的文件夹,存有app的图标。
5.虚拟包
点击Finder,点击前往文件夹,输入:~/Library/Developer/Xcode/iOS DeviceSupport,这里手机连xcode, 如果没有相应虚拟包,会自动更新;可根据需要进行移除,对于小磁盘的苹果本,也是经常清理的地方。
太久没有清理了,效果显著。清理前 :
清理后 :
Xcode构建系统崩溃了。请关闭并重新打开您的工作区。
处理办法:
重复符号(duplicate symbol)
真机编译bitcode_strip
处理办法1 :
点击项目——>Build Settings ——> Enable Bitcode设置为NO。例如 :
此办法无效。
处理办法 2:
- 点击项目——>Build Settings ——> DEPLOYMENT_POSTPROCESSING设置为YES,例如 :
- 点击项目——>Build Settings ——> STRIP_STYLE设置为Debugging Symbols,例如 :
- 点击项目——>Build Settings ——> Compiler Flags设置 -fembed-bitcode 参数,例如 :
- 点击项目——>Build Settings ——> Enable Bitcode设置为YES,例如 :
此办法有效。
注: DEPLOYMENT_POSTPROCESSING 部署处理设置为YES,会对其它选项生成的测试符号产生影响,设置为YES时会删掉所有不必要的编译符号,也包括调试符号,这时断点不会执行。
NSInternalInconsistencyException
NSInternalInconsistencyException :内部不一致异常
failed to obtain a cell from its dataSource : 无法从其数据源获取单元格,原因之一是因为单元格复用标识符错误
This request is forbidden for security reasons(出于安全原因,此请求被禁止)
You currently don't have access to this membership resource.To resolve this issue, agree to the latest Program License Agreement in your developer account.
译:您当前没有访问此成员资格资源的权限。若要解决此问题,请同意开发人员帐户中的最新程序许可协议。
处理办法 :
【1】、首先登录苹果开发者中心developer.apple.com/account/
【2】、出现如图所示,则需要同意最新程序许可协议 :
图片内容(译) : 苹果开发者计划许可协议已经更新。要访问某些成员资源,必须接受最新的许可协议。
【3】、点击审查协议,进入如图所示,勾选,点击我同意。
至此,错误解决。
Undefined symbol: OBJC_CLASS$_MJDog
Undefined symbols for architecture x86_64: "OBJC_CLASS$_MJDog", referenced from: objc-class-ref in ViewController.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
译 :架构x86_64的未定义符号: “OBJC_CLASS$_MJDog”,引用自: ViewController.o中的objc类引用 ld:未找到架构x86_64的符号 clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)
造成问题的原因,在项目中加入了第三方的文件,虽然在文件列表中进行了添加,但还是造成了错误,可能的原因是:项目 -> Build Phases -> Compile Sources中没有添加对应的.m文件造成的,添加后错误消失。例如 :
Code Signing Error
一般运行第三方Demo时有可能会报出此错误,例如以百度导航为例:
No profile for team 'KLS72L88F6' matching '20200113' found Xcode couldn't find any provisioning profiles matching 'KLS72L88F6/20200113'. Install the profile (by dragging and dropping it onto Xcode's dock item) or select a different one in the Signing & Capabilities tab of the target editor.
译 :找不到与“20200113”匹配的团队“KLS72L88F6”的配置文件 Xcode找不到任何与“KLS72L88F6/20200113”匹配的设置配置文件。安装配置文件(通过拖放到Xcode的dock项上)或在目标编辑器的Signing&Capabilities选项卡中选择其他配置文件。
处理方法 :
之后会报出如下错误 :
NaviDemo has conflicting provisioning settings. NaviDemo is automatically signed, but provisioning profile 1ac15702-24d7-404e-a17b-3ea74dceaf78 has been manually specified. Set the provisioning profile value to "Automatic" in the build settings editor, or switch to manual signing in the Signing & Capabilities editor.
译 : NaviDemo的设置有冲突。 navideo是自动签名的,但已手动指定设置配置文件1ac1572-24d7-404e-a17b-3ea74dceaf78。在生成设置编辑器中将设置配置文件值设置为“自动”,或在签名和功能编辑器中切换到手动签名。
处理方法 :
这里所说的就是要通过修改你的项目的.xcodeproj文件来解决上述的错误。
1>. 找到项目中的**.xcodeproj文件,点击右键,show package contents(打开包内容)。如图 :
2>. 打开后找到project.pbxproj文件,用文本编辑器打开。其实就是右键,点击open就好了。如图 :
3>. 打开这个文件后,按command + F,在这个文件中查找“PROVISIONING_PROFILE"或者 “11ac15702-24d7-404e-a17b-3ea74dceaf78”,找到这个 直接删除,保存。如图:
之后会报出如下错误 :
NaviDemo has conflicting provisioning settings. NaviDemo is automatically signed, but code signing identity iPhone Developer: rd szlbs (KWNPF2348G) has been manually specified. Set the code signing identity value to "iPhone Developer" in the build settings editor, or switch to manual signing in the Signing & Capabilities editor.
译 : NaviDemo的设置有冲突。 navideo是自动签名的,但代码签名标识iPhone Developer:rd szlbs(KWNPF2348G)是手动指定的。在构建设置编辑器中将代码签名标识值设置为“iPhone Developer”,或在签名和功能编辑器中切换为手动签名。
处理方法 :
项目 -> Build Setting ->搜索signing后将Iphone Developer改为IOS Developer。如图 :
4>.如果在签署证书时报错如下 :
处理方法 :将Bundle Identifier更换,即使是自己开发者账号下其他项目的Bundle Identifier页可以。
至此,项目成功运行。
dyld: Library not loaded: @rpath/SDWebImage.framework/SDWebImage
引入第三方库,项目编译完成进行连接时报错,库未加载,报错如图:
造成错误的原因 :
Build Phases下无添加Embed Frameworks的选项
Build Phases下无Embed Frameworks并且没有添加的Embed Frameworks选项,例如:
处理办法:找到要添加的动态库,在General中拖入Frameworks,Libraries, and Embedded Content中,在Build Phases下会生成Embed Frameworks,例如: