要如何成为Android架构师?
搭建自己的知识框架,全面提升自己的技术体系,并且往底层源码方向深入钻研。
大多数技术人喜欢用思维脑图来构建自己的知识体系,一目了然。这里给大家分享一份大厂主流的Android架构师技术体系,可以用来搭建自己的知识框架,或者查漏补缺;
对应这份技术大纲,我也整理了一套Android高级架构师完整系列的视频教程,主要针对3-5年Android开发经验以上,需要往高级架构师层次学习提升的同学,希望能帮你突破瓶颈,跳槽进大厂;
最后我必须强调几点:
1.搭建知识框架可不是说你整理好要学习的知识顺序,然后看一遍理解了能复制粘贴就够了,大多都是需要你自己读懂源码和原理,能自己手写出来的。
2.学习的时候你一定要多看多练几遍,把知识才吃透,还要记笔记,这些很重要! 最后你达到什么水平取决你消化了多少知识
3.最终你的知识框架应该是一个完善的,兼顾广度和深度的技术体系。然后经过多次项目实战积累经验,你才能达到高级架构师的层次。
你只需要按照在这个大的框架去填充自己,年薪40W一定不是终点,技术无止境
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
- 显示包含,并忽略大小写的logcat
logcat \| grep -i <str>
例:进入adb shell输入logcat | grep ABC 显示包含ABC的log
-
打印tag为xys标签
log adb logcat -s xys
-
读完所有log后返回,而不会一直等待
logcat -d
-
清空log并退出
logcat -c
-
打印最近的
count logcat -t <count>
-
格式化输出Log,其中format有如下可选值:
logcat -v <format>
brief — 显示优先级/标记和原始进程的PID (默认格式)
process — 仅显示进程PID
tag — 仅显示优先级/标记
thread — 仅显示进程:线程和优先级/标记
raw — 显示原始的日志信息,没有其他的元数据字段
time — 显示日期,调用时间,优先级/标记,PID
long —显示所有的元数据字段并且用空行分隔消息内容
例: 查看某个进程的日志 adb logcat -v process |grep 8607
- 保存log到文件
adb logcat > ./log.txt
进行屏幕截图
screencap 命令是一个用于对设备显示屏进行屏幕截图的 shell 实用程序。在 shell 中,此语法为:
screencap filename
要从命令行使用 screencap,请输入以下命令:
$ adb shell screencap /sdcard/screen.png
以下屏幕截图会话示例向您展示使用 adb shell 捕获屏幕截图,并使用 pull 命令从设备下载此文件:
$ adb shell
shell@ $ screencap /sdcard/screen.png
shell@ $ exit$ adb pull /sdcard/screen.png
录制视频
screenrecord 命令是一个用于录制设备(运行 Android 4.4(API 级别 19)及更高版本)显示屏的 shell 实用程序。此实用程序将屏幕 Activity 录制到 MPEG-4 文件。
注:音频不与视频文件一起录制。
开发者可以使用此文件创建宣传视频或培训视频。在 shell 中,此语法为:
screenrecord [options] filename
要从命令行使用 screenrecord,请输入以下命令:
$ adb shell screenrecord /sdcard/demo.mp4
按 Control + C 停止屏幕录制,否则,到三分钟或 --time-limit 设置的时间限制时,录制将自动停止。
要开始录制设备屏幕,请运行 screenrecord 命令以录制视频。然后,运行 pull 命令从设备将此视频下载到主计算机。下面是一个录制会话示例:
$ adb shell
shell@ $ screenrecord --verbose /sdcard/demo.mp4(press Control + C to stop)
shell@ $ exit
$ adb pull /sdcard/demo.mp4
screenrecord 实用程序可以任何支持的分辨率和所需的比特率进行录制,同时保留设备显示屏的纵横比。默认情况下,此实用程序以原生显示分辨率和屏幕方向进行录制,最大时长为三分钟。
设置端口转发
您可以使用 forward 命令设置任意端口转发 — 将对特定主机端口的请求转发到模拟器/设备实例上的其他端口。下面向您介绍如何设置主机端口 6100 到模拟器/设备端口 7100 的转发:
adb forward tcp:6100 tcp:7100
通过 WLAN 连接到设备
一般情况下,通过 USB 使用 adb。不过,也可以按照下面的说明通过 WLAN 使用它。
- 将 Android 设备和 adb 主计算机连接到这两者都可以访问的常用 WLAN 网络。请注意,并非所有访问点均适用;您可能需要使用已正确配置防火墙的访问点以支持 adb 的访问点。
注:如果您尝试连接到 Android Wear 设备,则通过关闭与其连接的手机的蓝牙强制将它连接到 WLAN。
-
使用 USB 电缆将设备连接到主计算机。
-
设置目标设备以侦听端口 5555 上的 TCP/IP 连接。
$ adb tcpip 5555
-
从目标设备断开 USB 电缆连接。
-
查找 Android 设备的 IP 地址。例如,在 Nexus 设备上,您可以通过访问 Settings > About tablet(或 About phone) > Status > IP address 查找 IP 地址。或者,在 Android Wear 设备上,您可以通过访问 Settings > Wi-Fi Settings > Advanced > IP address 查找 IP 地址。
-
连接至设备,通过 IP 地址识别此设备。
$ adb connect device_ip_address
- 请确认您的主计算机已连接至目标设备:
$ adb devices
List of devices attached
device_ip_address:5555 device
现在,您可以开始操作了!
如果 adb 连接丢失:
-
请确保您的主机仍与您的 Android 设备连接到同一个 WLAN 网络。
-
通过再次执行 adb connect 步骤重新连接。
-
如果无法连接,则重置 adb 主机:
adb kill-server
然后,从头开始操作。
停止方法:
adb disconnect //断开wifi连接
adb usb //切换到usb模式
其他操作
-
获取序列号
adb get-serialno
-
重启到bootloader,即刷机模式
adb reboot bootloader
-
重启到recovery,即恢复模式
adb reboot recovery
-
获取机器MAC地址
adb shell cat /sys/class/net/wlan0/address
-
查看占用内存排序
adb shell top
-
查看占用内存前6的
app:adb shell top -m 6
-
刷新一次内存信息,然后返回:
adb shell top -n 1
-
查询各进程内存使用情况:
adb shell procrank
-
杀死一个进程:
adb shell kill [pid]
-
查看进程列表:
adb shell ps
-
查看指定进程状态:
adb shell ps -x [PID]
-
查看后台services信息:
adb shell service list
-
查看当前内存占用:
adb shell cat /proc/meminfo
-
查看IO内存分区:
adb shell cat /proc/iomem
-
将system分区重新挂载为可读写分区:
adb remount
-
列出目录下的文件和文件夹,等同于dos中的dir命令:
adb shell ls
-
进入文件夹,等同于dos中的cd 命令:
adb shell cd <folder>
-
重命名文件:
adb shell rename path/oldfilename path/newfilename
-
删除system/avi.apk:
adb shell rm /system/avi.apk
-
删除文件夹及其下面所有文件:
adb shell rm -r <folder>
-
移动文件:
adb shell mv path/file newpath/file
-
设置文件权限:
adb shell chmod 777 /system/fonts/DroidSansFallback.ttf
-
新建文件夹:
adb shell mkdir path/foldelname
-
查看文件内容:
adb shell cat <file>
-
查看wifi密码:
adb shell cat /data/misc/wifi/*.conf
-
查看bug报告:
adb bugreport
-
跑monkey:
adb shell monkey -v -p your.package.name 500 adb -s 192.168.244.151:5555 shell monkey -v -p com.bolexim 500
附表
下表中, 箭头左边为keycode值,箭头右边为keycode的含义,部分用中文标注
0 –> “KEYCODE_UNKNOWN”
1 –> “KEYCODE_MENU”
2 –> “KEYCODE_SOFT_RIGHT”
3 –> “KEYCODE_HOME” //Home键
4 –> “KEYCODE_BACK” //返回键
5 –> “KEYCODE_CALL”
6 –> “KEYCODE_ENDCALL”
7 –> “KEYCODE_0” //数字键0
8 –> “KEYCODE_1”
9 –> “KEYCODE_2”
10 –> “KEYCODE_3”
11 –> “KEYCODE_4”
12 –> “KEYCODE_5”
13 –> “KEYCODE_6”
14 –> “KEYCODE_7”
15 –> “KEYCODE_8”
16 –> “KEYCODE_9”
17 –> “KEYCODE_STAR”
18 –> “KEYCODE_POUND”
19 –> “KEYCODE_DPAD_UP”
20 –> “KEYCODE_DPAD_DOWN”
21 –> “KEYCODE_DPAD_LEFT”
22 –> “KEYCODE_DPAD_RIGHT”
23 –> “KEYCODE_DPAD_CENTER”
24 –> “KEYCODE_VOLUME_UP” //音量键+
25 –> “KEYCODE_VOLUME_DOWN” //音量键-
26 –> “KEYCODE_POWER” //Power键
27 –> “KEYCODE_CAMERA”
28 –> “KEYCODE_CLEAR”
29 –> “KEYCODE_A” //字母键A
30 –> “KEYCODE_B”
31 –> “KEYCODE_C”
32 –> “KEYCODE_D”
33 –> “KEYCODE_E”
34 –> “KEYCODE_F”
35 –> “KEYCODE_G”
36 –> “KEYCODE_H”
37 –> “KEYCODE_I”
38 –> “KEYCODE_J”
39 –> “KEYCODE_K”
40 –> “KEYCODE_L”
41 –> “KEYCODE_M”
42 –> “KEYCODE_N”
43 –> “KEYCODE_O”
44 –> “KEYCODE_P”
45 –> “KEYCODE_Q”
46 –> “KEYCODE_R”
47 –> “KEYCODE_S”
48 –> “KEYCODE_T”
49 –> “KEYCODE_U”
50 –> “KEYCODE_V”
总结
Android架构学习进阶是一条漫长而艰苦的道路,不能靠一时激情,更不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以:贵在坚持!
上面分享的字节跳动公司2020年的面试真题解析大全,笔者还把一线互联网企业主流面试技术要点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
就先写到这,码字不易,写的很片面不好之处敬请指出,如果觉得有参考价值的朋友也可以关注一下我
①「Android面试真题解析大全」PDF完整高清版+②「Android面试知识体系」学习思维导图压缩包阅读下载,最后觉得有帮助、有需要的朋友可以点个赞
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
下我**
①「Android面试真题解析大全」PDF完整高清版+②「Android面试知识体系」学习思维导图压缩包阅读下载,最后觉得有帮助、有需要的朋友可以点个赞
[外链图片转存中…(img-ONssjnsC-1715367633092)]
[外链图片转存中…(img-ni8uiT7Q-1715367633092)]
[外链图片转存中…(img-q5P9sqqe-1715367633092)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!