首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

【幻灯片分享】跟Android源代码一起工作 | 海豚浏览器 胡继堂 | Android DevCamp

2012-09-17 
【幻灯片分享】和Android源代码一起工作 | 海豚浏览器 胡继堂| Android DevCamp资深程序员多年代码实践总结:

【幻灯片分享】和Android源代码一起工作 | 海豚浏览器 胡继堂 | Android DevCamp

资深程序员多年代码实践总结:《和Android源代码一起工作》 | Android DevCamp 

话题简介:本演讲将结合讲师多年的代码实践经验,主要介绍Android源代码以及相关内容,让应用开发者了解到如何利用Android源代码来提高自己对Android系统的理解,以及通过一些高级技巧来定位和分析产品中的问题,充分利用Android的各种特性,从而改进和增强自己的应用。演讲内容将分为分中级篇和高级篇。中级篇内容包含:下载和同步Android源代码,Android源代码目录结构分析,Android源代码和Eclipse的整合和浏览。高级篇内容包含:Android源代码编译,系统编译,模块编译,Android源代码Java代码调试,Android源代码Native代码调试。演讲中也将穿插一些实践案例进行分析。

 讲师介绍:胡继堂,原微软亚洲工程院软件开发工程师,目前在百纳信息担任研发主管,负责海豚浏览器Android版的开发工作。2010年开始从事Android平台上的开发,熟悉Android应用开发的各种技术,并喜欢分析Android系统框架和底层机制。自工作以来的方向一直都在移动设备的系统和软件开发上,对移动互联网有很大的热情。


【幻灯片在线观看】*:

和Android源代码一起工作 | 海豚浏览器 胡继堂 from Shining @DevCamp

备注:* 因为炫姐姐对SlideShare这一平台的偏爱,尽管需要使点小技巧才能上传分享,但是炫姐姐还是坚持选择了这一功能强大却简洁好用的平台。一来对国外这些开发出优秀的工具和平台、造福于互联网和人类的团队表示致敬,二来则是对国内对于这些优秀的工具和平台的限制表示一下立场。读者如果不能正常浏览,那么需要像炫姐姐一样用点小技巧。而对于那些还是不知道炫姐姐在说什么的小白读者,可以移步到这里查询原因。


【幻灯片下载页面】: Android DevCamp幻灯片下载:和Android源代码一起工作 | 海豚浏览器 胡继堂  -来自CSDN下载频道(不需要积分,自由下载)


