zoukankan      html  css  js  c++  java
  • iOS开发编译报错、常见问题(实时更新)

    一、报错与警报

    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.

    2、ld:framework not found IOKit

    终端输入以下2行内容:

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

    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

    日志类似:

    解决:

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

    6.Undefined symbols for architecture i386:

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

    原因: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类的引用了。

    ---第6点 2016年08月25日补充---

    遇到类似以下报错:

    Undefined symbols for architecture i386:

      "_sqlite3_bind_blob", referenced from:
      -[FMDatabase bindObject:toColumn:inStatement:] in FMDatabase.o
      "_sqlite3_bind_double", referenced from:
      -[FMDatabase bindObject:toColumn:inStatement:] in FMDatabase.o
      "_sqlite3_bind_int", referenced from:
      -[FMDatabase bindObject:toColumn:inStatement:] in FMDatabase.o
      "_sqlite3_bind_int64", referenced from:
      -[FMDatabase bindObject:toColumn:inStatement:] in FMDatabase.o
      "_sqlite3_bind_null", referenced from:
      -[FMDatabase bindObject:toColumn:inStatement:] in FMDatabase.o
      "_sqlite3_bind_parameter_count", referenced from:
      -[FMDatabase executeQuery:withArgumentsInArray:orDictionary:orVAList:] in FMDatabase.o
      -[FMDatabase executeUpdate:error:withArgumentsInArray:orDictionary:orVAList:] in FMDatabase.o
    .........

    上面的意思是Link Binary With Libraries 中没有添加 “libsqlite3.dylib”,但是Xcode7中只有对应的“*.tbd”,而没有“*.dylib库”,怎么办呢?

    方法①:

    “Link Binary With Libraries”中点击 “+”,点“Add Other”,这时候按下“Command+Shift+G”,输入“/usr/lib”进行搜索,可以看到 “libsqlite3.dylib”,双击添加完毕。

    方法②:

    点项目,TAGERT -> Build Setting -> Lingking -> Other Linker Flag ,在里面添加一行字符: “-lsqlite3”。 添加完毕。

    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。

     更新-->

    8.Xcode7打包,iOS9真机闪退,如何解决?

    答:点击链接->【Xcode7打包,iOS9真机闪退,如何解决】

    ----------------2016年7月1日更新---------------

    9.报错如下:

    Undefined symbols for architecture i386:

      "std::__basic_file<char>::is_open() const", referenced from:...

    或者“std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> >::find(wchar_t const*, unsigned long, unsigned long) const", referenced from:”...

    然后后面一大堆的以“std:”开头的描述...

    解决方案:项目名 -> Build Phases -> Link Binary With Libraries,

    将libstdc++.dylib换成libstdc++.6.0.9.dylib就可以了。

    ----------------2016年12月22日更新---------------

    10.报错如:“No matching provisioning profile found: Your build settings specify a provisioning.....”,

    老是提示指定UUID的provisioning profile,即使出现按钮“Fix Issue”点击也没有解决?

    解决方案:

    a.找到项目中的 "xxx项目名.xcodeproj" 文件,右键打开包内容;

    b.然后找到project.pbxproj文件,双击打开;

    c.然后在文本中搜索“PROVISIONING_PROFILE",找到以它开头的那一行代码并删除了。

    删完以后重新打开项目运行,你就会发现错误提示没了,接下来运行工程,联网情况下Xcode会自己

    下载并安装provisioning profile文件;然后就行了。

    【参考:http://stackoverflow.com/questions/1760518/codesign-error-provisioning-profile-cannot-be-found-after-deleting-expired-prof】

     

      

    二、常见问题:

    1.模拟器的目录:

    点击“Finder->前往->资源库->Developer->Xcode->DerivedData,【看不到“资源库”?点击“前往”,看到菜单栏时,按“Option”就看到了.】

    或者点击“Finder->前往->前往文件夹”,输入:

    /Users/你当前登陆的用户名/Library/Application Support/iPhone Simulator/



    2.Xcode构建项目多,内存占用大,如果清除缓存?

    a.App被XCode Build在这里:

          点击“Finder->前往->资源库->Developer->Xcode->DerivedData”,

    或者点击“Finder->前往->前往文件夹”,输入: “/Users/你当前登陆的用户名/Library/Developer/Xcode/DerivedData”(冒号没有的)

    把不需要的app项目删除。或者定时删除旧的项目。

    -----2016年06月03日更新-----

    b.连接真机生成的文件,可以全部删掉或者把不常用的版本删掉,再次连接设备会自动生成:

    "~/Library/Developer/Xcode/iOS DeviceSupport"

    c.app打包生成的文件,可以删掉不需要的项目打包文件:

    "~/Library/Developer/Xcode/Archives"。

    以上都可以把不需要的app项目删除。或者定时删除旧的项目。

    ----------------------------------- 

    3.Xcode项目模拟器上png格式的本地图片正常显示,真机调试不显示:

    可能有2个原因:   

    (1).图片的初始状态,不是png的,被自己直接就改成png了。这样模拟器OK,真机就有问题。

    可以使用Mac 系统自带的图片预览导出一下,(就是双击图片,点击左上角:文件->导出->png格式),再重新导入就行了。

    (2).真机上文件名是区分大小写的,而模拟器上面是不区分的,所以模拟器可以,真机不行;

    更新-->

    4.项目更改一部分资源或者修改部分数据后,再次运行模拟器还是原来的效果,没有发生变化:(例如提示找不到某些头文件。)

    按一下:Product -> Clean ,应该是清除一下再编译;

    每次项目有数据修改,重新运行前,我都会clean一下,避免因为缓存出现的错误...这个经常用,但是clean真正的意思我还没读懂.

     by:啊左~ (转载请标明原文出处,谢谢支持 ~ ^-^ ~)
  • 相关阅读:
    当Django模型迁移时,报No migrations to apply 问题时
    django--各个文件的含义
    django--创建项目
    1013. Battle Over Cities (25)
    1011. World Cup Betting (20)
    1009. Product of Polynomials (25)
    1007. Maximum Subsequence Sum (25)
    1006. Sign In and Sign Out (25)
    1008. Elevator (20)
    1004. Counting Leaves (30)
  • 原文地址:https://www.cnblogs.com/azuo/p/5099705.html
Copyright © 2011-2022 走看看