正好通过这次 Telegram 的运行,很想把常见的项目运行的错误好好的总结一下,在前面的博客中,又星星散散的总结过错误和一些警告的消除方法,这次把错误处理一下,还有Telegram项目中有999+的警告,我这种有洁癖的人,哈哈~准备把警告也消除一下,到时候再整理一篇警告消除的方法,还有以前的那些警告和错误消除的方法,都总结出来,希望可以帮到有需要的同学。

当然我们所要说的这些,都是围绕着Telegram展开的,先看看你下载了Telegram的源码的时候,会最先看到的问题,看下图:

这个是最简单的问题,就是文件丢失的问题:这个问题是挺简单,但在目前最新的3.18版本的Telegram的项目中,你需要一下几点:

1、目前这个版本的Telegram里面是没有适配最新版本的 MtProtokit 的,你要是把最新的 MtProtokit 加进去的话是要修改3.18项目的源码的。

   2、上面所缺的文件的原本的位置不是在图上所示的地方的,最好你Show in finder 一下它们上层的文件,因为你要是改了这里文件的文件的位置的话,你是需要修改 Build Settings 里面相对应的文件路径的,就比较的麻烦。

总结项目运行中你会可能遇到的问题:

一:找不到头文件

下面就是在Telegram中,头文件找不到的问题:

找不到头文件无非也就这两种种情况:

1、相对应的文件或者库没有导入

2、头文件的路径不对

就像我们在使用Cocopods的时候,你Pod完三方之后,可能发现会有些头文件提示 '.....' file not found,我们就会在Build Settings 菜单,找到\”User Header Search Paths\”设置项新增一个值"${SRCROOT}",并且选择\”Recursive\”,这个"${SRCROOT}"表示当前工程的根路径,$(PROJECT_DIR)表示的其实和"${SRCROOT}"相差不是很大,你要是上网搜一下很多都是"$(SRCROOT)"代表的是项目根目录下,"$(PROJECT_DIR)"代表的是整个项目,你理解了没?哈哈哈。。好了,这里是在Stackoverflow找到的What the different between SRCROOT and PROJECT_DIR?,希望能帮助到你理解它们。

Telegram里面还有下面这个文件:

这个文件的在我们最下面展示出来的群文件里面有,需要的可以去下载后拉到你的项目中。

二: Undefined symbols for architecture XXX

先说说后面这个XXX,这个XXX可能会是armv7、armv7s、arm64、i386、x86_64等,大概会是这几类,遇到的错误就像下面的这张图一样的,这张图首先不是我在Telegram截图的,这是我在晚上照的,在这里做一个参考吧。

要是说这个错误的话,说实话很多问题都会导致上面这个错误的出现,但记住大部分的情况,或者主要的一点---还是缺framework或.tbd。

这里我就不在一一的重复说明能出现的情况了,这里有一片博客,正对这个问题总结的更多一点,链接给大家:

Xcode编译Undefined symbols for architecture xxx 错误总结 (感谢作者!)

当然我们这个错误我们上面说的是在缺framework或.tbd的情况下,这个问题大部分出在你导入的第三方的东西之后,这个时候除了你要检查是不是缺了framework或.tbd,当然还有一种情况是想特别说一下的就是真的就是这个Architectures出的问题,先说说上面我们提过的像armv7、7s的意义都理解还是不知道,这里也补充总结一下,方便自己以后回顾。

先把链接抛出来。,这篇说的大概也都OK了,能够帮助你了解这个arm是什么:armv6, armv7, armv7s, arm64 的区别 (感谢作者!)

熟悉了上面的armv,再来看看要是你的金泰库真的不支持相应的架构,你怎么检查怎么处理?

1、终端检查 lipo - info 你的静态库路径

2、看终端的信息,你就可以看到这个静态库是不是真的不支持那个架构,不支持的话就两个办法,要么设备不在支持,要么找支持改框架的静态库。

比如下面友盟加入的时候,可能会出现下面的问题:

还有一种情况我就简单的说一下,就是在下面的地方,缺相应的文件,比方说"AAAA", referenced from:BBBB.o,这是就可能是缺相应的BBBB,要么.m要么.h。那就在相应的下面的地方添加相应的文件:

这个错误大概就说这么多吧,肯定还有其他的原因造成这个问题出现的,当然解决的办法我相信也很多很多,出现这种问题的时候,给大家点建议,不要因为出错挡住了就感觉没办法了,全世界的找人找群去问,当然不是说问了有错,只是希望你一定要亲自多试试,多试试肯定会有结果的,而且还要多总结,这种东西你要一总结了以后遇到可以翻以前自己写的东西,不总结,每次遇到都是一头雾水。毕竟错误不是常常有,一年能遇到多少次,以前遇到的,过个三个月估计就成新的了,尤其我这种人,好咯,接着往下面写。

三:这个就是顺便提一下

还有一个问题就是在弄这个Telegram错误分析的时候,一个朋友顺便问我的,就是这个 Reason: image not found,上面我们提过的这两点,其实是很几点,就几乎包括了Telegram会出现的所有的运行的错误了,这个只是顺便提一下,这个问题其实也简单,网上大部分给出的问题也是正确没问题的,就像网上的答案一样,问题就像下面的图片一样,改为option就可以,具体是哪一个框架你就在自己的错误日志中去找,这里也就不再累赘了:

