art虚拟机时android哪个版本,《深入理解Android:Java虚拟机ART》 —1.2.2 准备Source Insight...

1.2.2 准备Source Insight

Source Insight是阅读源码的必备工具,它是一个Windows软件,在Linux平台上可通过wine进行安装。

Source Insight推出3.5版本之后,很长一段时间都没有更新。最近推出了全新的4.0版本。但经过笔者测试,4.0版本的Source Insight在Linux上表现不稳定,建议读者在Linux上使用3.5版本的Source Insight。下面的讲解也以3.5版本的Source Insight为主。

首先,打开Source Insight,通过菜单项Project→New Project新建一个源码工程。工程可建立在Android 7.0源码根目录。笔者存放的位置是~/workspace/aosp/android-7.0,工程名为android-7.0。

接下来我们要先设置源码文件的后缀名。在ART中,C++的实现文件以.cc为文件后缀名。而汇编源码存储在以.S为后缀的文件里。Source Insight默认的配置不识别.cc和.S为后缀的源码文件,所以我们需要修改它。

单击菜单项Options→Document Options,弹出图1-1所示的文件类型对话框。

图1-1用于为C++源码添加.cc结尾的文件类型。接着还要为汇编源码做类似的处理,来看图1-2。

e89f648a8dbcfbf78d89ac6289c91457.png

图1-1 为C++源码类型增加.cc结尾的文件

e3f6857bbaa076ff14f5404c61bafdd7.png

图1-2 为汇编源码增加.S结尾的文件

接下来我们为android-7.0工程添加具体的源码文件。单击菜单项Project→Add and Remove Project Files,弹出工程文件选择对话框,如图1-3所示。

请读者添加如下目录到android-7.0工程中。

art目录(通过图中的Add Tree按钮可添加整个目录):ART虚拟机源码文件。

libcore目录:包含JDK相关源码文件。

libnativehelper目录:包含JNI相关源码,如jni.h等。

frameworks/base/cmds/am、frameworks/base/core、frameworks/base/include三个目录:包含Zygote相关源码文件。

b87e665fec3706180ac791560628382e.png

图1-3 添加或删除工程中的目录

另外,上述目录中还有很多用于测试的源码文件,数量非常多。由于它们对本书的学习并无影响,建议读者移除其中test目录下的源码文件—通过图1-2中的Remove Tree可移除指定目录中的源码。比如art/test包含的1800多个源码文件都可以移除。

接着要进一步配置Source Insight。ART是一个复杂系统,所以谷歌用了一些工具来辅助编写正确的源码。这些工具要求在源码函数声明、变量定义等地方使用一些特殊的宏,而Source Insight不认识这些宏,所以很多函数、变量都无法解析和识别。为此,我们需要配置Source Insight,让它忽略这些宏。配置方法下面将详细介绍。

首先,找到Source Insight的C.tom文件,它位于~/.wine/drive_c/Program Files (x86)/Source Insight 3/下。打开该文件,在文件末尾添加如下的内容。

[C.tom文件]

;C.tom是C Token Macros的意思,用于重定义C/C++文件中的宏

;下面的条目都是ART源码中出现的宏,我们将它们定义为空,这样,Source Insight碰到这些宏

;时就会忽略它们

SHARED_TRYLOCK_FUNCTION(...)

ACQUIRE_SHARED()

EXCLUSIVE_TRYLOCK_FUNCTION(...)

SCOPED_CAPABILITY

SHARED_REQUIRES(...)

REQUIRES(...)

UNLOCK_FUNCTION(...)

ASSERT_SHARED_CAPABILITY(...)

ASSERT_CAPABILITY(...)

__noreturn

__mallocfunc

EXCLUSIVE_LOCKS_REQUIRED(...)

LOCKS_EXCLUDED(...)

SHARED_LOCKS_REQUIRED(...)

SHARED_LOCK_FUNCTION(...)

DEFAULT_MUTEX_ACQUIRED_AFTER

ACQUIRE(...)

ACQUIRE()

RELEASE()

RELEASE_SHARED()

ACQUIRED_AFTER(...)

GUARDED_BY(...)

PACKED(...)

__nonnull(...)

OVERRIDE

SHARED_LOCKABLE

ATTRIBUTE_UNUSED

NO_THREAD_SAFETY_ANALYSIS

ALWAYS_INLINE

配置好C.tom后,关闭并重新打开Source Insight,单击Project→Rebuild Project,弹出图1-4所示的对话框。

79fbe582f3d44ba8cf9871be2adb0c46.png

图1-4 Rebuild Project对话框

图1-4中,选择Re-Create the whole project from scratch即可。

图1-4所示对话框的下方展示了源码文件个数,笔者设置的工程包含源码文件8688个。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值