Android App 开发技术图谱 - 简书
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-35169517-1', 'auto'); ga('send', 'pageview'); var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "//hm.baidu.com/hm.js?0c0e9d9b1e7d617b3e6842e85b9fb068"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();
Android App 开发技术图谱
引言:
今天偶然看到StuQ的技术图谱, 找了找竟然没有Android开发的. 想起之前自己弄了一个, 翻出来看看并不过时, 整理下发出, 大家共同进步.
转载请注明出处: 简书/anly_jun/Android App 开发技术图谱
图片比较大, 加载较慢, 请等待~~
Android_App_Skill_Map
1. 操作系统
Windows/MacOSX/Linux
2. 编程语言
- Java
- HTML/JS (Hybrid/Web App)
- C/C++ (NDK)
- SQL (DB)
- Kotlin
3. 开发工具
3.1 IDE
3.2 调试工具
3.2.1 网络调试
- Charles
- Wireshark
- Fiddler
- tcpdump
- Paw/Postman
3.2.2 内存分析
- adb
- draw9patch
- hierarchyviewer
- uiautomatorviewer
3.3 版本管理
3.3.1 Git
3.3.2 SVN
3.4 CodeReview
- Gerrit
- Github pull request
3.5 Bug/任务管理
- Redmine
- JIRA
- Bugzilla
- Teambition
- Tower
3.6 编译工具
3.7 持续集成
3.8 应用分发
1. App基础
1.1 基本组件
- Activity
- Service
- Content Provider
- Broadcast Receiver
- Intent/Intent Filter
- App Manifest File
1.2 UI
- Layouts
- Widgets
- Resources
- Animations
- 设备适配
1.3 Connectivity
- Audio/Video
- Camera/Gallery
1.5 GPS&Location&Map
1.5.1 系统定位
3rd Map定位
2. App进阶
2.1 Process&Thread
2.1.1 Process
2.1.2 AIDL
2.1.3 Handler/Looper/MQ/Thread
2.1.4 Loader
2.1.5 AsyncTask
2.2 性能优化
2.2.1 ANR
2.2.2 布局层级性能优化
2.3 内存优化
2.3.1 内存检测工具
2.3.2 内存分析工具
2.3.3 Bitmap优化
2.3.4 内存泄露查找及分析
2.5 网络优化
2.5.1 API优化
2.5.2 低网速下优化
2.5.3 流量使用优化
2.6 单元测试
3. App高级
3.1 相关原理熟悉
3.1.1 Activity
- 启动流程
- 生命周期回调原理
- 与View/Window的关系
- 与Fragment的关系
3.1.2 View/Window
- View/Window关系
- View渲染
- View事件分发处理流程
3.1.3 编译打包
3.2 Hybrid App
3.2.1 与Native App的异同
3.2.2 主流框架
- PhoneGap
- ionic
- React Native
3.3 架构能力
3.3.1 架构
- MVC
- MVP
- MVVM
- Flux
- Clean Architecture
3.3.2 App框架
3.3.3 设计模式
3.4 ART&Dalvik
- AOT compilation
- GC
- Bytecode&.Dex
3.5 自动化测试
- monkey/monkey runner
- UIAutomator
- Espresso
- Robotium
4. 扩展学习
4.1 响应式编程
4.1.1 Rx
4.1.2 Agera
4.2 主流开源库
4.2.1 快速开发
- Android Annotation
- ButterKnife
4.2.2 Views
4.2.3 HTTP模型
4.2.4 图片处理
4.2.5 依赖注入
4.2.6 数据库
- ORMLite
- GreenDAO
- Realm
- Sugar
4.2.7 辅助
- Logger
- LeakCanary
- DbInspector
本文已上传至Github AndroidDevResources 项目, 欢迎Fork, 提出意见.
</div>
<!-- -->
<div class="show-foot">
<a class="notebook" href="/nb/2866991">
<i class="iconfont ic-search-notebook"></i>
<span>Android经验谈</span>
© 著作权归作者所有
<!-- 文章底部作者信息 -->
<div class="follow-detail">
<div class="info">
<a class="avatar" href="/u/bc1dacc65fae">
<img src="//upload.jianshu.io/users/upload_avatars/851999/e2599a8c087e.png?imageMogr2/auto-orient/strip|imageView2/1/w/96/h/96" alt="96" />
anly_jun
</div>
<div class="signature">看看书, 写写字; 捣鼓捣鼓小技术.
个人博客: http://blog.lmj.wiki
<div class="support-author"></div>
<div class="meta-bottom">
<div class="btn like-group"></div>
<div class="share-group">
<a class="share-circle" data-action="weixin-share" data-toggle="tooltip" data-original-title="分享到微信">
<i class="iconfont ic-wechat"></i>
</a>
<a class="share-circle" data-action="weibo-share" data-toggle="tooltip" href="javascript:void((function(s,d,e,r,l,p,t,z,c){var%20f='http://v.t.sina.com.cn/share/share.php?appkey=1881139527',u=z||d.location,p=['&url=',e(u),'&title=',e(t||d.title),'&source=',e(r),'&sourceUrl=',e(l),'&content=',c||'gb2312','&pic=',e(p||'')].join('');function%20a(){if(!window.open([f,p].join(''),'mb',['toolbar=0,status=0,resizable=1,width=440,height=430,left=',(s.width-440)/2,',top=',(s.height-430)/2].join('')))u.href=[f,p].join('');};if(/Firefox/.test(navigator.userAgent))setTimeout(a,0);else%20a();})(screen,document,encodeURIComponent,'','','http://cwb.assets.jianshu.io/notes/images/4976621/weibo/image_88b289420c2a.jpg', '推荐 @anly-jun 的文章《Android App 开发技术图谱》( 分享自 @简书 )','http://www.jianshu.com/p/39c63eff3c36?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=weibo','页面编码gb2312|utf-8默认gb2312'));" data-original-title="分享到微博">
<i class="iconfont ic-weibo"></i>
</a>
<a class="share-circle" data-toggle="tooltip" href="http://cwb.assets.jianshu.io/notes/images/4976621/weibo/image_88b289420c2a.jpg" target="_blank" data-original-title="下载长微博图片">
<i class="iconfont ic-picture"></i>
</a>
<a class="share-circle more-share" tabindex="0" data-toggle="popover" data-placement="top" data-html="true" data-trigger="focus" href="javascript:void(0);" data-content='
<ul class="share-list">
<li><a href="javascript:void(function(){var d=document,e=encodeURIComponent,r='http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url='+e('http://www.jianshu.com/p/39c63eff3c36?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=qzone')+'&title='+e('推荐 anly_jun 的文章《Android App 开发技术图谱》'),x=function(){if(!window.open(r,'qzone','toolbar=0,resizable=1,scrollbars=yes,status=1,width=600,height=600'))location.href=r};if(/Firefox/.test(navigator.userAgent)){setTimeout(x,0)}else{x()}})();"><i class="social-icon-sprite social-icon-zone"></i><span>分享到QQ空间</span></a></li>
<li><a href="javascript:void(function(){var d=document,e=encodeURIComponent,r='https://twitter.com/share?url='+e('http://www.jianshu.com/p/39c63eff3c36?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=twitter')+'&text='+e('推荐 anly_jun 的文章《Android App 开发技术图谱》( 分享自 @jianshucom )')+'&related='+e('jianshucom'),x=function(){if(!window.open(r,'twitter','toolbar=0,resizable=1,scrollbars=yes,status=1,width=600,height=600'))location.href=r};if(/Firefox/.test(navigator.userAgent)){setTimeout(x,0)}else{x()}})();"><i class="social-icon-sprite social-icon-twitter"></i><span>分享到Twitter</span></a></li>
<li><a href="javascript:void(function(){var d=document,e=encodeURIComponent,r='https://www.facebook.com/dialog/share?app_id=483126645039390&display=popup&href=http://www.jianshu.com/p/39c63eff3c36?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=facebook',x=function(){if(!window.open(r,'facebook','toolbar=0,resizable=1,scrollbars=yes,status=1,width=450,height=330'))location.href=r};if(/Firefox/.test(navigator.userAgent)){setTimeout(x,0)}else{x()}})();"><i class="social-icon-sprite social-icon-facebook"></i><span>分享到Facebook</span></a></li>
<li><a href="javascript:void(function(){var d=document,e=encodeURIComponent,r='https://plus.google.com/share?url='+e('http://www.jianshu.com/p/39c63eff3c36?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=google_plus'),x=function(){if(!window.open(r,'google_plus','toolbar=0,resizable=1,scrollbars=yes,status=1,width=450,height=330'))location.href=r};if(/Firefox/.test(navigator.userAgent)){setTimeout(x,0)}else{x()}})();"><i class="social-icon-sprite social-icon-google"></i><span>分享到Google+</span></a></li>
<li><a href="javascript:void(function(){var d=document,e=encodeURIComponent,s1=window.getSelection,s2=d.getSelection,s3=d.selection,s=s1?s1():s2?s2():s3?s3.createRange().text:'',r='http://www.douban.com/recommend/?url='+e('http://www.jianshu.com/p/39c63eff3c36?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=douban')+'&title='+e('Android App 开发技术图谱')+'&sel='+e(s)+'&v=1',x=function(){if(!window.open(r,'douban','toolbar=0,resizable=1,scrollbars=yes,status=1,width=450,height=330'))location.href=r+'&r=1'};if(/Firefox/.test(navigator.userAgent)){setTimeout(x,0)}else{x()}})()"><i class="social-icon-sprite social-icon-douban"></i><span>分享到豆瓣</span></a></li>
</ul>
'>更多分享</a>
</div>
</div>
<div id="vue_comment"></div>
<script type="application/json" data-name="page-data">{"user_signed_in":false,"locale":"zh-CN","os":"windows","read_mode":"day","read_font":"font2","note_show":{"is_author":false,"is_following_author":false,"is_liked_note":false,"follow_state":0,"uuid":"2a54a476-b4fe-4d7d-adcd-132365df1e3d"},"note":{"id":4976621,"slug":"39c63eff3c36","user_id":851999,"notebook_id":2866991,"commentable":true,"likes_count":94,"views_count":7308,"public_wordage":744,"comments_count":10,"total_rewards_count":1,"is_author":false,"author":{"nickname":"anly_jun","total_wordage":68811,"followers_count":1860,"total_likes_count":2150}}}</script>
<script src="//cdn2.jianshu.io/assets/babel-polyfill-676833c6a4d68573b4c3.js" crossorigin="anonymous"></script>
<script src="//cdn2.jianshu.io/assets/web-base-3b4a327922f6c3b40878.js" crossorigin="anonymous"></script>
(function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();