Android Sublime源码阅读姿势
“自己不去努力,不去付诸行动,揪着对方的弱点不放,连自己也落得下作,这就叫做嫉妒”——《红鳉鱼》
当你的品味越小众,意味着你欣赏的事物,情感,艺术越不随波逐流,你对自己的认识越深刻,和你产生共鸣的人就越少,和人群的距离自然就越远。孤独是在所难免的,但你会欣然接受它,因为属于你的气质正在形成,你对自己的兴趣了解越多,对大众的喜好保持尊敬,错过灵魂相通的人概率越低,生活质量越高。——网易云《儿话》雁三
前言
最近编译了Android7.1.1的源码,将Android 7.1.1的源码拿来学习。
- Android 编译Android 7.1.1源码
之前听说IDEA看源码很方便,不过由于Android 7.1.1导入到IDEA中需要编译一遍,才会生成idegen.jar
文件,不然都没法执行make idegen && development/tools/idegen/idegen.sh
命令生成android.iml
和android.ipr
。其中android.iml
是IDEA或者Android Studio的目录索引,可以include
和exclude
文件夹;android.ipr
是导入IDEA或者Android Studio的关键文件,在IDEA或者Android Studio使用Open Project就可以将Android的源码导入到IDE中了。
试了一下,发现Android源码导入到IDEA或者Android Studio中并不是特别好用,IDEA不怎么支持C++,在C++的源码间跳转也有问题,全靠shift+shift
的快捷键和一些命名规则来进行代码间的跳转,看起来不是很舒服。
今天突然间发现其实Sublime也是可以阅读源码的,仅仅需要的就是安装一些扩展的插件。
安装Sublime
安装Sublime:
- 正常版本
wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list
sudo apt-get update
sudo apt-get install sublime-text
- Sublime Merge版本
wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -sudo apt-get install apt-transport-https# Stable
echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list# Dev
echo "deb https://download.sublimetext.com/ apt/dev/" | sudo tee /etc/apt/sources.list.d/sublime-text.list# update and install
sudo apt-get update
sudo apt-get install sublime-merge
非Ubuntu请看这里:跳转
启动Sublime安装插件的功能可以从我的另一篇博文中看到。
- Sublime Text 3的使用教程
安装完毕之后,我来推荐下用Sublime查看Android源码需要的插件和操作。
插件
看源码最核心的就是建立索引,能够进行代码间的跳转和搜索方法定位到文件。所幸的就是Sublime的CTags
插件完全可以胜任,因此只需要安装这个就可以实现了。
Linux需要安装该环境:
sudo apt-get install exuberant-ctags
在Sublime中使用ctrl+shift+P
输入install package
搜索ctags
,并安装。
安装后会在Sublime左边有文件栏,点击项目根目录,右键,会出现Ctag:Rebuild Tags
的菜单。点击它,然后会生成.tags
和.tags_sorted_by_file
的文件。【时间很长,大概1个小时多,我生成的文件的大小大概为.tags
->2.6G和tags_sorted_by_file
->2.6G】
然后在你代码中, 光标放在某个函数上, 点击ctrl+shift+鼠标左键
就可以跳转到函数声明的地方。
其他插件
插件 | 作用 | 使用 |
---|---|---|
Reveal in Side Bar | 定位打开文件到左侧目录结构 | 在打开的文件中右键选Reveal in Side Bar |
SyncedSideBar | 定位打开文件到左侧目录结构 | - |
DocBlockr | 生成注释模板 | - |
Alignment | 规格化代码的,常用的是将等号对齐。 | - |
Terminal | 在Sublime中直接打开命令行。 | 详见下方说明。 |
- 更多的插件请见
- 更多Linux软件
Terminal
以下仅仅适用于Mac,其他详见:sublime 配置terminal终端
使用
command+shift+P
输入install package
打开Packages的安装入口,输入Terminal
,安装该插件。Preferences->Packages Settings->Terminal->Settings User
中添加以下内容:
{"terminal": "iTerm2-v3.sh","parameters": ["--open-in-tab"] # 如果不需要新增tab可以去掉,默认新建一个Terminal
}
Preferences->Packages Settings->Terminal->Key Binddings User
中添加以下内容:
[{"command": "open_terminal","keys": ["ctrl+shift+t"]},{"command": "open_terminal_project_folder","keys": ["ctrl+shift+alt+t"]}
]
- 在Sublime中使用
command+shift+t
就可以打开Terminal了。
Other:Terminal: No place to open terminal to #91
主题
还是装个主题吧……
ctrl+shift+p
,输入install package
,查找Material Theme
打开设置面板,Preferences->Settings->User
{"color_scheme": "Packages/Material Theme/schemes/Material-Theme.tmTheme","font_size": 12,"ignored_packages":["Vintage"],"theme": "Material-Theme.sublime-theme"
}
配置
CTags
修改配置
- 需要修改CTags的默认路径:
- 将Preferences->Package Setting->CTags->Settings Default复制到Preferences->Package Setting->CTags->Settings User下。
- 修改
extra_tag_paths
成你安装的CTags的安装路径,Linux可以使用which ctags
查看。
"extra_tag_paths": [[["source.python", "linux"], "/usr/bin/ctags"]
],
修改快捷键
- 将Preferences->Package Setting->CTags->Key Bindings-Default复制到Preferences->Key Bindings下,修改成自己喜欢的快捷键就好了。
快捷键介绍
快捷键 | 说明 |
---|---|
ctrl+P | 搜索类名 |
ctrl+shift+P | 查找某个功能 |
ctrl+shift+鼠标左键 | 跳转到引用/定义的位置 |
学习Android源码
- 强烈推荐gityuan大佬的博客:Android系统架构开篇
- 阅读ANDROID源码的一些姿势
- Android内核学习笔记 - imyfriend的专栏 - 博客频道 - CSDN.NET
附录
- Ubuntu下使用Sublime text 3阅读android源代码
Android Sublime源码阅读姿势相关推荐
- android alogd,Android调试源码正确姿势打开ALOGV
Android调试源码正确姿势打开ALOGV 前言 当我沉浸在Android C++的世界中,准备通过其相关的ALOGV日志显示出来的时候,却发现怎么在logcat里面也找不到相关的日志,也许对And ...
- Android Framework源码阅读计划(2)——LocationManagerService.java
Android Framework源码阅读计划 Android Framework源码阅读计划(1)--LocationManager.java Android Framework源码阅读计划(2)- ...
- Android aosp源码阅读
前言 最近因为找工作,需要频繁查阅Android源码.因此,打算在本地硬盘上下载Android源码,通过Android Studio来阅读. Android 源码构建:https://source.a ...
- Android Pie源码阅读 -----深入理解init(一)
在阅读源码之前,我们应要熟悉整个Android的系统架构,在针对某一层进行深入理解,否则东看西看没有方向没有目标会导致思绪紊乱,这样读源码的效果不佳 这篇文章主要参考gityuan阅读Android ...
- android sensor源码,阅读android有关sensor的源码总结 - JerryMo06的专栏 - CSDN博客
虽然这篇文章写得很差,因为赶时间,所以就匆匆忙忙地写出来自己作一个笔记.但是我想对大家应该有一点帮助. 1.有关sensor在Java应用程序的编程(以注册多个传感器为例,这程序是我临时弄出来的,可能 ...
- Android Linkage-RecyclerView源码阅读
当前版本 1.9.2 项目地址 概述 自定义LinkageRecyclerView控件,该控件布局中含有两个RecyclerView控件,左边为主Rv,右边为次Rv. 次Rv顶部有一个悬挂头View, ...
- 大牛们是怎么阅读 Android 系统源码的?
转载自https://www.zhihu.com/question/19759722 作者:王宇龙 链接:https://www.zhihu.com/question/19759722/answer/ ...
- android源码阅读笔记1-配置源码路径/阅读源码方法讨论
开始之前 android studio中配置android源码路径 android studio中有源码的路径,你只需要打开SDK Manager下载源码然后重启android studio即可查看源 ...
- 12.源码阅读(app启动流程-android api 26)
activity的启动流程之前已经通过源码了解了,那么app的启动流程是怎样的,从我们按下app的图标,到应用启动起来显示出画面,中间都经历了什么? 安卓是基于java的,所以和java有一定的相似性 ...
- Android系统源码在线阅读(Android4.4~Android13.0)
原文链接 Android系统源码在线阅读(Android4~Android13) Android系统源码下载.编译.刷机 玩转Android10(二)刷机操作 Android系统镜像刷机方法(一) ...
最新文章
- moco 搭建接口mock环境入门
- E. Number Challenge
- [LeetCode] Power of Two 判断2的次方数
- C++学习之路 | PTA乙级—— 1047 编程团体赛 (20 分)(精简)
- clickhouse 获取几天前的日期
- java 重力脚本_Java中非常简单的脚本解析器
- 关于NSStringFromClass的一点见解
- 【读书笔记《Android游戏编程之从零开始》】13.游戏开发基础(Paint 画笔)
- 深究C语言4.链表和结构体
- 尼古拉斯.海伦.波特
- 可视化全链路日志追踪
- DDD之实体与值对象区别
- axure 授权码,试用期过了也可以用
- Thinkpad e450c 如何关闭触控板
- 《Microduino实战》——第1章 开 源 硬 件
- 软阴影(PCF、PCSS)
- 微信小程序踩坑记录 ------- canvas 生成带小程序码的微信朋友圈分享图
- 利用Word的邮件合并功能,自动发送工资表邮件(亲自实践)
- XX项目的现状与对策
- htonl, ntohl两种实现
热门文章
- ROW_NUMBER() OVER()函数用法;(分组,排序),partition by (转)
- 裴(pei)蜀定理 知识点
- Sharepoint对List增删改操作
- 茴香豆的n种写法之①——linQ Join写法
- 送走2007 ^_^ 迎来2008
- 现代语音信号处理之线性预测分析
- mysql用户管理设置权限_mysql 用户管理和权限设置
- Qt 21行实现 十六进制字符串互转QByteArray QString Hex互转QByteArray
- mysql 执行顺序_MySQL 基础知识掌握
- C++/Qt中文显示乱码与string/wstring/wchar_t转换