IOS培训
美国上市IOS培训机构

400-111-8989

热门课程

IOS开发调试工作中常见的错误

  • 发布:点点点
  • 来源:IOS学习笔记
  • 时间:2018-08-10 10:00

1、框架导入方式:

Targets—>Build Phases—>Link Binary With Libraries 中

点“+”导入系统的或Add Other导入外部的 ,

资源文件直接拖入左边文件夹中 

2、文件路径设置:

Targets—>Build Settings—>Search Paths设置

相对路径:$(inherited) 继承

$(PROJECT_DIR) 指xxx.xcodeproj所在的父目录

$(SRCROOT) 根路径

例如:如果在Header Search Paths中添加$(SRCROOT)/scr,那么头文件引用直接引用 include “test.h”

Always search User Paths 可设为为NO,其他路径可相应设置(调试可设的包不同路径)

如果设置了 Always Search User Paths 为 yes,编译器会先搜索User Header Search Paths路径下的目录,在这种情况下include <string.h>,User Header Search Paths 搜索目录下的文件会覆盖系统的头文件 

3、模拟器运行项目选择:

cocos2d支持多平台运行,模拟器选择的前一个文件需选择iOS文件

4 .dmg文件中打开的项目提示锁定:

需项目拷贝出来运行

5、Xcode7网络设置:

<key>NSAppTransportSecurity</key>

<dict>

<key>NSAllowsArbitraryLoads</key>

<true/>

</dict>

还有一种单独设置方式按情况设置不同 

6、纠正后删除左边红色文件:

最新Xcode中库后缀名".dylib"可用".tbd" ,

(正常情况)通过Finder同样找不到.dylib文件,

因该文件是隐藏文件。需按快捷键 CMD+Shift+G,

输入 /usr/lib 后进入隐藏界面,然后添加需要的.dylib即可。

删除重复导入的框架 

7、链接报错:symbol(s) not found for architecture x86_64 :

Xcode升级到5.1 新特性之一就是默认让所有App都通过64位编译器编译。原来在Xcode5.0.x的时候默认的Standard architectures只有(arm7,armv7s),到5.1之后默认就带上arm64的参数了。

目前临时的解决办法是

1.把1.选中Targets—>Build Settings—>Architectures。

把build active architectures only 改为 NO。

2. 把最下面的Valid Architectures中的arm64参数删掉就可以了

或者:

双击Architectures,选择other,删除$(ARCH_STANDARD),然后增加armv7和armv7s(写上:$(ARCHS_STANDARD_32_BIT))。

3.clean 再build。

(以上都不行则说明模拟器中不能调试,只能真机调试) 

8、Xcode7以上真机调试步骤:

1.Xcode ->Preferences->Accounts->左下角“+”Add Apple ID

2.target->Build Phases->Code Signing->Code Signing Identity选择iOSDeveloper,Provisioning Profile选择Automatic(有申请的也可以选择自己的证书)

3.General->Identity ->Team ->选择自己的账号 ,账号可能与其他企业等账户冲突则需重新注册

4.点击Fix Issue

5.运行 

9、编码错误:You must rebuild it with bitcode enabled

(Xcode setting ENABLE_BITCODE) :

Targets—>Build Settings—>Build Options->Enable Bitcode 设置为NO 

10、真机运行崩溃错误:dyld`dyld_fatal_error:

0x2be810c4: trap

0x2be810c8: nop :

尝试:

1.将CFNetwork框架后面改成可选的Optionnal,可能是网络请求问题

2.把foundation框架放到CFNetwork框架上面

3.查看控制台输出的内容,提示没有加载资源,则可能需在 General->Embedded Bnaries中导入需要的框架 

11、"_GCControllerDidConnectNotification", referenced from:

-[GCControllerConnectionEventHandler observerConnection:disconnection:] in libcocos2dx iOS.a(CCController-iOS.o)

"_OBJC_CLASS_$_GCController", referenced from:

objc-class-ref in libcocos2dx iOS.a(CCController-iOS.o)

(maybe you meant: _OBJC_CLASS_$_GCControllerConnectionEventHandler)

ld: symbol(s) not found for architecture armv7s

BuildSettings -> Build Phase -> Link Binary with libraries

加入:

MediaPlayer.framework

GameController.framework 

12、两个静态库冲突 :

删除掉 Other Linker Flag 的 -all_load

如果是有些库使用到了扩展函数(catagory)可以分别对这个库进行加载

使用:-force_load

-force_load build/libs/libxx.a

(build是添加到当前目录下的)

或

-force_load $(BUILT_PRODUCTS_DIR)/libxx.a

(这里是直接添加静态库项目源码的做法) 

13、"_ExtAudioFileSetProperty", referenced from:

_CDloadCafAudioData in libcocos2dx.a(CDOpenALSupport.o)

"_ExtAudioFileRead", referenced from:

_CDloadCafAudioData in libcocos2dx.a(CDOpenALSupport.o)

"_AudioFileReadBytes", referenced from:

_CDloadWaveAudioData in libcocos2dx.a(CDOpenALSupport.o)

"_ExtAudioFileDispose", referenced from:

_CDloadCafAudioData in libcocos2dx.a(CDOpenALSupport.o)

"_AudioFileOpenURL", referenced from:

_CDloadWaveAudioData in libcocos2dx.a(CDOpenALSupport.o)

BuildSettings -> Build Phase -> Link Binary with libraries

加入:

AudioToolbox.framework(播放或录音库) 

14、运行时出现的证书问题:

App installation failed

a vaild provsioning profile for this executable was not found

检查:

1、安装证书是否重新导入(证书最好重新安装一下)

2、调试手机是否已授权

3、确认xcode选择的调试证书是否正确,team选择是否正确

4、设置的bundle identifier是否符合证书的命名规则

15、真机调试[UISreen mainScreen].bounds 得到的大小与实际手机的屏幕大小不一致

1、查看手机是否设置为放大模式(iPhone6及上)

2、启动图片设置问题,Lanuch Screen File选择Don't use asset catalogs,然后找到启动图片文件夹删除,再重新打开启动图,找到启动图将图片拖入启动图对应区域再运行即可。 

预约申请免费试听课

上一篇:IOS基础和高级知识模块整理和练习题目
下一篇:提高自己的IOS开发水平的8个方法

IOS多线程陷阱总结,IOS多线程陷阱归纳

IOS开发调试工作中常见的错误

高质量 iOS 博客推荐

10个非常实用的IOS小技巧

选择城市和中心
贵州省

广西省

海南省