Android SDK是什么

Android SDK下载下来会是一个简单的ZIP文件压缩包。Android SDK的主体是一些文件,连续性的文件,可编程的API,工具,例子和其它。除了包含核心SDK库和API的Java应用程序的android.jar包,Android SDK被分成以下几个主要的文件夹:

l Docs包括所有的Android文档

l Tools包含所有在开发过程中需要的开发和调试工具

Android文档

Android文档被放在Android SDK内的Docs的文件夹内。文档内提供了如何下载和安装SDK的每一个步骤。文档时HTML格式并且有一个documentation.html在SDK的根目录可以进入到整个文档。

注意:当你浏览Android SDK时,你可能想到一些页面是一些错误的链接或者丢失了。因为当你点击某些链接时,屏幕右边可能会显示空白,不过,如果你再往下滚动页面你将会明报页面只是没有被排列好。

Android工具

Android SDK提供给开发者一系列功能强大并且有用的工具。

Ø emulator.exe

Android SDK中的一个最重要的工具,emulator.exe启动Android模拟器。Android模

拟器被用来在一个假的Android环境中运行你的应用程序。在没有Android平台可用的硬件的情况下,emulator.exe将会是唯一的方法作为测试应用程序的平台。

Ø adb.exe

当你使用命令行编辑器时另外一个工具会变得非常的有用,它就是Android调试桥,或者adb.exe。这个工具允许你发出命令到模拟器工具。当你在命令行环境下工作时,这个adb工具允许你做下列工作。

l 开始并且停止服务

l 安装和卸载应用程序

l 移动文件至模拟器

Ø MKSDCARD.exe

MKSDCARD.exe是一个非常有用的工具,当你测试一个应用程序,而这个程序需要

读取或者写入文件到一个插入到移动设备的SD存储卡中。MKSDCARD.exe在你的驱动器中创建一个小的驱动并且会保留测试文件。然后模拟器会把这个小的部分当成一个SD存储卡。

Ø DX.exe

DX.exe是Android SDK的编译器。当你运行你的Java文件,DX.exe将创建一个带有.dex

后缀——Dalvik可执行格式的文件。这些会被Android设备正确的理解和运行。

Ø ddms

这个工具集成了Dalvik,能够让你在模拟器或者设备上管理进程并协助调试。你可

以用它杀死进程,选择某个特定的进程来调试,产生跟踪数据,观察堆反映和线程信息,截取模拟器或设备的屏幕画面,还有更多的功能

Ø aidl

可以让你生成进程间的借口的代码,诸如sevice可能使用的接口。

Ø sqlite3

这个工具能够让你方便地访问SQLite数据文件。这些数据文件是由Android应用程

序创建并使用的。

Ø TraceView

这个工具可以将android应用程序产生的跟踪日志转换为图形化的分析视图。

Ø Monkey

Monkey是在模拟器上或设备上运行的一个小程序,它能够产生为随机的用户事件流,

例如点击,触摸,挥手,还有一系列的系统级事件。你可以使用Monkey来给你正在开发的程序做随机的但可重复的压力测试。

Android APIs

APIs或者叫做应用程序编程接口,是AndroidSDK的核心。一个API是应用程序开发者在特定平台上创建程序的功能,方法,属性和类别和库德集合。AndroidAPI包含所有你创建与Android为基程序交互的特定信息。Android SDK包含两套API:google的API和可选的API。

Ø Google API

Google API包含在Android SDK中并且包含编译参考,允许你绑定你的程序到现有的

google服务中。一些包随着API一起发布包含了图形,移动性,联系人和日历等工具。还有google地图。使用提供的这个包,你可以创建一个应用程序无缝的和熟悉的google地图界面对接。

Ø 可选的API

Android SDK包含了一些可选的API,它包括了一些标准AndroidAPI未包含的内容。

说它们是可选的API意味着这些功能在手持设备上可能出现也可能不出现。也就是说一些为Android平台创建的设备可能包含升级或者一些特性而其他的没有。其中的一个可选特性就叫做电话的位置基础服务API需要接受斌管理用设备上GPS单元的信息。其它可选的API包含有蓝牙,wi-fi,播放mp3,进入并激活3D-opengl硬件等。

SDK的生成

首先/frameworks/base/Android.mk中定义了进行了sdk building的基本目标对象。包括

对哪些.java文件需要生成API文档,以及这些文档的路径。然后再/build/core/droiddoc.mk中定义了最终进行build的规则和语句。

Android使用javadoc这个工具来生成所有API文档。Javadoc这个工具可以带一个参数指定一个文件,该文件包含了所有要生成文档的源文件的名字。该文件的内容就是通过在/framework/base/android.mk里的变量生成的。当然在droiddoc.mk中还添加了build过程中生成的intermediates目录下的文件。

