正好通过这次 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. 手机自动化测试:Appium源码分析之跟踪代码分析九

    手机自动化测试:Appium源码分析之跟踪代码分析九   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家 ...

  2. 一个GOOD的Idea需要伯乐发觉-致敬错过的IDEA

    类似一个微信电话本

  3. CSS 画三角形、圆

    <div class="square"></div> <style> .square { height: 0px; width: 0px; bo ...

  4. 小结:Swift、OC语言中多target在代码中如何区分

    一.对swift工程 经实践,网上的方法都无法成功,后来思考DEBUG宏定义方式,经实测有效,方式如下: 注意:不能把swift flags 小三角折叠后双击设置-DTarget4AppStore, ...

  5. 优化Servlet:(利用反射的思想)

    1.创建BaseServlet (重写父类的service方法) package com.learning.web.servlet; import java.io.IOException; impor ...

  6. hibernate持久化框架

    Hibernate是一个优秀的持久化框架 瞬时状态:保存在内存的程序数据,程序退出后,数据就消失了,称为瞬时状态 持久状态:保存在磁盘上的程序数据,程序退出后依然存在,称为程序数据的持久状态 持久化: ...

  7. phpcms课堂笔记

    获取父分类下面的子分类 {loop subcat(77) $k $v}{php $subcatid[] = $k;}{/loop}<?php $subcatid = implode(',', $ ...

  8. javascript中json对象json数组json字符串互转及取值

    今天用到了json数组和json对象和json类型字符串之间互转及取值,记录一下: 1.json类型的字符串转换为json对象及取值 var jsonString = '{"bar" ...

  9. MySQL最常用字符串函数

    字符串函数 是最常用的的一种函数,在一个具体应用中通常会综合几个甚至几类函数来实现相应的应用: 1.LOWER(column|str):将字符串参数值转换为全小写字母后返回 mysql> sel ...

  10. lua 变量

    lua 变量 类型 全局变量 lua 变量默认均为全局变量 打印一个未定义的变量输出为 nil 示例代码 a = 1 print(a, b) 局部变量 lua 变量默认均为全局变量, 除非变量前显式声 ...