豚コレラ及び アフリカ豚コレラ対策について - 首相 …...2019/10/04 · 豚コレラ及びアフリカ豚コレラについて 【 特徴 】 病原体 アフリカ豚コレラウイルス
和Android源代码一起工作 | 海豚浏览器 胡继堂
-
Upload
imshining-devcamp -
Category
Technology
-
view
1.860 -
download
4
description
Transcript of 和Android源代码一起工作 | 海豚浏览器 胡继堂
Android DevCamp Produced by CSDN Website: http://devcamp.csdn.net/ Weibo: http://weibo.com/cmdnclub/
和Android源代码⼀一起工作 胡继堂 海豚浏览器开发主管
问题 0 为什么Touch Event没有收到? 0 为什么界面上某些View的位置和大小和我预想的不一样?
0 怎么知道我的UI动画有多流畅?
Agenda 0 下载与浏览
0 调试与编译
0 源代码利用示例
0 Q&A
下载与浏览
准备环境 (仅同步代码)
操作系统
系统工具
准备足够的空间
0 2.3源代码需要10G空间
0 4.0源代码需要20G空间
用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
开始同步
0 进入源代码目录
repo sync [-‐jn]
用Eclipse来浏览源代码(Java)
拷贝$srcroot/development/ide/eclipse/.classpath 到代码根目录 $srcroot
用Eclipse创建⼀一个空的Java工程
将工程的代码位置设为$srcroot
Done
假设Android源代码放在$srcroot
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
Android代码组织 $srcroot/packages/ $srcroot/framework/base $srcroot/dalvik/ $srcroot/libcore/
Android代码组织 $srcroot/external/<project> $srcroot/bionic/libc
调试与编译
用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)
• 选中callstack上要查看的方法
• 右键选择Edit Source Lookup
• 将Android代码工程加到Source Lookup里去
查看callstack上的代码
在Android源代码里设断点
就直接在Android源代码里设断点。。。
调试Native代码? 0 等等,我们还差点东西-‐-‐symbol
Android系统编译
0 目的 0 生成调试Native代码需要的symbol 0 打开系统里的一些调试选项,方便调试 0 修改系统代码,添加Log,分析系统行为 0 定制Android的一些功能
系统准备
更多内容: http://source.android.com/source/initializing.html
Ubuntu 10.04 – 12.04
• 10.5 (Leopard) or 10.6 (Snow Leopard) • MacOS 10.5 SDK
0 Google的Nexus系列 0 解锁方便 [fastboot oem unlock] 0 驱动获取方便 0 源代码里直接有预设的编译目标
0 模拟器
设备选择
Nexus One Nexus S Galaxy Nexus
准备编译 1. cd $srcroot 2. source build/envsetup.sh 3. lunch
编译目标解释 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 开发目的优先选择它]
开始编译
make [-‐jn]
0 你还有更多选择 0 make systemimage 0 make bootimage 0 make recovery
System Image Android核心功能
Boot Image 内核与驱动
Boot Loader 相当于BIOS
Recovery 升级/刷机
类似PC的WinPE
调试native代码
0 工具:gdb + gdbserver
用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
0 下载与浏览
0 调试与编译
0 源代码利用示例
0 Q&A
查看FPS 0 FPS: Frame per second 0 决定UI的流畅度,越高越流畅
2.3(或以下) 0 frameworks/base/core/java/android/view/ViewRoot.java 0 在“private void draw(boolean fullRedrawNeeded)”找到下面的代码(两处),做修改
缺点
0 没有log输出,不便于自动化测试统计 0 通过Canvas把FPS始终显示在屏幕的左下角,不在
Canvas的无效区域以内时,FPS值无法重绘
4.0 (或以上)
0 frameworks/base/core/java/android/view/ViewRootImpl.java
0 将DEBUG_FPS常量设为true 0 FPS通过log输出
0 下载与浏览
0 调试与编译
0 源代码利用示例
0 Q&A