telegram之导入项目、初步认识目录结构-电报telegram技巧分享

1、下载源码、导入Android studio中调试并运行成功

从在github 上找到源码,到调试成功,Telegram可以或许被安装得手机上运行,前前后后花了最少四五天!调试過逞中碰到了许多问题,特此记载!


准确步骤:

通过github克隆源码。地点:Telegram 源码。根据网址上要求下载Android studio 3.4及以上版本、NDK20、SDK8.1,制止出错误。下图是克隆過逞,固然也可以通过git 下令行进行操作。

Telegram之导入项目、初步认识
Telegram之导入项目、初步认识

碰到的问题:克隆失败,多克隆频频,用了git 的图形界面版,最终成功。 大概是网络问题。也可以不用git 克隆直接下载压缩包,使用Android studio 打开文件夹。 天生release.keystore 放置在项目目次下(Telegram\TMessagesProj\config)。这是由于从github 上克隆时,会少克一些设置文件,以是要自己天生。对于怎样天生release.keystore文件,可以看这个。key store path可以直接选择上面的路径。名称写为release.keystore。(key store password、alias、key password记好,等下要填写到gradle.properties中)

Telegram之导入项目、初步认识

注:天生的keystore 文件后缀名为.jks ,需要重定名为release.keystore。调试過逞中,假如出现含有release.keystore 重要字的错误,一样平常都是这步那里出了问题。实验察看目次下是否存在该文件,要么重新天生,以及检察gradle.properties 中参数是否准确。 在gradle.properties 中填写RELEASE_KEY_PASSWORD,RELEASE_KEY_ALIAS和RELEASE_STORE_PASSWORD,以访问自己的release.keystore。

Telegram之导入项目、初步认识

点击这里,创建两个具有应用程序,org.telegram.messenger和org.telegram.messenger.beta的android应用,并下载org.telegram.messenger的google-services.json,复制到TMessagesProj的子目次中。

Telegram之导入项目、初步认识

碰到问题:运行报错,缺少org.telegram.messenger.beta 包,实验将build.gradle中出现的 applicationIdSuffix “.beta” 这句代码解释掉。 在TMessagesProj / java / org / telegram / messenger / BuildVars.java中填写值-每个变量都有一个链接,表现从何处以及从何处获取数据。APP_ID、APP_HASH通过下图方法注册得到,下面四个参数可以和我一样,此中HOCKEY_APP_HASH和HOCKEY_APP_HASH_DEBUG只要是32位即可。

Telegram之导入项目、初步认识
Telegram之导入项目、初步认识

碰到的问题,好几个网页打不开,这些网站有些需要翻墙才能访问,这个自行解决。 此时,必备步骤已经竣工,开始编译、运行。这个過逞大概会碰到种种问题,需要根据实际环境理智分析,上网查阅解决措施。下面粘出我的Gradle 设置,SDK、NDK版本,以及整个导入過逞中对项目调试运行有帮助的一些链接。

Telegram之导入项目、初步认识
Telegram之导入项目、初步认识

Telegram错误总结

在Android Studio上编译自己的Telegram

telegrm电报常见问题

Gradle build 报错:Received status code 400 from server: Bad Request

Error:SSL peer shut down incorrectly(完美解决)

No matching client found for package name (Google Analytics) – multiple productFlavors & buildTypes [closed]

注:运行成功后,可以连接自己的手机运行、安装(虚拟机比较卡,我电脑完全带不动),手机需要打开开发者模式和Debug模式。

2、Telegram项目目次布局

Telegram 和一样平常的android 项目差别的是,它的前端ui 部分并不是用xml 结构文件写的,而是用纯java 写的!以是你会发现layout中基本找不到.xml 文件。

Telegram之导入项目、初步认识

现在,代码看了一部分,由于之前基本没学过android,看起来比较吃力。有些类大概知道是干嘛的。特此记载!


messenger目次下:


ApplicationLoader.java –> 用来加载设置信息,初始化App,监测网络变革等。

SendMessagesHelper –> 发送各种消息的类


ui目次下:


ChatActivityEnterView.java –> 这个类是聊天窗口中发送消息界面部分。内里有发送消散按钮的监听事件、以及相关界面的绘制等。

CacheControlActivity.java –> 清理缓存Activity

ChangeNameActivity.java –> 编辑名称条目Activity


ChatActivity.java –> 聊天窗口,有按钮监听事件、顶部导航条目界面及监听事件等。


DateSettingsActivity.java –> 数据存储设置


LoginActivity.java –> 登录界面,选择国度,填写手机号



DialogActivity.java –> 登陆成功后,跳转的页面,对话界面,表现全部的对话信息。


LogoutActivity.java –> 登出界面

NotificatonsSettingsActivity.java –> 通知和声音Activity

PasscodeActivity.java –> 添加密码锁

PrivacySettingActivity.java –> 隐私、安全设置

ThemeActivity.jav –> 聊天主题类

3、知识点

动态访问数据权限,放置在Fragment 的结构函数中,出现问题,导致此Fragment 无法打开。 字节省、字符流区别:


以stream末端都是字节省

,以reader和writer末端都是字符流,两者的区别就是读写的时间一个是按字节读写,一个是按字符。在实际使用时差不多。在读写文件需要对内容按行处置,好比比较特定字符,处置某一行数据的时间一样平常会选择字符流。只是读写文件,和文件内容无关的,一样平常选择字节省。全部的文件在硬盘或在传输时都是以字节的方法进行的,包括图片等都是按字节的方法存储的,而字符是只有在内存中才会形成,


