Android App 开发技术图谱

来源:互联网 发布:java租车系统代码 编辑:程序博客网 时间:2024/05/30 23:52
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 开发技术图谱

96
anly_jun
2016.07.26 23:32* 字数 744

引言:
今天偶然看到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

  • Android Studio
  • Eclipse

3.2 调试工具

3.2.1 网络调试

  • Charles
  • Wireshark
  • Fiddler
  • tcpdump
  • Paw/Postman

3.2.2 内存分析

  • monitor
  • MAT

3.2.3 Android tools

  • adb
  • draw9patch
  • hierarchyviewer
  • uiautomatorviewer

3.3 版本管理

3.3.1 Git

  • Git命令
  • Github/GitLab

3.3.2 SVN

3.4 CodeReview

  • Gerrit
  • Github pull request

3.5 Bug/任务管理

  • Redmine
  • JIRA
  • Bugzilla
  • Teambition
  • Tower

3.6 编译工具

  • Gradle

3.7 持续集成

  • Jenkins
  • Travis CI

3.8 应用分发

  • 蒲公英
  • fir.im

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

  • WiFi
  • Mobile网络
  • 网络状态监听

1.4 MultiMedia

  • Audio/Video
  • Camera/Gallery

1.5 GPS&Location&Map

1.5.1 系统定位

  • GPS定位
  • Network定位

3rd Map定位

  • 百度Map
  • 高德Map

2. App进阶

2.1 Process&Thread

2.1.1 Process

  • Linux进程
  • App进程原理

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 设计模式

  • OOD原则
  • 常用设计模式运用

3.4 ART&Dalvik

  • AOT compilation
  • GC
  • Bytecode&.Dex

3.5 自动化测试

  • monkey/monkey runner
  • UIAutomator
  • Espresso
  • Robotium

4. 扩展学习

4.1 响应式编程

4.1.1 Rx

  • RxJava
  • RxAndroid
  • RxBinding

4.1.2 Agera

4.2 主流开源库

4.2.1 快速开发

  • Android Annotation
  • ButterKnife

4.2.2 Views

  • 太多

4.2.3 HTTP模型

  • Retrofit
  • OkHttp
  • Volley

4.2.4 图片处理

  • Glide
  • Fresco
  • Picasso
  • UIL

4.2.5 依赖注入

  • Dagger2

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=&#39;http://v.t.sina.com.cn/share/share.php?appkey=1881139527&#39;,u=z||d.location,p=[&#39;&amp;url=&#39;,e(u),&#39;&amp;title=&#39;,e(t||d.title),&#39;&amp;source=&#39;,e(r),&#39;&amp;sourceUrl=&#39;,e(l),&#39;&amp;content=&#39;,c||&#39;gb2312&#39;,&#39;&amp;pic=&#39;,e(p||&#39;&#39;)].join(&#39;&#39;);function%20a(){if(!window.open([f,p].join(&#39;&#39;),&#39;mb&#39;,[&#39;toolbar=0,status=0,resizable=1,width=440,height=430,left=&#39;,(s.width-440)/2,&#39;,top=&#39;,(s.height-430)/2].join(&#39;&#39;)))u.href=[f,p].join(&#39;&#39;);};if(/Firefox/.test(navigator.userAgent))setTimeout(a,0);else%20a();})(screen,document,encodeURIComponent,&#39;&#39;,&#39;&#39;,&#39;http://cwb.assets.jianshu.io/notes/images/4976621/weibo/image_88b289420c2a.jpg&#39;, &#39;推荐 @anly-jun 的文章《Android App 开发技术图谱》( 分享自 @简书 )&#39;,&#39;http://www.jianshu.com/p/39c63eff3c36?utm_campaign=maleskine&amp;utm_content=note&amp;utm_medium=reader_share&amp;utm_source=weibo&#39;,&#39;页面编码gb2312|utf-8默认gb2312&#39;));" 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=&#39;http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url=&#39;+e(&#39;http://www.jianshu.com/p/39c63eff3c36?utm_campaign=maleskine&amp;utm_content=note&amp;utm_medium=reader_share&amp;utm_source=qzone&#39;)+&#39;&amp;title=&#39;+e(&#39;推荐 anly_jun 的文章《Android App 开发技术图谱》&#39;),x=function(){if(!window.open(r,&#39;qzone&#39;,&#39;toolbar=0,resizable=1,scrollbars=yes,status=1,width=600,height=600&#39;))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=&#39;https://twitter.com/share?url=&#39;+e(&#39;http://www.jianshu.com/p/39c63eff3c36?utm_campaign=maleskine&amp;utm_content=note&amp;utm_medium=reader_share&amp;utm_source=twitter&#39;)+&#39;&amp;text=&#39;+e(&#39;推荐 anly_jun 的文章《Android App 开发技术图谱》( 分享自 @jianshucom )&#39;)+&#39;&amp;related=&#39;+e(&#39;jianshucom&#39;),x=function(){if(!window.open(r,&#39;twitter&#39;,&#39;toolbar=0,resizable=1,scrollbars=yes,status=1,width=600,height=600&#39;))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=&#39;https://www.facebook.com/dialog/share?app_id=483126645039390&amp;display=popup&amp;href=http://www.jianshu.com/p/39c63eff3c36?utm_campaign=maleskine&amp;utm_content=note&amp;utm_medium=reader_share&amp;utm_source=facebook&#39;,x=function(){if(!window.open(r,&#39;facebook&#39;,&#39;toolbar=0,resizable=1,scrollbars=yes,status=1,width=450,height=330&#39;))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=&#39;https://plus.google.com/share?url=&#39;+e(&#39;http://www.jianshu.com/p/39c63eff3c36?utm_campaign=maleskine&amp;utm_content=note&amp;utm_medium=reader_share&amp;utm_source=google_plus&#39;),x=function(){if(!window.open(r,&#39;google_plus&#39;,&#39;toolbar=0,resizable=1,scrollbars=yes,status=1,width=450,height=330&#39;))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:&#39;&#39;,r=&#39;http://www.douban.com/recommend/?url=&#39;+e(&#39;http://www.jianshu.com/p/39c63eff3c36?utm_campaign=maleskine&amp;utm_content=note&amp;utm_medium=reader_share&amp;utm_source=douban&#39;)+&#39;&amp;title=&#39;+e(&#39;Android App 开发技术图谱&#39;)+&#39;&amp;sel=&#39;+e(s)+&#39;&amp;v=1&#39;,x=function(){if(!window.open(r,&#39;douban&#39;,&#39;toolbar=0,resizable=1,scrollbars=yes,status=1,width=450,height=330&#39;))location.href=r+&#39;&amp;r=1&#39;};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); })();


原创粉丝点击