另外javadoc还可以指定定制的doclet,doclet是基于javadoc特定的API开发的小程序,该程序负责实际的文档输出。Android的编译系统就包含了这样一个doclet叫DroidDoc。可以在/build/tools/DroidDoc目录下找到该工具的全部源代码。正是该工具在生成HTML的同时在/out/target/commom/obj/JAVA_LIBRARIES/android_stubs_current_intermediates下面copy(或者说重新生成了)所有将生成到android.jar中的所有源代码(.java文件)。该工具把所有生成document的源文件重新按Package组织生成在以上目录下,然后进行编译和打包成android.jar。

根据以上分析,其实android.jar文件时各个公布出来的API的源文件经过javadoc重新组织以后再次编译产生的。故android.jar的内容实际上收到javadoc的notation控制和makefile的控制。

把Android源代码加入SDK

在调试Android程序的时候经常会遇到”source not found”错误。Google在发布SDK时没有把源代码包含进去,而framework中所有Java代码加起来打个包也就是20多MB。而且Android Eclipse plugin(ADT)不允许我们在项目中attach源代码到android.jar上。通过分析ADT的源代码我们知道ADT是从SDK目录下的”source”目录来查找class对应的源代码,这样我们只要把源代码放到sources目录中,ADT就可以自动找到对应的源代码了。

使用Android隐藏类和隐藏方法

在android源码中,某些方法、成员、类或包被打上@hide标签,这些类、方法或成员在SDK中没有公开。下面提供一种解决这个问题方法。

首先,下载android源码进行编译。然后在编译后的out目录下寻找包含你所引用隐藏类的模块的jar文件,通常文件名为classes.jar。比如framework的jar文件为out\target\common\obj\JAVA_LIBRARIES\frameworkintermediates\classes.jar。最后在eclipse的Android项目中,选择项目属性->Java BuildPath->Librarues->Add Library->User Library->Next->User Libraries进入到User Libraries管理界面,点击New新建一个User Library,比如android framework,点击Add Jars把Jar包加入到建立的User Library中,最后点击OK就可以了。但是需要更改类搜索顺序,选择项目属性->Java BuildPath->Order and Export,把所建立的User Libraries移到Android SDK的上面。所有java类生成的包文件都在目录out/target/common/obj/JAVA_LIBRARIES下,需要什么文件可以到里面找。

添加新的类

Google对于所有的类和API,分为开发和不开放两种。所谓的开发式是指javadoc所包含

的,并不是java中的public和private,而是跟javadoc有关系,和代码没有关系。

在开放式的类中增加一个变量,而又没隐藏,导致和原API的doc不一致造成的就会有错。通过提示,有两个方法可以解决该问题:

ü 将新增加的变量或方法加上”@hide”的注释,注意一点,加”@hide”不是简简单单的/*@hide*/就行了,标准的javadoc要这样/** */,而且对于format变量应该加上{ },也就是/**{@hide}*/。

ü 如果想在生成的doc中增加该变量或方法的话,必须输入:make update-api,这样的话,系统自动将新增加的API添加到current.xml中了。

所以如果要加方法就是按上面的方法添加。

Ø 在原有包下面添加

这个比较简单,直接在已知的包中添加,加完之后直接makeupdate-api就好了。

Ø 添加在framework/base中

如果直接添加在目录framework/base后,接着make update-api是不会在current.xml

里生成你所添加的类。看了android.mk才知道,原来需要修改android源码根目录下的build/core/pathmap.mk把你的目录加进去,然后就好了。

更多相关文章

  1. Android(安卓)源码编译加速 使用ccache
  2. android项目打包
  3. android 加载外部 dex文件中的类 的源码实例
  4. android解析xml文件的方式之DOM解析
  5. android app卸载以后弹出用户反馈界面
  6. Android实现自定义铃音
  7. Windows环境下Android(安卓)NDK的开发
  8. 阿里安卓高级架构师推荐——Android程序员必备的六大顶级开发工
  9. Android导出与使用带资源的lib包

随机推荐

  1. Android(安卓)红外遥控器适配
  2. Android默认打开USB adb调试
  3. android studio2.3.3 使用传感器
  4. Android 源代码在线阅读
  5. android Pull解析xml 使用小结
  6. Android-开发常用代码汇总
  7. 【Android】【应用信息】获取应用列表
  8. Android中使用HttpGet和HttpPost访问HTTP
  9. Android之高仿手机QQ图案解锁
  10. android 监听 USB 拔插广播消息