经验总结之Android framework开发
本人在某做手机ROM的厂商工作近两年,虽然工作年限不长,但是对此类“工种”已有比较初步的认识,写下来供大家参考借鉴。
framework的工作相对于其他比较成熟的软件开发类似,分为维护和需求开发。
需求开发需要注意的是:
1 相关功能的现有模块需要非常熟悉,否则会有非常大的风险
2 所写代码尽量与已有类似的代码保持风格一致
3 必要的注释,写代码的时候认为代码的意图貌似是理所当然,但是当别人看你的代码或者过一段时间你自己查阅代码的时候,很有可能由于代码量过大,在代码的海洋中未必容易理解某一段代码的意图
4 找比自己能力强的,经验较为丰富的同事review代码。系统层毕竟是上层应用的基础,必须保证其极高的稳定性,不像app即使有一些bug可以快速的迭代和发版推送。
维护工作:
维护工作是一个争议较大的工作内容,很多人认为代码长期不敲容易能力降低,但是我并不是这么认为的。
目前大多数的员工都是刚踏入社会不久,虽然对工资待遇方面有所追求,但是我相信大多数人更希望追求的是学到知识技术,我认为维护的工作可以学到的是:
1 优秀的代码设计。Android的代码加工的顺序大致是Google源码->芯片厂商的修改->OEM厂商的修改。这些代码里积累了大量世界级优秀的代码设计方式,架构思想,这样咱们对代码的学习和认识的起步就是不低的,所以阅读大量的代码过后,我们再尝试写代码的时候,一般也不会写出低质量的代码
2 分析定位的技巧。一个经验丰富的工程师的价值,主要会体现在遇到问题时,能够分析定位解决问题的能力和效率,而很少会听说我这有个20年经验的工程师,他的价值在于别人一个小时能写成的代码他在一分钟就写出来了
下面谈谈我认为在刚踏入framework层维护开发的时候所需要注意和经历的阶段:
第一阶段:熟悉各种基本工具的使用,比如linux,git,sourceinsight,svn等等,当然基本的编程知识需要有,如果如java之类的使用都还不是很熟,建议先回家读书
第二阶段:对所需要维护模块的代码逐渐熟悉起来,可以通过定位问题来梳理代码流程,当然此时主要是通过log定位
第三阶段:这个阶段往往是一个瓶颈,因为可以直接通过Log定位的问题占大多数,这时候很多人就会自我感觉良好,也逐渐形成了惰性不再追求更多的知识,并且还会认为自己已经熟悉了很多的模块。比如你按照这种方式工作了五年,我保证你再出去也找不到工作,因为你并没有五年的工作经验,只是使用了一个月能达到的经验工作了五年!!!看代码,梳理流程,这是最基本的工作模式,这个时候我们追求更“牛逼”的分析手段,比如使用性能分析工具systrace和traceview,比如Google提供的功耗分析工具buttery historal2.0,比如ddms里的内存分析工具mat和层级观察器工具(能够直接对应到UI上)
第四阶段:追求性能稳定性的问题解决
第五阶段:Android整体架构,对方案设计的优劣有自己的认识,并且能提出更好的改进方案
经验总结之Android framework开发的更多相关文章
- 前阿里技术总监手打:452页Android Framework 精编内核解析
众所周知,Android是一个基于Linux实现的操作系统.但对于Linux内核来说,Android也仅仅只是一个运行在内核之上的应用程序,与其他运行在内核之上的应用程序没有任何区别. 所以Andro ...
- [Android Pro] 开发一流的 Android SDK:Fabric SDK 的创建经验
cp from : https://academy.realm.io/cn/posts/oredev-ty-smith-building-android-sdks-fabric/ Ty Smith T ...
- 如何调试Android Framework?
Linus有一句名言广为人知:Read the fucking source code. 但其实,要深入理解某个软件.框架或者系统的工作原理,仅仅「看」代码是远远不够的.就拿Android Frame ...
- 【Android 应用开发】GitHub 优秀的 Android 开源项目
原文地址为http://www.trinea.cn/android/android-open-source-projects-view/,作者Trinea 主要介绍那些不错个性化的View,包括Lis ...
- [Android Pro] 开发一流Android SDK
cp from : https://blog.csdn.net/dd864140130/article/details/53558011 本篇文章已授权微信公众号 guolin_blog (郭霖)独家 ...
- 关于 Android 平台开发相关的有哪些推荐书籍?
转自:http://www.zhihu.com/question/19579609 作者:Shan Huang 链接:http://www.zhihu.com/question/19579609/an ...
- 从事 Android应用开发4年有余,现在工资7500。很不爽!怎么办?
最近到某论坛看到一个帖子: 坐标北京,在一个公司从事android应用开发4年有余(毕业至今没换过公司).公司利润越来越大,工资却每年长1000,如今才到7500.琢磨着换工作,又不想扔下这四年来逐步 ...
- 【转】Android 底层开发的几点
我干了3年Android sdk开发,觉得到了瓶劲没法更进一步,于是花了一年多点时间,大概摸到点门径.根据前辈的经验,Android底层完全入门需要两年. 先说下我的入门过程:第零步,下载源码,我下的 ...
- Android安全开发之浅谈密钥硬编码
Android安全开发之浅谈密钥硬编码 作者:伊樵.呆狐@阿里聚安全 1 简介 在阿里聚安全的漏洞扫描器中和人工APP安全审计中,经常发现有开发者将密钥硬编码在Java代码.文件中,这样做会引起很大风 ...
随机推荐
- RunLoop(官方文档翻译)
循环运行 运行循环是与线程相关联的基本基础设施的一部分.一个运行循环是用于调度工作,并协调接收传入事件的事件处理循环.一个运行循环的目的是让你的线程繁忙时,有工作要做,把你的线程时有没有睡觉. 循环运 ...
- MFC窗口乱弹问题
操作过程将子窗口放到主窗口的OnInitDialog函数和OnPaint函数中调用,在本机没有异常,放到其他机器上发现子窗口莫名其妙的被调用,跟踪发现主窗口这两个函数不止调用一次,中间会因为其他如按钮 ...
- SqlServer删除登录账户
MSSM中登录账户无法删除的解决方法 资源管理器中选中C盘,输入SqlStudio.bin查询文件 右击点击"打开该文件位置",找到该文件删除即可.
- Rust的几个预测
写程序多年,语言也用过不下十种,对于Rust有种亲人的感觉,就像在梦中见到过似的.现在对于Rust特做出以下一些预测,希望Rust会有更大的影响力. 1. 当前的Rust的核心功能现以比较稳定,可以用 ...
- Ruby-递归和尾递归
递归和迭代的区别 递归: 1)递归就是在过程或函数里面调用自身; 2)在使用递归时,必须有一个明确的递归结束条件,称为递归出口. 迭代: 利用变量的原值推算出变量的一个新值.如果递归是自己调用自己的话 ...
- Java基础---AWT
流式布局FlowLayout package net.zyz; import java.awt.Button; import java.awt.FlowLayout; import java.awt. ...
- C++ 中数串互转、进制转换的类
/******************************************************************** created: 2014/03/16 22:56 file ...
- ASP.NET ZERO 学习 HangFire的使用
hangfire 是一个分布式后台执行服务. 官网:http://hangfire.io/ 1.启用 hangfire 2.Hangfire可以提供一个面板页面,实时显示所有后台作业的状态,你可以按它 ...
- java获取classpath
public class PathTest { public static void main(String[] args) { //获取根路径三种方式 System.out.println(Path ...
- for xml 字符串拼接
SELECT TOP 10 B.user_gid,LEFT(StuList,LEN(StuList)-1) as hobby FROM (SELECT user_gid,( SELECT CAST(a ...