Monthly Archives: May 2011

ADB源码分析(一)

ADB是android debug bridge的缩写,负责计算机与Android设备的几乎所有通信和协作,可以认为是连接两者的桥梁。

在Android开发和恶意代码分析中,经常用到它的install、uninstall、push、pull、logcat、shell等命令。它的用法可以参考SDK的文档:

http://developer.android.com/guide/developing/tools/adb.html

正因为其独特的桥梁作用,有必要详细了解其工作过程。幸运的是,我们可以获得其源码,它位于Android源码树的platform/system/core/adb/目录下,可以通过下面的git命令下载:

git clone git://android.git.kernel.org/platform/system/core.git

如果要编译,还是推荐下载完整的Android源码,并参考上一篇文章所述编译方法。

ADB由两个物理文件组成:
Continue reading

编译Windows平台Android SDK

这是一件很吐血的事,折腾了半天的时间,最后发现版本不一致害死人。

Android SDK中有不少小工具,如果要自己改造一下,就需要重新编译。Android原生自然是Linux,但毕竟用户绝大部分是Windows的,所以还是要给Win下编一份。

根据platform/development/docs/howto_build_SDK.txt文档,主要步骤如下:

  1. 在Linux下编一份for linux的;
  2. 在Windows下装cygwin和一堆包;
  3. 把源码和SDK for Linux拷贝到Windows下;
  4. 用development/build/tools/make_windows_sdk.sh脚本编译Windows平台相关文件,并且自动替换掉SDK for Linux中的相应文件,于是一个SDK for Windows就诞生鸟……

可是……最新的源码里找不到这个脚本。倒是有一个patch_windows_sdk.sh,看起来和上面的很像,嗯。也懒得git log翻修订记录了,直接用——失败。

最后翻到同目录下的windows_sdk.mk,发现目前版本的真正编译方法了:

  1. 在Linux下编一份for linux的:make PRODUCT-sdk-sdk
  2. 安装mingw32
  3. 在Linux下编译for Windows的:make PRODUCT-sdk-win_sdk

大功告成……方便了很多,但是各种被老资料耽误的兄弟们,请尽情地吐血吧。

最后——狠揍自己:不论是来一次git log还是来一次vim windows_sdk.mk,都可以不用绕这么多弯的。