美文网首页
iOS开发 Xcode上常见的一些错误

iOS开发 Xcode上常见的一些错误

作者: 在路上浅谈管理 | 来源:发表于2021-01-28 16:21 被阅读0次

在开发的过程中,我们大大小小都会碰到一些不同的错误报警,现在总结如下:
第一部分汇总:
报错信息:Linker command failed with exit code 1 (use -v to see invocation)

1、可能原因一

今天用Cornerstone更新了一个新的XCode工程下来,发现编译错误,如下:
报错信息:Linker command failed with exit code 1 (use -v to see invocation)


错误提示

简单翻译一下:“链接器命令失败,退出代码1(使用-v查看调用)”
这个时候,看一下引用的第三库是否正常。


11
果然有问题,libcrypto.a和libssl.a两个文件标示红色,存在引用但没有文件。
造成这一问题的原因是使用Cornerstone上传XCode工程的时候,.a文件被默认忽略.

问题既然发现了,那么如何去解决啦?

方法如下:
使用cornerstone上传忽略.a文件的解决办法:

1.打开Cornerstone左上角,点Cornerstone->Preferences->Subversion

2.Global lgnores下面有一个Use default global ignores 默认这里方框中会打钩(这就是.a文件不能上传的原因)

在这里,把对勾去掉,在下面方框中,找到.a删除

3.save(千万不要再次把钩点上,点上之后就是系统默认的忽略.a )然后就可以Commit

这样就可以吧工程中的.a文件上传到svn上面去了,如果其他的文件被忽略,此方法也可以使用。

image.png

按照以上操作完成之后,可以在重新上传一遍项目工程文件到Cornerstone上面,上传完之后在check out到本地,在运行,就发现可以运行了。

2、可能原因2

请参考文章:iOS经典错误library not found for -lXXX

第二部分汇总:

1、错误代码:No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=x86_64, VALID_ARCHS=armv7 armv7s)

build 这个target的时候命令行报错。可以在 build setting 中,搜索bitcode,并吧 enable bitcode 设置为 NO.

[图片上传失败...(image-1a48df-1611821481523)]

2、ld:framework not found IOKit

终端输入以下2行内容

1、cd/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.1.sdk/System/Library/Frameworks/IOKit.framework

2、sudo ln -s Versions/A/IOKit .

其中,如果不行,从文件夹中慢慢打开看下路径对不对,如果像有修改Xcode名称的,注意如 “xcode 5” [有空格” “的记得在终端中加上 “”这个符号];

3、程序没问题,运行报错:Directory not empty

位于/Users/你电脑名/Library/Developer/Xcode/DerivedData下的缓存文件占很大的缓存空间,如果长时间不删除xcode下的缓存文件,就会导致硬盘空间越来越小直到Directory not empty。删除了缓存文件再运行就不会再报错。

或者,直接clean一次就可以了。

4、如果遇到编译错误类似:Undefined symbols for architecture armv7:

OBJC_CLASS$_ASIHTTPRequest”,先检查上述的依赖代码是否已加入编译列表,如未加入,依次点击Target->Build Phases->Compile Sources,点击底部“+”添加上述代码。

如果遇到编译错误类似:Undefined symbols for architecture armv7: “_inflateEnd”, referenced from,则应该是缺少依赖libz.dylib,添加方法:依次点击Target->Build Phases->Compile Sources,点击底部“+”,在弹出的列表中输入libz,添加搜索结果中最新版本即可。

5.but did not return a nonzero exit code to indicate failure

日志类似:

[图片上传失败...(image-827be4-1611821481523)]

解决:

选择 Build Settings 菜单,把compress PNG files 改成NO。

6.Undefined symbols for architecture i386:

日志类似:(缺少BJGKPaintMapViewController文件的引用)

[图片上传失败...(image-e02bcc-1611821481523)]

原因:xcode项目import文件时,会根据project.pbxproj来查找,查找不到文件的引用则会有上述的错误。图中就是BJGKPaintCommand文件对BJGKPaintMapViewController类的引用找不到。常常在多人合作开发的时候,svn提交不规范导致的project.pbxproj发生错误,使得文件的引用不在project.pbxproj文件中。

解决方案:

a.点击Build Phases,如果是缺少的xxx是类名,则在Complie Sources中加入该文件。若缺少类库,则在Link Binary With Libraries中加入该类库。例如图中是缺少 “BJGKPaintMapViewController”,这个是类名。

b.或者直接把需要引用这个缺少类/库的原文件去掉引用,笔者就是多调用了BJGKPaintCommand类文件,所以把它去掉,也就不需要补上BJGKPaintMapViewController类的引用了。

7、问题: ld/ warning/ directory not found for option从项目中删除了某个目录、文件以后,编译出现警告信息:_ld: warning: directory not found for option“XXXXXX”:

有时候已经从项目中删除了文件和文件夹还是报这个警告,虽然没有发生错误,但是看着很不舒服。。

去掉警告的办法如下:

1选择工程, 编译的 (targets)

2选择 Build Settings 菜单

3如下查找 Library Search Paths 和 Framework Search Paths, 删掉编译报warning的路径即OK。

[图片上传失败...(image-278fbb-1611821481523)]

相关文章

网友评论

      本文标题:iOS开发 Xcode上常见的一些错误

      本文链接:https://www.haomeiwen.com/subject/gjzttltx.html