以是在开发中,字节省使用较为广泛

。Java的字节省:InputStream是全部字节输入流的先人,而OutputStream是全部字节输出流的先人。.Java的字符流:Reader是全部读取字符串输入流的先人,而writer是全部输出字符串的先人。InputStream,OutputStream,Reader,writer都是抽象类。以是不能直接new。

telegram代码目录结构

目次布局

不管大型还是小型项目,清楚的目次布局是开发過逞的好的开始。以我常用的web项目为例,搭建一下目次布局.

总览


├── src │ ├── js │ │ ├── main.js │ │ ├── plugins.js │ │ └── vendor │ │ └── modernizr-

2.8

.

3

.min.js │ ├── css │ │ └── main.css │ ├── img │ ├── favicon.ico │ ├── humans.txt │ ├── index.html │ ├──

404

.html │ ├── apple-touch-icon.png │ ├── browserconfig.xml │ ├── crossdomain.xml │ ├── robots.txt │ ├── tile-wide.png │ └── tile.png ├──

test

│ ├── file_content.js │ └── file_existence.js ├── dist │ ├──

404

.html │ ├── LICENSE.txt │ ├── apple-touch-icon.png │ ├── browserconfig.xml │ ├── crossdomain.xml │ ├── css │ │ ├── main.css │ │ └── normalize.css │ ├── favicon.ico │ ├── humans.txt │ ├── img │ ├── index.html │ ├── js │ │ ├── main.js │ │ ├── plugins.js │ │ └── vendor │ │ ├── jquery-

1.11

.

2

.min.js │ │ └── modernizr-

2.8

.

3

.min.js │ ├── robots.txt │ ├── tile-wide.png │ └── tile.png ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE.txt ├── README.md ├── gulpfile.js ├── package.json

目次布局清楚是主要目的,至于定名只要能到达表意的目标即可。

src

此目次专注于开发,存放的都是源文件,不需要压缩归并。目次下重要分为:

  • css(styles): 样式文件
  • js(scripts): 脚本文件
  • img(images): 图片素材
  • font(fonts): 存放字体
  • 其他: 根据分类差别分别目次

文件名上面,简写的话都使用单数情势,全称的话使用复数情势。

dist

此目次为编译天生目次,用于摆设环境,目次布局和src保持同等。

test

此目次为测试目次,存放和项目测试相关的文件。

doc

假如存在文档说明,放置在此目次下。

其他根目次文件

根目次下的其他文件,一样平常另有:

  • .editorconfig: 代码样式统一格式文件
  • .jscsrc:
  • .travis.yml:
  • .jshintrc: jshint设置文件
  • csscomb.json: csscomb设置文件
  • .gitignore: git忽略文件
  • .gitattributes: git属性文件
  • .bowerrc
  • bower.json
  • package.json
  • gruntfile.js/gulpfile.js

参考资料

很久不写博客了,今日来简单的描述一下Telegram的UI框架

我如今自己的项目都是使用的telegram的代码,首先大幅低降低内存开销,整个项目中属于我们自己的Activity只有一个,apk文件的体积非常小,结构都是由代码编写

登陆github搜索telegram进入安卓的项目,进入到ui目次下,ActionBar目次下布局如图表现,你可以发现telegram的项目中没有layout的结构文件,所有都是使用代码结构,最开始的时间我也不是很顺应,但是習慣就好了,并且通过网上查找资料发现,代码结构要比xml结构速率快出一倍,并且xml内容剖析器在剖析xml的时间内存也是占用不小的,直接剖析java代码中的结构比较快

任意找一个activity类,你会发现activity都是继承的BaseFragment,这个也可以称作BaseActivity,这个类,重要就是封装view,使用view来取代Activity,详细内里怎么实现大家可以看他的源代码,我学艺不精

如今说的是我自己的项目中 有哪些文件是我们需要的

这是我自己项目中的布局,给大家看下怎么使用的
这个activity就是统一的activity,全部的view都是由ActionBarLayout来操作的

一个简单的Activity的实现

整篇文章没有太多分析telegram的Ui架构,但是通过在实际的开发過逞中,我可以得倒在Android4.4左右的手机中,使用这套框架页面的切换、流畅度可与ios想媲美,在开发過逞中APK的体积基本上可以大幅度的淘汰,在开发過逞中非常流畅,在telegram的项目中另有许多使用的自定义控件,当地广播等等,真的写的非常好,不需要大家都明白底层的实现道理,但是会用,能改就可以的了,偶然间在去具体的分析源代码

本文网址:

http://www.1cm8858.com/d/2020612103519_2164_3038151137/home

Ten articles before and after

What is 10/13 as a decimal? – Convert 10/13 to decimal

现在还有人打电报吗电报现在还有什么用吗用吗?人会发电报算得上是文化遗产值得继承-电报telegram技巧分享

使用AndroidSMS转发到Telegram-电报telegram技巧分享

晚上耳朵听到发电报声为什么偶经常半夜滴滴答答的时钟声音和?-电报telegram技巧分享

敢叫板普京的男人家庭网络部署心得-电报telegram技巧分享

怎样利用telegram推广产品?如何使用Detal详细教程赚钱-电报telegram技巧分享

基地台?个人信息查询查档-电报telegram技巧分享

ip代理端口和ip代理类型最新中国地址代理服务器-电报telegram技巧分享

三更半夜好夥伴?色之家各种诱惑-电报telegram技巧分享

telegram是什么意思软件怎么设置中文-电报telegram技巧分享