【幻灯片内容刚要】:
  • 1. Android  DevCamp  Produced  by  CSDN    
  • 2. 和Android源 代码 ?一起工作 胡继堂 海 豚浏览器开 发主管
  • 3. 问题   0? 为什么Touch  Event没有收到?   0? 为什么界面上某些View的位置和大小和我预想的不一 样?   0? 怎么知道我的UI动画有多流畅?  
  • 4. Agenda  0? 下载与浏览0? 调试与编译0? 源代码利用示例0? Q&A
  • 5. 下载与浏览  
  • 6. 准备环境 (仅同步代码) 操作系统 系统工具
  • 7. 准备足够的空间0? 2.3源代码需要10G空间0? 4.0源代码需要20G空间
  • 8. 用repo同步代码0? repo: 管理多个GIT项目的工具。0? 下载repo 0? https://dl-ssl.google.com/dl/googlesource/git-repo/repo0? 初始化,选择代码版本 0? 新建?一个目录存放源代码 (假设为$srcroot) 0? repo  init  --‐u  https://android.googlesource.com/platform/manifest  --‐b   <branch  or  tag>   0? Branch or tag = froyo, gingerbread, android-4.0.1_r1…0? 参考 0? http://source.android.com/source/downloading.html
  • 9. 开始同步0? 进入源代码目录   repo  sync  [--‐jn]  
  • 10. 用Eclipse来浏览源代码(Java)假设Android源代码放在$srcroot 拷贝$srcroot/development/ide/eclipse/.classpath 到代码根目录 $srcroot 用Eclipse创建?一个空的Java工程 将工程的代码位置设为$srcroot Done
  • 11. Tips 设置eclipse.ini,防止Out Of Memory -Xms128m -Xmx512m -XX:MaxPermSize=256m 常用快捷键 Ctrl+shift+T 查看类型 Ctrl+shift+R 查看资源 Ctrl+o 查看类里的成员 Ctrl+T 查看类的继承关系 http://source.android.com/source/using-eclipse.html
  • 12. $srcroot/libcore/   $srcroot/dalvik/   $srcroot/framework/base   $srcroot/packages/  Android代码组织
  • 13. $srcroot/bionic/libc   $srcroot/external/<project>  Android代码组织
  • 14. 调试与编译  
  • 15. 用Eclipse调试Java代码0? 前提一:需将Android源代码加入Eclipse  0? 前提二:Device或模拟器的代码能和同步的代码匹配   0? 模拟器:基本上都能找到对应的代码   0? Device:需用官方的ROM,推荐Nexus  One(2.1--‐2.3)   Nexus  S(2.3--‐4.1)和Galaxy  Nexus(4.0--‐4.1)  
  • 16. 查看callstack上的代码 ?? 选中callstack上 要查看的方法 ?? 右键选择Edit Source Lookup ?? 将Android代码工 程加到Source Lookup里去
  • 17. 在Android源代码里设断点就直接在Android源代码里设断点。。。
  • 18. 调试Native代码?  0? 等等,我们还差点东西--‐--‐symbol  
  • 19. Android系统编译0? 目的   0? 生成调试Native代码需要的symbol   0? 打开系统里的一些调试选项,方便调试   0? 修改系统代码,添加Log,分析系统行为   0? 定制Android的一些功能  
  • 20. 系统准备   Ubuntu  10.04  –  12.04   ?? 10.5  (Leopard)  or  10.6  (Snow  Leopard)   ?? MacOS  10.5  SDK  更多内容:    http://source.android.com/source/initializing.html  
  • 21. 设备选择  0? Google的Nexus系列   0? 解锁方便 [fastboot  oem  unlock]   0? 驱动获取方便   0? 源代码里直接有预设的编译目标  0? 模拟器   Nexus  One   Nexus  S   Galaxy  Nexus  
  • 22. 准备编译  1.? cd  $srcroot  2.? source  build/envsetup.sh  3.? lunch  
  • 23. 编译目标解释  0? 常见格式:full_[code  name]--‐[build  type]  0? 常见code  name   0? Nexus  One    --‐  passion   0? Nexus  S      --‐  crespo   0? Galaxy  Nexus    --‐  maguro   0? 没有code  name表示编译成emulator  0? Build  type   0? user   0? userdebug   0? eng  [eng=engineering  开发目的优先选择它]  
  • 24. 开始编译   make  [--‐jn]    0? 你还有更多选择   0? make  systemimage   0? make  bootimage   0? make  recovery  
  • 25. System  Image  Android核心功能   Recovery   升级/刷机   类似PC的WinPE   Boot  Image   内核与驱动   Boot  Loader   相当于BIOS  
  • 26. 调试native代码0? 工具:gdb  +  gdbserver  
  • 27. 用GDB调试native代码$  #将system分区设为可写  $  adb  remount        $  #把gdbserver放到手机或者模拟器上  $  adb  push  $out/system/bin/gdbserver  /system/bin/  #    $  #进入源代码根目录  $  cd  $srcroot    $  #  获取要debug的程序名(package  name)  $  pid  app_name  xxxxx    $  #开始调试  $  gdbclient  :  :  xxxxx  
  • 28. 0? 下载与浏览0? 调试与编译0? 源代码利用示例0? Q&A
  • 29. 查看FPS 0? FPS:  Frame  per  second   0? 决定UI的流畅度,越高越流畅  
  • 30. 2.3(或以下)0? frameworks/base/core/java/android/view/ViewRoot.java0? 在“private void draw(boolean fullRedrawNeeded)”找到下面的 代码(两处),做修改
  • 31. 缺点0? 没有log输出,不便于自动化测试统计0? 通过Canvas把FPS始终显示在屏幕的左下角,不在 Canvas的无效区域以内时,FPS值无法重绘
  • 32. 4.0 (或以上) 0? frameworks/base/core/java/android/view/ ViewRootImpl.java   0? 将DEBUG_FPS常量设为true   0? FPS通过log输出  
  • 33. 0? 下载与浏览0? 调试与编译0? 源代码利用示例0? Q&A
  • 34. 谢谢  jthu@bainainfo.com   

热点排行