More Related Content
Similar to 和Android源代码一起工作 | 海豚浏览器 胡继堂 (20)
More from imShining @DevCamp (7)
和Android源代码一起工作 | 海豚浏览器 胡继堂
- 3. 问题
0 为什么Touch
Event没有收到?
0 为什么界面上某些View的位置和大小和我预想的不一
样?
0 怎么知道我的UI动画有多流畅?
- 8. 用repo同步代码
0 repo: 管理多个GIT项目的工具。
0 下载repo
0 https://dl-ssl.google.com/dl/googlesource/git-repo/repo
0 初始化,选择代码版本
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
- 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代码组织
- 16. 查看callstack上的代码
• 选中callstack上
要查看的方法
• 右键选择Edit
Source Lookup
• 将Android代码工
程加到Source
Lookup里去
- 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
- 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
- 32. 4.0 (或以上)
0 frameworks/base/core/java/android/view/
ViewRootImpl.java
0 将DEBUG_FPS常量设为true
0 FPS通过log输出