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 **编译器就会 ...
随机推荐
- hdu 2516 取石子游戏 (斐波那契博弈)
题意:1堆石子有n个,两人轮流取.先取者第1次可以取任意多个,但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍. 取完者胜,先取者负输出"Second win",先取者胜 ...
- sublimeText3插件安装
1,官方下载sublimeText 3(百度搜索) 2,安装成功后按Ctrl+`调出console 3,然后输入 import urllib.request,os; pf = 'Package Con ...
- C++(浅析枚举类型-enum)
枚举类型 枚举类型(enumeration)是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合. 如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型.所谓&quo ...
- ASP.NET Core MVC和Visual Studio入门
本教程将教你使用Visual Studio 2017创建 ASP.NET Core MVC web应用程序的基础知识. 安装Visual Studio 2017 和.Net Core 安装Visual ...
- STM32定时器
/*****************************************************************************初始化定时器**************** ...
- Angularjs快速入门(一)
这系列是看<用angularjs开发下一代web应用>的笔记. angular也接触几个月,总觉得不甚明白,写起来总是不那么如意.希望这本书看完了可以改变现在的状况.好了废话不多说开始: ...
- Mobile game analysis
Let's take a look at a very popular mobile game "Garena 传说对决" . It would be very interesti ...
- android在myeclipse上创建的项目各种报错
这几天被android弄得头疼死了.差不多把电脑弄了个遍. 先是离线安装ADT,下载ADT,然后配置,但是因为ADT与MyEclipse冲突.所以直接不要再myeclipse下弄Android的环境了 ...
- java并发程序——并发容器
概述 java cocurrent包提供了很多并发容器,在提供并发控制的前提下,通过优化,提升性能.本文主要讨论常见的并发容器的实现机制和绝妙之处,但并不会对所有实现细节面面俱到. 为什么JUC需要提 ...
- cmd 菜单学习
@ECHO OFF&PUSHD %~DP0 &TITLE 标题是随意的 mode con cols=36 lines=20 color 2C :menu cls echo. echo ...