Telegram的问题,主要的还是在上面我们总结的两点上面,希望可以帮助到想运行Telegram的朋友,要是还有什么问题,欢迎来聊,主页面个人资料有我的QQ,有需要加我,最后还是最近再说的我们这个Telegram的群,有需要的朋友可以加一下,我们最新版的Telegram的源码也是编译通过放出来了,我们放出来的都是做了国际化处理,让它支持中文的,最后就是群二维码了,等你们。

*****************  群号可以直接粘贴这里:485718322

Telegram学习解析系列(三) : Build Telegram报错分析总结的更多相关文章

  1. Telegram学习解析系列(二):这我怎么给后台传输数据?

    写在前面: 在iOS开发的过程中,有很多时候我们都在和数据打交道,最基本的就是数据的下载和上传了,估计很多很多的小伙伴都在用AFNetworking与后台数据打交道,可有没有想过,哪天AFNetwor ...

  2. Telegram学习解析系列(一):认识一下Telegram的源码

    前言: Telegram不知道有多少同行听过这玩意,或者在看它的源码.我是出于工作原因才接触到这东西,看的真是的......变方了!一个月估计刚刚找到门,还没进去多深,把自己的心得和对源码的认识以及我 ...

  3. ionic build android 报错分析

  4. ETL利器Kettle实战应用解析系列三

    本系列文章主要索引如下: 一.ETL利器Kettle实战应用解析系列一[Kettle使用介绍] 二.ETL利器Kettle实战应用解析系列二 [应用场景和实战DEMO下载] 三.ETL利器Kettle ...

  5. java基础解析系列(三)---HashMap

    java基础解析系列(三)---HashMap java基础解析系列 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)-- ...

  6. ionic2踩坑之ionic build android报错

    自己项目一直跑的好好好好的,build还是run都没问题,今天忽然一个小伙伴build一直报错.\ 错误如下: Error occurred during initialization of VMCo ...

  7. mysql5.7密码修改与报错分析

    1.修改密码 修改密码: vim /etc/my.cnf 的mysqld字段加入skip-grant-tables 重启MySQL,service mysqld restart 终端输入 mysql ...

  8. std::unique_ptr使用incomplete type的报错分析和解决

    Pimpl(Pointer to implementation)很多同学都不陌生,但是从原始指针升级到C++11的独占指针std::unique_ptr时,会遇到一个incomplete type的报 ...

  9. const变量赋值报错分析

    const变量赋值报错分析 const变量赋值报错 从变量到常量的赋值是合法C++的语法约定的, 如从char 到const char顺畅: 但从char **到 const char **编译器就会 ...

随机推荐

  1. cassandra高级操作之JMX操作

    需求场景 项目中有这么个需求:统计集群中各个节点的数据量存储大小,不是记录数. 一开始有点无头绪,后面查看cassandra官方文档看到Monitoring章节,里面说到:Cassandra中的指标使 ...

  2. Mybatis基础学习(四)—关系映射

    一.模型分析 user和orders user---->orders 一个用户可以创建多个订单,一对多. orders--->user 一个订单只由一个用户创建,一对一.   orders ...

  3. Java 中的 String 类常用方法

    字符串广泛应用在Java编程中,在Java中字符串属于对象,String 类提供了许多用来处理字符串的方法,例如,获取字符串长度.对字符串进行截取.将字符串转换为大写或小写.字符串分割等. Strin ...

  4. CI Weekly #17 | flow.ci 支持 Java 构建以及 Docker/DevOps 实践分享

    这周一,我们迫不及待写下了最新的 changelog -- 项目语言新增「Java」.创建 Java 项目工作流和其它语言项目配置很相似,flow.ci 提供了默认的 Java 项目构建流程模版,快去 ...

  5. 从零开始用 Flask 搭建一个网站(三)

    从零开始用 Flask 搭建一个网站(二) 介绍了有关于数据库的运用,接下来我们在完善一下数据在前端以及前端到后端之间的交互.本节涉及到前端,因此也会讲解一下 jinja2 模板.jQuery.aja ...

  6. iOS数据本地化

    本篇随笔除了介绍 iOS 数据持久化知识之外,还贯穿了以下内容: (1)自定义 TableView,结合 block 从 ViewController 中分离出 View,轻 ViewControll ...

  7. HYML / CSS部分

    1.什么是盒子模型? 在网页中,一个元素占有空间的大小由几个部分构成,其中包括元素的内容(content),元素的内边距(padding),元素的边框(border),元素的外边距(margin)四个 ...

  8. 关于mpu6050的几个很好的帖子

    最近在研究6050,真是很磨人啊,这个小东西还挺复杂,一个读取程序竟然需要600多行. 这几天连查资料找到了几个很好的帖子,要是以后有人看到这篇帖子,可以避免误入歧途,也可以省去很多时间. 1.阿西莫 ...

  9. 【转载】GPIO模拟i2c通信

    I2C总线的通信过程(见图4-8)主要包含三个主要阶段:起始阶段.数据传输阶段和终止阶段. 1. 起始阶段 在I2C总线不工作的情况下,SDA(数据线)和SCL(时钟线)上的信号均为高电平.如果此时主 ...

  10. 什么是Actor

    本文已.Net语法为主,同时写有Scala及Java实现代码 严肃的说,演员是一个广泛的概念,作为外行人我对Actor 模型的定义: Actor是一个系统中参与者的虚拟人物,Actor与Actor之间 ...