Telegram学习解析系列(三) : Build Telegram报错分析总结
正好通过这次 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报错分析总结的更多相关文章
- Telegram学习解析系列(二):这我怎么给后台传输数据?
写在前面: 在iOS开发的过程中,有很多时候我们都在和数据打交道,最基本的就是数据的下载和上传了,估计很多很多的小伙伴都在用AFNetworking与后台数据打交道,可有没有想过,哪天AFNetwor ...
- Telegram学习解析系列(一):认识一下Telegram的源码
前言: Telegram不知道有多少同行听过这玩意,或者在看它的源码.我是出于工作原因才接触到这东西,看的真是的......变方了!一个月估计刚刚找到门,还没进去多深,把自己的心得和对源码的认识以及我 ...
- ionic build android 报错分析
- ETL利器Kettle实战应用解析系列三
本系列文章主要索引如下: 一.ETL利器Kettle实战应用解析系列一[Kettle使用介绍] 二.ETL利器Kettle实战应用解析系列二 [应用场景和实战DEMO下载] 三.ETL利器Kettle ...
- java基础解析系列(三)---HashMap
java基础解析系列(三)---HashMap java基础解析系列 java基础解析系列(一)---String.StringBuffer.StringBuilder java基础解析系列(二)-- ...
- ionic2踩坑之ionic build android报错
自己项目一直跑的好好好好的,build还是run都没问题,今天忽然一个小伙伴build一直报错.\ 错误如下: Error occurred during initialization of VMCo ...
- mysql5.7密码修改与报错分析
1.修改密码 修改密码: vim /etc/my.cnf 的mysqld字段加入skip-grant-tables 重启MySQL,service mysqld restart 终端输入 mysql ...
- std::unique_ptr使用incomplete type的报错分析和解决
Pimpl(Pointer to implementation)很多同学都不陌生,但是从原始指针升级到C++11的独占指针std::unique_ptr时,会遇到一个incomplete type的报 ...
- const变量赋值报错分析
const变量赋值报错分析 const变量赋值报错 从变量到常量的赋值是合法C++的语法约定的, 如从char 到const char顺畅: 但从char **到 const char **编译器就会 ...
随机推荐
- Java面试题:Servlet是线程安全的吗?
Servlet不是线程安全的. 要解释为什么Servlet为什么不是线程安全的,需要了解Servlet容器(即Tomcat)使如何响应HTTP请求的. 当Tomcat接收到Client的HTTP请求时 ...
- 华为C8812E 手机logcat不出日志解决方案
最近在弄Android,使用的测试机为华为C8812E,无论如何也打印不出来日志,在网上搜索了一圈,尝试了很久终于解决了,留作备忘. 华为手机logcat不出日志解决方案 进入拨号界面输入:*#*#2 ...
- WebGL 高级技术
1.如何实现雾化 实现雾化的方式由多种,这里使用最简单的一种:线性雾化(linear fog).在线性雾化中,某一点的雾化程度取决于它与视点之间的距离,距离越远雾化程度越高.线性雾化有起点和终点,起点 ...
- vscode奇淫记(上)
每次换editor都是一种煎熬,从最早的eclipse,sublime,webstorm到现在在用的atom,换编辑器的驱动是寻找更酷炫和轻量的平衡点,其实我真的蛮喜欢atom的,酷炫!那我这次打算入 ...
- 第一章:Druid简介
第一章:Druid简介 声明 公司的项目中用到了Druid(不是阿里的连接池),由于网上没有中文的文档,所以只好阅读官方文档.本人第一次阅读英文的文档,非常吃力,借助翻译工具和自己的理解阅读了Duri ...
- struts2 之 ServletAPI
1. 在struts2中有两种方式使用SercletAPI,一种解耦方式,一种耦合方式. 2. 解耦方式就是使用ActionContext 来实现,是完全解耦 servletAPI. ActionCo ...
- 使用Java注解来简化你的代码
注解(Annotation)就是一种标签,可以插入到源代码中,我们的编译器可以对他们进行逻辑判断,或者我们可以自己写一个工具方法来读取我们源代码中的注解信息,从而实现某种操作.需要申明一点, ...
- STM32F0的flash读写
flash大小64k Rom+8k Ram的大小,stm32f051有64k Rom,总的分为 64页,一页1024byte ,在flash的Rom里面写数据掉电保存,相当于W25q80 uint32 ...
- CF #CROC 2016 - Elimination Round D. Robot Rapping Results Report 二分+拓扑排序
题目链接:http://codeforces.com/contest/655/problem/D 大意是给若干对偏序,问最少需要前多少对关系,可以确定所有的大小关系. 解法是二分答案,利用拓扑排序看是 ...
- Jsoup抓取、解析网页和poi存取excel综合案例——采集网站的联系人信息
需求:采集网站中每一页的联系人信息 一.创建maven工程,添加jsoup和poi的依赖包 <!-- https://mvnrepository.com/artifact/org.apache. ...