一、下载ADT插件包
我们基于的android版本为android-4.0.3_r1,根据下面表格信息得知ADT版本为14.0.0
Android平台与SDK Tools版本、ADT版本的对应关系
Platform | SDK Tools | API | ADT | 系统代号 |
Android1.1 | 系统中直接包含SDK Tools | 2 | ADT-0.8.0.0 | BASE |
Android1.5(r1-r3/r4) | R3/R6或更高 | 3 | ADT-0.9.1 | CUPCAKE |
Android1.6(r1/r2/r3) | R3/R4/R6或更高 | 4 | ADT-0.9.3 | DOUNT |
Android2.0 | R3或更高 | 5 | ADT-0.9.4 | ECLAIR |
Android2.0.1 | R4或更高 | 6 | ADT-0.9.4 | ECLAIR_0_1 |
Android2.1(r1/r2/r3) | R4/R6/R12或更高 | 7 | ADT-0.9.5 | ECLAIR_MR1 |
Android2.2(r1-2/r3) | (R6/R12)或更高 | 8 | ADT-0.9.6.0 | FROYO |
Android2.2(r3) | R12或更高 | 8 | ADT-12.0.0 | FROYO |
Android2.3 | R8或更高 | 9 | ADT-8.0.1 | GINGERBREAD |
Android2.3.3(r1/r2) | (R9/R12)或更高 | 10 | ADT- 9.0.1 | GINGERBREAD_MR1 |
Android2.3.4 | R11或更高 | 10 | ADT-11.0.0 | GINGERBREAD_MR1 |
Android3.0(r1/r2) | (R10/R12)或更高 | 11 | ADT-9.0.0 | HONEYCOMB |
Android3.1(r1-r2/r3) | (R11/R12)或更高 | 12 | ADT-11.0.0 | HONEYCOMB_MR1 |
Android3.2 | R12或更高 | 13 | ADT-12.0.0 | HONEYCOMB_MR2 |
Android4.0(0.1-0.2) | R14或更高 | 14 | ADT-14.0.0 | ICE_CREAM_SANDWICH |
Android4.0.3(r1/r2) | R14或更高 | 15 | ADT-14.0.0 | ICE_CREAM_SANDWICH_MR1 |
Android4.0.3(4.0.4) | R17或更高上(支持模拟硬件图形加速) | 15 | ADT-17.0.0 | ICE_CREAM_SANDWICH_MR1 |
Android4.1(1.0-1.2) | R20或更高 | 16 | ADT-20.0.0 | JELLY_BEAN |
Android4.2 | R20或更高 | 17 | ADT-20.0.0 | JELLY_BEAN_MR1 |
Android4.2.2 | R21或更高 | 17 | ADT-21.0.0 | JELLY_BEAN_MR1 |
http://dl.google.com/android/ADT-14.0.0.zip |
二、下载ADT插件源码包
源码可以在官方的git服务器上下载。
1、首先安装git,Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
下载地址(可选择最新版本下载):
http://code.google.com/p/msysgit ... taller+official+git |
$mkdir source :新建一个目录 $cd source $git clone http://android.googlesource.com/platform/manifest.git : Android分支列表信息文件,用来查看用,可不下载 $git clone http://android.googlesource.com/platform/sdk.git : ADT插件的源码在这个里面 $cd sdk $git branch -a :查看分支 $git checkout -b cskytools_r14 remotes/origin/tools_r14 :新建本地分支并切换到分支,tools_r14由2楼主对应关系表格所得 $cd .. $mkdir prebuilts $cd prebuilts/ :按照服务器上分布方式,新建一个目录,prebuilts中包含插件libs文件夹中使用的jar文件,(r14版本没有prebuilts下的jar文件,只有源码,在platform/sdk中)。 $git clone http://android.googlesource.com/platform/prebuilts/tools.git :tools从r17才开始建立的文件夹目录。 $git clone http://android.googlesource.com/platform/prebuilts/misc.git :misc从r20才开始建立的文件夹目录。 $cd .. $mkdir tools $cd tools :按照服务器上分布方式,新建一个目录,tools中包含插件libs文件夹中使用的jar文件的源码。 $git clone http://android.googlesource.com/platform/tools/base.git :base从r22才开始的目录,原来的存放在platform/sdk中。 $git clone http://android.googlesource.com/platform/tools/swt.git :swt从r22才开始的目录,原来的存放在platform/sdk中。 |
三、构建ADT源码环境
ADT源码位于sdk\eclipse\plugins目录下面,可以参考下载的ADT-14.0.0的插件结构,查看一共有多少个插件,然后导入到workspace。
在将源码插件所依赖的库文件的源码导入到workspace,其中ADT-14.0.0版本的库文件源码位于sdk目录,新版本的库文件源码位于tools\base目录下。
ADT-14.0.0的插件源码目录结构图如下:
/SdkLib/src/com/android/sdklib/internal/avd/AvdInfo.java /SdkLib/src/com/android/sdklib/internal/avd/AvdManager.java /SdkLib/src/com/android/sdklib/internal/repository/SystemImagePackage.java /SdkLib/src/com/android/sdklib/repository/sdk-repository-5.xsd /SdkLib/src/com/android/sdklib/ISystemImage.java /SdkLib/src/com/android/sdklib/SdkConstants.java /SdkLib/src/com/android/sdklib/SystemImage.java \adt\src\com\android\ide\eclipse\adt\internal\welcome\AdtStartup.java (自动选择SDK的路径) |
四、下载Android SDK包
Android SDK官网首页下载的是最新版本的。
http://developer.android.com/intl/zh-cn/sdk/index.html |
网址 | 压缩包内文件与SDK目录映射关系 |
http://dl-ssl.google.com/android/repository/tools_r14-windows.zip | .\tools |
http://dl-ssl.google.com/android/repository/sysimg_armv7a-15_r01.zip | .\system-images\android-15\armeabi-v7a |
http://dl-ssl.google.com/android/repository/android-15_r03.zip | .\platforms\android-15 |
(*1)http://dl-ssl.google.com/android/repository/platform-tools_r14-windows.zip | .\platform-tools |
(*2)http://dl-ssl.google.com/android/repository/platform-tools_r14-windows.zip | .\build-tools\android-4.0.3 |
extras在Android SDK4.0.3没信息 | 可使用最新版的extras |
(*3)http://dl-ssl.google.com/android/repository/google_apis-15_r02.zip | .\add-ons\addon-google_apis-google-15 |
platform-tools | build-tools |
五、Cskydroid源码编译生成SDK
首先,ARM编译生成SDK的方法是(Linux版本):
输入以下命令编译:
$ . ./build/envsetup.sh
$ lunch_sdk-eng
$ make sdk
编译完成之后会生成在以下目录:
out/host/platform/sdk/android-sdk_eng.username_platform-x86/
因此,要编译csky的SDK工具(Linux版本),命令为:
$ export TARGET_ARCH=csky
$ export TARGET_ARCH_VARIANT=ck800
$ . ./build/envsetup.sh
$ lunch sdk_csky-eng
$ make sdk
=============================
完全的window SDK工具只能在linux系统上编译——因为大多数的framework设计不在windows上支持。
首先安装相关依赖库:
$ sudo apt-get install mingw32 tofrodos
mingw32是交叉编译器,tofrodos是一个unix2dos命令。
然后执行以下命令(ARM):
$ . ./build/envsetup.sh
$ lunch sdk-eng
$ make win_sdk
编译结果位置:
out/host/windows/sdk/android-sdk_eng.username_windows/
因此,要编译csky的SDK工具(Win版本),命令为:
$ export TARGET_ARCH=csky
$ export TARGET_ARCH_VARIANT=ck800
$ . ./build/envsetup.sh
$ lunch sdk_csky-eng
$ make win_sdk
====================================
注意:
编译好CSKY的SDK后要修改一个文件
/out/target/product/generic_csky/root/init.rc
中
"write /proc/cpu/alignment 4"
改成
"write /proc/cpu/alignment 2"
=======================================
在编译Window版本的ARM-SDK时
1)可能遇到的问题是缺少libpthread,如果遇到的话解开pthreads-w32-2-8-0-release.exe(见附件),把Pre-built.2/lib中的libpthreadGC2.a改名为libpthread.a复制到/usr/i586-mingw32*/lib目录,Pre-built.2/include中的pthread.h复制到/usr/i586-mingw32*/include目录即可解决。
2)确实libdl,解开dlfcn-win32-static-r11.tar.bz2(见附件),把lib中点libdl.a复制到/usr/i586-mingw32*/lib目录,把nclude中的dlfcn.h复制到/usr/i586-mingw32*/include目录即可解决。(附件)
3)修改/external/llvm/llvm-host-build.mk文件
在第一行LOCAL_LDLIBS := -lpthread -ldl 下添加(由于编译时报错,缺少库) ifeq ($(HOST_OS),windows) LOCAL_LDLIBS += -lpsapi -limagehlp endif |
在第205行int ffs(int i)下一行添加(由于编译时报错,缺少ffs) #define ffs(i) __builtin_ffs(i) |
6)-lpthread -ldl需要的库文件:http://doc.openturns.org/openturns-0.13.2/doc/html/WindowsPortGuide/output/OpenTURNS_WindowsPortGuidesu1.html
7)for libdl.a: http://doc.openturns.org/openturns-0.13.2/doc/html/WindowsPortGuide/output/OpenTURNS_WindowsPortGuidesu1.html