73
Android Android Android Android 应用程序开发指南 应用程序开发指南 应用程序开发指南 应用程序开发指南 TE/OK6410 TE/OK6410 TE/OK6410 TE/OK6410 回目录 回目录 回目录 回目录 www.witech.com.cn 2011.7.31 -1- Android Android Android Android 应用程序开发指南 应用程序开发指南 应用程序开发指南 应用程序开发指南 飞凌嵌入式 让嵌入式开发融入移动互联时代 TE/OK6410 TE/OK6410 TE/OK6410 TE/OK6410

51 cto下载 android应用程序开发宝典

Embed Size (px)

Citation preview

Page 1: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-1-

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南飞凌嵌入式

让嵌入式开发融入移动互联时代

TE/OK6410TE/OK6410TE/OK6410TE/OK6410

Page 2: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-2-

目 录

第一章 ANDROIDANDROIDANDROIDANDROID系统应用环境搭建........................................................................................................................................................................................................................................................................................................................................................................................................ 3333

1-1 UBUNTU10.10 上编译 ANDROID 源码..............................................................................................31-1-1 编译 Android2.3形成文件系统.............................................................................................. 31-1-2 编译 Android2.3形成 SDK开发包.........................................................................................6

1-2 安装开发工具,设置开发环境.......................................................................................................91-2-1 安装 Eclipse............................................................................................................................. 91-2-2 安装 ADT................................................................................................................................101-2-3 设置开发环境........................................................................................................................ 111-2-4 运行 Android模拟器............................................................................................................. 12

第二章 开发ANDROIDANDROIDANDROIDANDROID应用程序............................................................................................................................................................................................................................................................................................................................................................................................................................................ 16161616

2-1 ANDROID 应用程序开发框架........................................................................................................ 162-2 LED 测试程序框架分析................................................................................................................. 182-3 FORLINX LED TEST 实现过程....................................................................................................... 192-3-1 ForlinxLedTest软件实现 Led控制的系统调用图...............................................................192-3-2 安装 droiddraw软件 进行界面设计................................................................................... 232-3-3 ForlinxLedTest软件编码实现...............................................................................................27

2-4 LEDCLIENT的实现过程................................................................................................................. 432-4-1 LedClient软件实现 Led控制的系统调用图:...................................................................... 432-4-2 LedClient 软件实现.............................................................................................................. 44

第三章 ANDROIDANDROIDANDROIDANDROID应用程序的调试................................................................................................................................................................................................................................................................................................................................................................................................................ 47474747

3-1 ADB与 DDMS 简介........................................................................................................................ 473-2 ADB调试环境搭建....................................................................................................................... 473-3 调试 FORLINXLEDTEST................................................................................................................. 503-3-1 修改 AndroidManifest.xml文件............................................................................................ 513-3-2 调试应用程序........................................................................................................................ 523-3-3 DDMS功能介绍.................................................................................................................... 56

第四章 WINDOWSWINDOWSWINDOWSWINDOWS 下 ADBADBADBADB调试环境的搭建................................................................................................................................................................................................................................................................................................................................................ 61616161

4-1 JAVA JDK下载与安装.................................................................................................................... 614-2 ECLIPSE 下载................................................................................................................................... 614-3 下载 ANDROID SDK....................................................................................................................... 634-4 安装 USB 驱动.................................................................................................................................664-5 HELLOFORLINX 小程序.................................................................................................................. 70

Page 3: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-3-

第一章第一章第一章第一章 AndroidAndroidAndroidAndroid系统应用环境搭建系统应用环境搭建系统应用环境搭建系统应用环境搭建

1-11-11-11-1 Ubuntu10.10Ubuntu10.10Ubuntu10.10Ubuntu10.10上编译 AndroidAndroidAndroidAndroid源码

飞凌嵌入式公司的 OK6410,FL6410,TE6410开发板附带的光盘资料中含有 Android 开

发的所有资料,用户可以直接从光盘中拷贝 Android 资料到 Ubuntu系统中,用户也可以从飞

凌 公 司 资 料 服 务 器 上 下 载 Android2.3 的 源 代 码 , 技 术 论 坛

http://bbs.witech.com.cn/thread-3809-1-1.html 里面提供了所有资料的下载链接,请随

时关注我们的论坛公告,了解技术资料的更新。

我们提供的 Android2.3 源代码含有两个版本,一个版本是 Ubunt9.10 (32 位)版本,

另一个版本是 Ubuntu10.10(64)位版本,请根据您的 Linux 开发环境来灵活选择,之所以

推出 64位版本是因为现在计算机的硬件发展很快,多核处理器和大内存已经很常见,为了满足

用户的需求,我们特意提供了两个版本。

笔者的演示环境是 Ubuntu10.10 (64位)平台,在 Ubuntu9.10(32 位)平台上进行

Android 开发的用户也可以参考该手册,操作步骤基本一样,只是 Android2.3的源代码有所

不同,我们在 Ubuntu9.10 上有一套针对 32 位平台的 Android 源代码,同样的,在

Ubuntu10.10 上也有一套 64位平台的 Android 源代码,我们已经做好了一键编译脚本,您不

需要关心两个 Android 源代码版本的差异,轻轻松松完成 Android 平台开发环境的搭建.

1-1-11-1-11-1-11-1-1 编译Android2.3Android2.3Android2.3Android2.3形成文件系统

我们建议您在真机 Ubuntu 系统中进行 Android 开发,如果您在虚拟中编译 Android2.3

速度相对慢一些。

笔 者 的 Android 源 代 码 文 件 夹 名 为 : Stable-Android2.3 , 存 放 路 径 :

/home/monkey/Forlinx/,如下图:

Page 4: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-4-

编译 Android2.3之前需要安装下面的库文件。

在终端窗口中执行

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl sun-java6-jdk zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z1-dev

库文件安装完成后在终端窗口执行命令: ./builid-android 回车,开始编译 Android源码。

如图:

Page 5: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-5-

每个人的开发环境存在差异,以上的库文件只是参考,如果你在编译过程中出现了问题,说明还需要

安装必要的库,这时根据错误提示信息,Google一下即可解决。再次感谢 Google,有了它生活就

是不一样.

笔者的机器编译了大约 1个小时的时间,编译完成后在超级终端里面执行命令: ./make-rootfs即可形成文件系统 android-fs.tar。

该文件用于一键烧写,是 Android系统中的文件系统部分,您可以用您刚才制作的这个文件替

换掉开发板配套光盘中提供的同名文件,该文件与飞凌官方提供的文件是相同的,里面含有我们下一

节将要讲述的 Led测试程序。

一键烧写的详细介绍,请参考飞凌的 Android用户手册,这里不再详细描述了.一键烧写完成后,

启动开发板,进入 Android的应用程序列表,如下图所示:

Page 6: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-6-

里面的 ForlinxLedTest.apk和 com. forlinx.LedClient.LedClient.apk 两个应用程序是

我们下面章节重点讲述的 Demo 程序,我们将详细的讲述 Led 测试程序的开发环境搭建,开发

过程,及 Android 应用程序的开发框架。

1-1-21-1-21-1-21-1-2 编译Android2.3Android2.3Android2.3Android2.3形成 SDKSDKSDKSDK开发包

Android 源码编译通过后,下一步我们就要编译 Android2.3的 SDK了,有了 SDK我们

才能进行应用程序的开发,SDK中封装了 Android 对外提供的调用接口,用户应用程序通过调

用 SDK中的功能函数或者类库来实现业务上的需求。

在 Ubuntu 终端窗口中执行命令:

. setenv

注意: setenv前面有一个点,这句话的意思是吧 setenv脚本里面的语句 include到当前

shell 终端中.

执行 make sdk 命令开始编译,SDK开发包如下图:

Page 7: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-7-

笔者 的 机 器 编 译 SDK 用了 30 分钟 左 右 的 时 间 , 编 译 完 成 后 会 在 Stable-Android2.3/out/host/linux-x86/形成 SDK 目录,里面含有我们需要的文件夹 android-sdk_eng.root_linux-x86 ,如下图

Page 8: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-8-

我们把这个文件夹拷贝到/home/monkey/AndroidSDK-and-Tools目录下面如图:

Page 9: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-9-

这样 Android SDK准备完成.

1-21-21-21-2 安装开发工具,设置开发环境

Android2.3 SDK在 Ubuntu10.10 编译成功后,下一步就是开发 Android 的应用程序

了,下面说明一下在 Ubuntu10.10 上开发 Android 应用需要安装的工具。

1-2-11-2-11-2-11-2-1 安装 EclipseEclipseEclipseEclipse

Android 推荐的 IDE(集成开发环境) 为 Eclipse,访问以下地址下载:

http://www.eclipse.org/downloads/

由于笔者使用的是 64位的 Ubuntu 系统,所以需要安装 Eclipse 64位版本。

把下载的 Eclipse放到了/home/monkey/AndroidSDK-and-Tools 目录下面,与

Android SDK 处于并列目录。

Page 10: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-10-

使用 tar zxvf eclipse-java-helios-SR2-linux-gtk-x86_64.tar.gz 命令解压,形成

eclipse文件夹,如下图所示:

进入该文件夹双击 eclipse文件,即可运行 eclipse.

1-2-21-2-21-2-21-2-2 安装ADTADTADTADT

ADT是用 Eclipse工具开发 Android 应用程序时需要安装的插件,通过它可以方便的创建

Android 应用框架,开发 Android 应用程序,我下载的是最新的 ADT-10.0.1.zip 。

下载地址:http://developer.android.com/sdk/eclipse-adt.html#installing,在网页中找到ADT的下载链接下载它即可。

下载完成后,需要把它拷贝到/home/monkey/AndroidSDK-and-Tools 下面,然后解压到

eclipse目录,在终端窗口中执行以下命令即可:

cd /home/monkey/AndroidSDK-and-Tools/eclispe

Page 11: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-11-

unzip ../ADT-10.0.1.zip

这样就完成了 ADT插件的安装.

如果您无法下载 ADT插件,可以使用我们光盘资料中的 ADT,或者从我们官方下载服务里

面下载 ADT插件.

1-2-31-2-31-2-31-2-3 设置开发环境

运行 eclipse,提示您选择工作空间,这里选择/home/monkey/AndroidApp 文件夹作为

为我的工作空间,选择工作空间是为了存放工程,一个工作空间里面可以有多个工程存在。

选择完成工作空间后 , 出现欢迎界面,选择Windows菜单中的 preference 项,弹出窗体,

然后单击 Brower 按钮,选择您编译的 SDK文件夹,然后单击 Apply按钮,如图:

单击 OK键确定,这样 SDK在 eclipse中设置完成。

Page 12: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-12-

在 Widows 菜单里面,选择 Android SDK and AVD Manage 弹出框,选择 installedpages,出现下图所示即可:

如果出现这样的界面说明您的 SDK安装成功了.

1-2-41-2-41-2-41-2-4 运行AndroidAndroidAndroidAndroid模拟器

运行 Android 模拟器之前,需要创建 AVD,AVD(Android Virtual Device)就是 Android虚拟设备,同样在Widows菜单里面,选择 Android SDK and AVD Manage,弹出框,选择

第一项 Vritual device 然后 new选择,创建 AVD,我设置的 SD卡是 512M,其他的默认即

可,创建成功后,如下图:

Page 13: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-13-

单击 Start按钮,开始运行,如果运行时窗口提示:

Ubuntu SDL init failure, reason is: No available video device.

这是因为 64位 Ubuntu中需要安装必要的库文件,在终端窗口中执行下面的命令即可,执

行命令前请确认您的 Ubuntu能连接互联网.S

sudo apt-get install ia32-libs lib32stdc++6

关闭 Eclipse重新运行,执行 Windows菜单->Android SDK and AVD Manage->Virtual device 里面的 Start... 命令,运行模拟器,运行过程需要一定的时间,请耐心等待 ,

我的 PC用了 30秒的时间,成功运行后如图:

Page 14: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-14-

自此,Android 的应用程序开发环境搭建完成,可以开发应用程序了,下面以开发板上的 Led测试程序为例来讲解 Android 应用程序开发的基本步骤。

Page 15: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-15-

Page 16: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-16-

第二章第二章第二章第二章 开发开发开发开发AndroidAndroidAndroidAndroid应用程序应用程序应用程序应用程序

2-12-12-12-1 AndroidAndroidAndroidAndroid应用程序开发框架

在进行 Android 应用程序开发之前,我们先认识一下 Android 的框架,对框架有了一定的认

识后,才能更好的理解 Android 系统的工作方式。

首先我们先看一下 Google发布的经典 Android 框架:

从上图可以看到:Android 的框架分四个层次

Applications (应用层):

用户开发的应用程序和系统自动的一些应用处于这一层,如Browser 浏览器软件,Gallery 图

片查看器软件,music 音乐播放软件等等.

这一层的应用程序的开发主要采用 Java 语言,,飞凌提供的 Led 测试程序同样处于这一层中。

Page 17: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-17-

Application Framework(框架层),

框架层属于 Android 系统的核心层,里面含有各种组件,如ActivityManager,PackageManger

等等,该层对上层的应用层软件提供 SDK 调用接口,和系统管理服务,主要采用 Java 语言开发.

Dalvik Virtual Machine,(达尔维虚拟机) :

Dalvik 虚拟机是 Google 等厂商合作开发的 Android 移动设备平台的核心组成部分之一。

它可以支持.dex(即 Dalvik Executable)格式的 Java 应用程序的运行,.dex 格式是专为 Dalvik

设计的一种压缩格式,适合内存和处理器速度有限的系统。Dalvik 是由 Dan Bornstein 编写的,

名字来源于他的祖先曾经居住过名叫 Dalvik 的小渔村,村子位于冰岛的 Eyjafjörður。

大多数虚拟机,包括 JVM 都是一种堆栈机器,而Dalvik 虚拟机则是基于寄存器的。两种架构各

有优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大.

Dalvik 虚拟机的介绍摘自维基百科.

Linux

Linux 是 Android 系统的基石,有了 Linux系统的存在,Android 这座大厦才能屹立起来,

这里的 Linux系统与标准的 Linux系统是存在差异的,Google在标准 Linux 系统的基础上增

加了 Android 特有的功能,比如用于进程间通信的 Binder,高效的电源管理功能等等,如果您

需要移植 Android 的 Linux 部分,可以从 Linux 的官方网站上下载,然后加上 Android 特有

功能即可成为 Android 的 Linux内核。

Linux 负责进程的管理,设备的管理等等,里面含有各种设备的驱动,我们提供的 Led 测试程

序同 样 需 要 Led 的驱 动 , Linux 含有 Led 驱动 , 驱 动 文 件 位 于 Linux 源码 中

drivers/char/s3c6410_leds.c文件中

Page 18: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-18-

2-22-22-22-2 LedLedLedLed测试程序框架分析

我们提供的 Led 测试程序符合 Android 的系统框架,之所以我们重点讲述这个简单的 Led应用是因为她不仅仅是个应用程序,更是 Android 系统的分层思想的体现,学习了 Led 相信您

对 Android 系统有一个新的深层次的认识。

如果您在发板上运行了 Android 系统,相信您也看到了我们提供的 Led 测试程序,Forlinx LedTest 和 com.forlinx.LedClient.LedClient,如图:

这里有两个 Led 的测试程序,他们的实现方式是不一样的。

ForlinxLedTest体现了 Android 特有的进程间对象调用,进程之间对象的调用就像一个进程间

上层模块对下层模块调用那么简单,开发人员不必关心过多的细节,只需要了解必要的接口即

可。

com.forlinx.LedClient.LedClient是传统的单进程应用,这个进程直接调用 Android的 SDK,

来操作开发板上的硬件,以下我们简称 LedClient.

下面我们会详细分析两种方式的实现过程。

Page 19: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-19-

2-32-32-32-3 ForlinxForlinxForlinxForlinx LedLedLedLed TestTestTestTest 实现过程

ForlinxLedTest软件的实现是我们重点讲述的,他符合 Android 应用程序开发框架,有利

于您对 Android 系统的学习。

2-3-12-3-12-3-12-3-1 ForlinxLedTestForlinxLedTestForlinxLedTestForlinxLedTest软件实现 LedLedLedLed控制的系统调用图

Page 20: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-20-

c o m .l e dForlinxLedTest .a p k

.LedSystemServerForlinxLedTest .a p k

A pplication

fo rlin x _le d .ja rframework .ja r

s y s te m /framework /

Framework

JN I libforlinx _runtim e .s o/s y s tem /l i b /

H A L l e d .default .s o/s y s tem /l i b /h w /

L inux L inux含l e c 驱 动 ,提 供 /d e v /le d s设 备 节 点

Page 21: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-21-

下面我们由下至上来说明每一层的功能:

LinuxLinuxLinuxLinux层:

由 linux系统组成 为 Led 测试 Demo 提供驱动支持,产生设备节点 /dev/ledsled 驱动代码位于 linux内核目录 /driver/char/s3c6410_leds.c中。

HALHALHALHAL层:

硬件抽象层,该层主要操作 linux系统中的硬件设备,如打开设备节点,控制设备节点等操

作,如果您的系统中有属于自己特有的硬件,这时您就需要编写 HAL层了,该层对上层提供调

用接口,供 JNI层进行调用。

Android HAL 层源码主要在 Android 源代码的 hardware 目录下,Led HAL层代码为:

Stable-Android2.3/hardware/led .

HAL 模块以 MODULE_ID.platform.so 的名字存放在文件系统的 /system/lib/hw/ 下

面,MODULE_ID 可以在源代码中定义,这里定义 MODULE_ID 为“led”,所以该模块编译通

过后,动态库名称为 led.default.so,注意这里不能含有 lib前缀.

JNIJNIJNIJNI 层::::

JNI是 Java Native Interface的缩写,译为 Java本地接口。它允许 Java代码和其他语言

编写的代码进行交互。在 android 中提供 JNI的方式,让 Java程 序可以调用 C语言程序。

android 中很多 Java类都具有 native接口,这些接口由本地实现,然后注册到系统中 .

JNI在 Android 系统中有着广泛的应用。Android 系统底层都是 C/C++实现的,上层提供的

API都是 Java的 ,Java通过 JNI调用底层的实现。比如:Android API多媒体接口MediaPlayer类,其实底层通过 JNI调用 libmedia库。由于 JNI的存在可以让我们重用很多已经存在 C/C++的库,省去了重复开发的麻烦,并且可以利用很多开源的库(Android 库中就有很多开源库,

比如 libjpeg,libpng 等等),并且让我们开发的程序更有效率(C/C++代码发挥硬件最佳性能 )

在 Led 测试程序中我们也提供了 JNI 层文件,文件位于 Stable-Android2.3/frameworks/base/services/forlinx_led_jni 下面,里面实现了向框架层注册

本地函数,供上层的 forlinx_led.jar 库调用。

JNI层的文件编译成 libforlinx_runtime.so动态库,位于/system/lib 目录下面.

Page 22: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-22-

FFFFramworkramworkramworkramwork层:

Framwork层提供了大量的 API接口和系统组件,是 Android 系统中重要的模块,

在本例中 forlinx_led.jar 库文件处于框架层,且更新了 framework.jar 系统库,在里面

增加了 Led 的 API调用,应用层的 LedSystemServer.apk和 Forlinx LED Test .apk会调用

框架层 framework.jar 和 forlinx_led.jar 提供的接口.

framework.jar 库文件增加了自己的 API,对应的源代码位于:

Stable-Android2.3/frameworks/base/core/java/android/forlinx

forlinx_led.jar 库文件对应的源代码位于:

Stable-Android2.3/frameworks/base/services/forlinx_led_server

framework层代码采用 Java语言编写,提供了大量的 API接口供上层应用程序进行调用。

编译好的 framework.jar和 forlinx.jar 位于开发板的 /system/framework/目录下面.

ApplicationApplicationApplicationApplication层::::

应用层位于 Android 系统架构的最高层,是给用户提供服务的最直接的程序,用户编写的

程序基本上位于这一层.在本例中 Led 应用层有两个进程运行, 一个是 .LedSystemServer 进程,也可以称之为

服务进程,另外一个是 com.led 进程, 这两个进程合作来完成 Led 的控制, 他们由 ForlinxLED Test.apk创建,我们来说明一下各自的分工。

.LedSystemServer 进程:

.LedSystemServer 进程创建 LedService对象,调用系统服务中的 API函数来注册

LedService服务,为进程间对象调用做准备。

com.led进程:

用户操作界面,用户通过操作界面上的按钮来打开,关闭 Led。该进程的另外一个功能是从

系统服务列表中获取到 .LedSystemServer 进程注册的服务,也就是获取

到.LedSystemServer 进程中 LedService对象提供的接口,com.led 进程调用这些接口,来

实现进程间对象调用,从而实现 Led 设备的控制。

Page 23: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-23-

下面的章节重点讲述的就是 Application层中 Forlinx LED Test.apk软件的开发过程.

进程间对象调用是 Android 系统的一个特色功能,如果您进行 Android 系统开发,您会看

到 Android 中大量使用了进程间对象互相调用的方法,这有点像组件对象模型的概念,一个服务

实现底层操作功能,另外的进程可以直接调用服务进程提供的接口,简化用户界面进程的实现

功能。

我们详细讲解 Led测试 Demo主要就是为用户讲解 Android 系统架构普遍采用的这种进程

之间对象调用的方法,对您理解 Android 架构,开发 Android 应用程序有所帮助.

Forlinx LED Test.apk 源码文件:

Stable-Android2.3/packages/apps/ForlinxLED

由于.LedSystemServer进程调用了 Android 隐藏 API,Android 隐藏 API是不能在 Eclipse中调用的,需要在 Android 源码包中编译,所以当您编译 ForlinxLEDTest时需要使用 mm或

者mmm android 模块编译指令.

下面我们来讲解一下使用 Eclipse编写 Forlinx LED Test 用户界面程序的过程。

2-3-22-3-22-3-22-3-2 安装 droiddrawdroiddrawdroiddrawdroiddraw软件 进行界面设计

在进行应用程序开发之前我们说一下 droiddraw这个工具软件。

进行 Android 应用程序开发需要进行界面设计,我们在 Windows上开发应用程序使用

过 VC++,VB这样的集成开发环境,进行界面设计时一般就是拖放控件,比如把按钮控件,编辑

控控件拖放到窗口上,实现所见即所得的效果,但是进行 Android 应用程序开发进行界面设置

时需要编写 XML文件,在该文件中定义 Android 程序的界面风格和控件大小,位置等,对于

不熟悉 XML语言和对 Android 界面定义语法不是很清晰的开发者而言有点不太习惯,为此

droiddraw工具诞生了。

droiddraw是一个开源工具,用户可以使用该工具拖放控件设计 Android 应用程序界面,

然后保存成 XML语言的文本文件,把该 XML文件替换掉 Eclipse工程的界面定义 XML文件即

可,软件开发完成后,运行时的界面就是我们使用 droiddraw这个开源工具制作的,是不是很

方便呢。

Droiddraw下载地址:

Page 24: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-24-

http://code.google.com/p/droiddraw/downloads/detail?name=droiddraw-r1b18.tgz&can=2&q=

笔者使用 droiddraw-r1b18.tgz 版本,,解压后,在 cd到解压后的文件夹,终端窗口里面执

行: ./droiddraw.sh 即可运行软件,第一次运行时会检测是否有新版本,如果有新的版本

会提示您下载.

droiddraw运行后如下图所示:

Page 25: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-25-

在进行界面设计之前,先说一下 Android 界面的布局类型:

Andorid的界面定义文件,在工程目录下的 res/layout的 xml文件里面,一般情况下一个 xml对应一个界面。做 android的界面有点像写 html,要先给 android定框架,然后在框架里面放控

件。

Android界面布局类型:FrameLayout:里面只可以有一个控件,并且不能设计这个控件的位置,控件会放到左上角

LinearLayout:里面可以放多个控件,但是一行只能放一个控件

TableLayout:这个要和 TableRow配合使用,很像 html里面的 tableAbsoluteLayout:里面可以放多个控件,并且可以自己定义控件的 x,y的位置

RelativeLayout:里面可以放多个控件,不过控件的位置都是相对位置

(界面的布局好像还可以直接引用一些 view,如 ScrollView等)

这里我们在 droiddraw界面左上角的 Screen项中 RootLayout 选项选择:

AbsoluteLayoutScreenSize 选项选择:HVGA Landscape

Page 26: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-26-

如下图所示:

这是我们在开发板上运行时的界面布局。

拖动按钮控件到窗体上:

Page 27: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-27-

单击界面右下角的 Generate 按钮,在 Output框将产生界面的 XML语言描述,您也可以

修改 XML中按钮名称等描述信息.

选择文件菜单里面的保存选项,保存 XML界面定义,文件名为main.xml.

这样界面设计完成,下面我们将会用到刚刚保存的 main.xml 文件,作为我们 ForlinxLedTest 软件的主界面。

2-3-32-3-32-3-32-3-3 ForlinxLedTestForlinxLedTestForlinxLedTestForlinxLedTest软件编码实现

前面的章节我们已经讲解了 android 应用程序开发环境的搭建,下面我们就来创建

ForlinxLedTest应用来演示 Android 应用软件的开发。

注意:我们发布的 Android 中包含了 Led 测试程序的源码,位于 Android 源码包

Stable-Android2.3/packages/apps/ForlinxLED/目录下面, 在编译 Android 时将自动

编译该测试程序,烧写 Android 时会安装到开发板上。该测试程序主要用来学习使用,您可以

自由修改.

Page 28: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-28-

运行 Eclipse,选择 /home/monkey/AndroidApp 目录作为工作空间,如图:

选择 File->New->Android 工程 如图:

Page 29: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-29-

点击 Finish按钮,完成 ForlinxLEDTest的框架搭建.

编写编写编写编写 JavaJavaJavaJava代码代码代码代码

Page 30: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-30-

LedTest.java文件是我们主要编写的代码文件,主要功能: 完成用户界面的创建,响应用户操

作请求.

上面我们看到的 LedTest.java文件的代码是系统自动生成的,目前还不能实现我们需要的功

能,需要修改这个文件,增加 Java代码,如下图:

Page 31: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-31-

详细的代码这里就不描述了,您可以查看我们提供的 Led 测试程序的源代码

源代码 LedTest.java文件路径:Stable-Android2.3/packages/apps/ForlinxLED/src/com/led/

提示:您在 Eclipse中编写 Java代码时,可以在标签页上双击该标签,这个页面将最大化显示 。

再次双击将还原显示.

修改字符串资源修改字符串资源修改字符串资源修改字符串资源

开发 Android 应用程序时可以定义字符串资源,在界面的 XML定义文件中使用该字符串资

源,字符串资源默认文件名为 string.xml, 该文件中定义了 Led 测试程序的名字,飞凌发布

的 Demo 名字为 ForlinxLEDTest,您可以修改成自己喜欢的名字,这样在开发板程序列表中

就可以看到您定义的软件的名字了。

我们的 string.xml 文件内容如图:

Page 32: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-32-

string.xml 文件路径:

Stable-Android2.3/packages/apps/ForlinxLED/res/values/

设计界面文件设计界面文件设计界面文件设计界面文件

在前边的章节中我们已经知道 Andrid 应用软件的界面设计需要编写 XML文件,我们使用

了 droiddraw软件拖放控件来实现所见即所得的效果,并且保存了main.xml文件。

现在我们该使用 main.xml 文件了,使用 gedit打开 droiddraw制作的 main.xml 文件,

拷贝里面的内容到 ForlinxLEDTest中main.xml文件中,保存,如下图:

Page 33: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-33-

main.xml 文件路径:Stable-Android2.3/packages/apps/ForlinxLED/res/layout

编写编写编写编写AndroidManifest.xmlAndroidManifest.xmlAndroidManifest.xmlAndroidManifest.xml文件文件文件文件

每个 Android 的 application 都必须包含一个 AndroidManifest.xml,且文件名是

固定的,不能修改。应用程序需要通过它向 Android 系统提供一些必需的信息,且需要

在 application 运行前提供给系统.

我们提供的 AndroidManifest.xml 文件如下:

Page 34: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-34-

AndroidManifest.xml 文件位于:

Stable-Android2.3/packages/apps/ForlinxLED/ 目录下面

这样 ForlinxLEDTest 工程完成,可以在模拟器看一下软件运行以后,界面的显示效

果:

注意:

确认您使用的 Android SDK 从我们提供的 Android 源码包中编译出来的,也就是执

行了 make sdk 命令产生的 SDK,因为我们在Android 原有 SDK 的基础上增加了我们自己

的接口,如果不使用我们的SDK,您的 ForlinxLEDTest 无法在模拟器中运行。

在模拟器中运行在模拟器中运行在模拟器中运行在模拟器中运行

运行之前我们先设置一下模拟器的显示参数:

Eclipse 菜单中:

Page 35: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-35-

Windows -> AndroidSDK and AVD Manager 出现对话框,

选择我们前面章节创建的 Test 模拟器,然后单击右边的编辑按钮,在 Skin:中选择

HVGA,如下图所示:

单击 Edit AVD 设置完成。.

Page 36: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-36-

Eclipse菜单中 Run-> Run As->Android Application启动模拟器,启动时间与您的 PC配置相关,启动后进入应用程序列表,即可看到我们刚才编

写的 ForlinxLEDTest软件,如下图:

笔者的开发板采用 4.3寸屏,横屏显示,这里是竖屏,可以使用 Ctrl+F11键实现横竖屏切

换,我们切换到横屏显示,如图:

Page 37: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-37-

单击 ForlinxLED Test,运行测试程序:

Page 38: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-38-

界面显示效果,如图所示,由于软件是测试 Demo,对界面没有进行优化,您在开发产品中

可以编写 main.xml文件或者使用 droiddraw工具美化界面。

单击运行界面上的按钮,没有任何反应,这是因为我们只完成了界面程序的设计。该进程会

调用另外一个进程的对象,这样才能实现 Led 的控制。

与与与与 AndroidAndroidAndroidAndroid源码一起编译源码一起编译源码一起编译源码一起编译

由于我们提供的 Led Demo涉及到进程间对象调用,而我们在模拟器中看只看到了com.led进程,没有我们需要的.LedSystemServer 服务,如下图所示:

注意: 使用 adb功能可以进入到模拟器查看进程信息,adb功能我们下一章节会讲解到,

我们需要启动.LedSystemServer服务进程与 com.led 进行配合来完成工作.

Page 39: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-39-

.LedSystemServer 服务会调用 Android 隐藏的 API,所以服务的源代码我们放在了

Android 源码包中编译,该服务的源代码路径:

Stable-Android2.3/packages/apps/ForlinxLED/src/com/led/

LedSystemServer.java文件是服务的实现文件.

我们发布的 Android 源码包中,把 LedSystemServer.java 文件与界面进程文件

LedTest.java一起编译到了 ForlinxLedTest.apk包,所以只需安装 ForlinxLedTest.apk到开

发板,运行时就会启动.LedSystemServer服务和 com.led用户界面进程.

所以您使 用 Eclipse 开发完成 用户界面进程后, 需要仿照我们提供 的 Stable-Android2.3/packages/apps/ForlinxLED 目录,把您开发的 ForlinxLEDTest文件夹放到

Stable-Android2.3/packages/apps 下 面 , 编 写 Android.mk 文 件 , 把

LedSystemServer.java文件也拷贝与您的 LedTest.java同一级别目录下面,使用模块编译

命令mm,编译出您的软件包.

编译您的 ForlinxLEDTest模块之前,需要确认一下,您的模块是否和我们提供的 ForlinxLed存在冲突,否则在开发板中运行您的 ForlinxLEDTest模块会出现错误提示。

1

软件包的名字需要在 Android.mk文件中定义,我们提供的 ForlinxLed 模块名字如下:

# This is the target being built.LOCAL_PACKAGE_NAME := ForlinxLedTest

您需要把 ForlinxLedTest 字符串修改成您自定义的名称,不能与我们提供的模块名字

ForlinxLedTest相同,如修改如下:

# This is the target being built.LOCAL_PACKAGE_NAME := MyLedTest

2修改您的 ForlinxLEDTest 目录下的 AndroidManifest.xml文件

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.my.led"package="com.my.led"package="com.my.led"package="com.my.led"

Page 40: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-40-

android:sharedUserId="android.uid.system">

注意 : packagepackagepackagepackage属性值不能为 com.led,com.led,com.led,com.led,这里设置成 com.my.ledcom.my.ledcom.my.ledcom.my.led

3 修改 Stable-Android2.3/packages/apps/ForlinxLED/res/values/string.xml 文件

把软件名称修改为 My LED Test

<string name="app_name">My LED Test </string>

保存,退出.

4 修改 LedTest.java, LedSystemServer.java文件

Stable-Android2.3/packages/apps/ForlinxLEDTest/src/com/led/LedTest.java文件第一行

package com.led ; 修改为 package com.my.led;

Stable-Android2.3/packages/apps/ForlinxLEDTest/src/com/led/LedSystemServer.java文件第一行

package com.led ; 修改为 package com.my.led;

与我们发布的源代码相比,包名从 com.led 变成了 com.my.led所以需要在 src/com/目录下新建 my文件夹,把 led 文件夹放到my文件夹里面,这样遵循 Java编程规则.

5使用mmm模块编译指令编译 ForlinxLEDTest模块,编译前执行 “. setenv ” 设置环

境变量, 然后编译即可,编译方法如下图所示:

Page 41: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-41-

回车后:

Page 42: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-42-

编译通过后会在 Android源代码目录中的 out/target/product/OK6410/system/app目

录下形成 MyLedTest.apk

把该软件包安装到开发板上,这里使用 SD卡拷贝的方法,把MyLedTest.apk拷贝到 SD卡

中,SD卡插入到开发板中,在超级终端里面执行:

cp /sdcard/MyLedTest.apk /system/app -f

这时会在开发板应用程序列表中看到我们刚才安装的文件:

Page 43: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-43-

运行它,将会看到您设计的图形界面, 点击按钮就可以控制 Led了.

2-42-42-42-4 LedClientLedClientLedClientLedClient的实现过程

LedClient是与 ForlinxLedTest例子不同的另外一种编程思想,该软件相对比较简单,没

有涉及到进程通信,而是直接调用系统提供的 API来实现底层硬件的控制.

2-4-12-4-12-4-12-4-1 LedClientLedClientLedClientLedClient软件实现 LedLedLedLed控制的系统调用图::::

Page 44: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-44-

c o m .fo rlin x .LedClientLedClient .a p k

A pplication

fo rlin x _le d .ja rs y s te m /framework /

Framework

JN I libforlinx _runtim e .s o/s y s te m /l i b /

H A L le d .default .s o/s y s te m /l i b /h w /

L inux L inux含l e c 驱 动 ,提 供 /d e v /le d s 设 备 节 点

2-4-22-4-22-4-22-4-2 LedClientLedClientLedClientLedClient 软件实现

从上面的系统调用图可以看到 LedClient 与 ForlinxLEDTest不同之处在于 LedClient没

Page 45: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-45-

有进程间对象调用,而是直接调用 Android 系统 API来操作 Led,相比 ForlinxLEDTest简单

了很多,LedClient的源代码位于

Stable-Android2.3/packages/apps/Forlinx_LedClient 目录下面

您可以进入到 Forlinx_LedClient目录查看相应的文件,这里就不详细说明了.

我们提供 LedClient例子,是因为您编写应用程序时也可以采用这种简单的系统调用方式,而

不一定按照进程间对象调用的方法,进程间对象调用是为了更好的解释 Android 系统架构,以

加深您的 Android 系统的理解。

编译 Android 系统时会自动编译 Forlinx_LedClient, 编译好的 LedClient.apk

包位于开发板的 /system/app/目录下面.

进入应用程序列表,我们会看到该软件:

运行后:

Page 46: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-46-

运行后会自动打开开发板上的四个 Led 灯。

注意:

我们演示使用的是 OK6410开发板,FL6410开发板的运行效果与 OK6410开发板相同.

这两个开发板硬件部分均是低电平灯亮,高电平灯灭.

如果您的板子上灯没有亮,很可能是你的板子 GPIO高电平灯亮,低电平灯灭,根据您的需求,

修改驱动,或者应用层文件即可。

Page 47: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-47-

第三章第三章第三章第三章 AndroidAndroidAndroidAndroid应用程序的调试应用程序的调试应用程序的调试应用程序的调试

3-13-13-13-1 ADBADBADBADB与 ddmsddmsddmsddms简介

adb(Android Debug Bridge)是 Android 提供的一个通用的调试工具,借助这个

工具,可以管理设备或者模拟器的状态 ,还可以进行以下的操作:

1、快速更新设备或模拟器中的代码,如应用或 Android 系统升级;

2、在设备上运行 shell 命令;

3、管理设备或模拟器上的预定端口;

4、在设备或模拟器上上传下载文件

使用 ADB可以把 APK安装到 Android 设备中或者 Android 模拟器上,也可以从 Android 设

备,模拟器中卸载安装的软件,同时使用 ADB shell 的 logcat功能,可以查看 Android 系统

的运行日志,自己应用软件的运行日志等.

DDMS 是一个在 adb 基础上的图形化工具,DDMS 的全称是 Dalvik Debug MonitorService,它可以为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收 SMS、虚拟地理坐标等等。

ADB 和DDMS 均可以调试 Android 实体设备,也可以调试 Android 模拟器.

3-23-23-23-2 ADBADBADBADB调试环境搭建

在 Ubuntu的 /etc/udev/rules.d/下创建一个配置文件: 51-android.rulesgedit /etc/udev/rules.d/50-android.rules

文件里添加如下配置参数:

SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1",MODE="0666"

如图:

Page 48: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-48-

保存,给配置文件设置读写权限, ADB驱动配置功能即可完成.

chmod a+rx /etc/udev/rules.d/50-android.rules

下面我们说一下 SYSFS参数:

SYSFS{"idVendor"}="xxx"

Linux ADB驱动配置文件里的 SYSFS参数是指设备厂商的 ID号,如何知道 USB设备的 ID号呢,在 Ubuntu终端里面执行 lsusb命令,如下图:

Page 49: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-49-

我们看到红色部分, ID 18d1:4e12 其中 18d1 是该设备的生产商 ID 也就是 VendorID,4e12是该设备的产品 ID,即 Product ID,,刚才我们做的工作就是把 VendorID 信息写入

ADB驱动配置文件中., 使 ADB功能可用.

adb工具位于 SDK开发包 platform-tools目录里面,如下图:

Page 50: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-50-

在使用 adb之前我们把 adb的路径加到环境变量里面,这样我们就可以直接在终端 shell窗口中使用 adb命令了,下面我们把路径加到 /etc/profile文件里面

gedit /etc/profile

export PATH=/home/monkey/AndroidSDK-and-Tools/android-sdk_eng.root_linux-x86/platform-tools:$PATH

注意:环境变量设置语句在文件里面要处在同一行上.

保存退出,重新启动 Ubuntu系统,刚才 ADB驱动配置文件的添加,环境变量的设置即可生效 .

3-33-33-33-3 调试 ForlinxLEDTestForlinxLEDTestForlinxLEDTestForlinxLEDTest

下面,我们以 ForlinxLEDTest为例,来调试界面应用程序,我们讲解的主要目录是帮助用户

建立应用程序开发调试的概念,熟悉 Ecplise开发环境,使用 ADB,DDMS调试工具,应用程

序的代码分析我们这里不参与讲解。

Page 51: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-51-

3-3-13-3-13-3-13-3-1 修改AndroidManifest.xmlAndroidManifest.xmlAndroidManifest.xmlAndroidManifest.xml文件

运行 eclipse,打开 ForlinxLEDTest工程

ForlinxLEDTest界面测试程序 AndroidManifest.xml 文件中我们添加了启动服务代码,与

界面测试程序合作来实现 Led 的控制,我们这里以调试应用为主,重点给客户演示 Eclipse中

ADB,DDMS的调试功能,所以我们这里不运行服务程序,单独运行 ForlinxLEDTest界面测

试程序。

修改 AndroidManifest.xml 文件,去掉以下 XML信息:

<service android:name=".LedSystemServer"android:process=".LedSystemServer" >

<intent-filter><action android:name="com.led.systemserver"/><category android:name="android.intent.category.DEFAULT"/>

</intent-filter></service>

同时去掉 android:sharedUserId="android.uid.system" 语句,否则调试时会提示

Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE软件无法通过 ADB安装到开发板或者模拟器中.

android:sharedUserId 属性可以把 apk放到系统进程中,也可以配置多个 APK运行在一

个进程中,这样可以共享数据.

修改完成后如下图:

Page 52: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-52-

3-3-23-3-23-3-23-3-2 调试应用程序

在 Eclipse集成开发环境中 打开 LedTest.java文件,在需要加断点的地方,用鼠标在该标

签页的最左边双击即可完成断点的添加,如图:

Page 53: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-53-

注意:把开发板加电,Android 启动完成后,再把 USB线一端接开发板的 OTG接口,一端接

PC机 USB接口,这样在 Ubuntu终端 shell 中执行 adb devices即可看到系统识别了 USB设备.

确认系统已经识别开发板设备后,继续以下的操作:

单击 Run->Run Configurations 项

选择 Target标签里面的 Manual 项,然后单击 Apply确定即可,如图:

Page 54: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-54-

选择 Run菜单里面的 Debug 项,开始调试应用程序,运行时会出现以下的提示信息,确定后

继续。.

Page 55: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-55-

这时开发板上会运行您的 MyLedTest应用程序,单击 Led 控制界面的某个按钮,将运行到

断点状态,如下图:

Page 56: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-56-

有了断点就可以方便查看变量的值,调用堆栈等重要信息了.

Run菜单里面是关于调试和运行的控制项,您可以选择里面的选项来控制软件的运行,如单步

运行,终止运行等等.

3-3-33-3-33-3-33-3-3 DDMSDDMSDDMSDDMS功能介绍

使用 DDMS 功能可以方便的查看 Android 设备信息,如设备上正在运行的进程,设备里面的

文件信息浏览,还可以远程观看设备的界面显示,抓屏图片保存成文件等功能。

单击 Windows->Open Perspective->DDMS 即可出现 DDMS窗口,如下图:

Page 57: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-57-

文件浏览页面可以查看 Android 设备的中的文件:

红色区域标注的 ”照相机” 按钮可以查看 Android 设备当前界面的显示:

Page 58: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-58-

Refresh按钮刷新界面显示,Sava按钮可以把界面显示保存成图片文件。

选择正在运行的进程后,使用停止按钮终止正在运行的进程,如图:

Page 59: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-59-

单击 Windows->Open Perspective->Java 项回到代码编辑状态 .

ADB和 DDMS 是开发应用程序,学习 Android 系统必不可少的工具,另外我们

只讲述了它们的最基本功能,您可以深入的学习,研究,做一名资深的 Android 研发人员。

Page 60: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-60-

Page 61: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-61-

第四章第四章第四章第四章 WINDOWSWINDOWSWINDOWSWINDOWS下下下下ADBADBADBADB调试环境的搭建调试环境的搭建调试环境的搭建调试环境的搭建

4-14-14-14-1 javajavajavajava JDKJDKJDKJDK下载与安装

进入该网页:

http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u26-download-400750.html如图:

安装JDK,一步步默认就可以,如果是默认的路径会安装在C:\Program Files\Java下。在这个

文件夹下有两个文件夹jdk1.6.0_10和jre6。

4-24-24-24-2 eclipseeclipseeclipseeclipse下载

进入该网页: http://www.eclipse.org/downloads/

我们选择第一个(即eclipse IDE for java EE Developers)

Page 62: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-62-

解压到C:\Program Files\Java\jre6的目录下,双击eclipse目录下eclipse.exe就可以打开

eclipse了。

ADT的安装

打开eclipse,Help->Install New Software->add,名字随意起,Location中为http://dl-ssl.google.com/android/eclipse/

一直Next就可以完成安装,安装完ADT会在工具栏中有一个 。

4-34-34-34-3 下载 AndroidAndroidAndroidAndroid SDKSDKSDKSDK从 Google官网下载 sdk,下载地址为 http://developer.android.com/sdk/index.html

Page 63: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-63-

下载完成后得到一压缩包。解压到某一目录,如 C:\Program Files\Java\android-sdk-windows\ ,下载下来的并不是真正的 SDK,准确的说是一个 SDK 下载安装器。打开 SDKManager.exe,如果你的电脑不支持 https ,则必须到 settings里把"Force https...http:"这一项勾上。选择 Available packages,如下图所示

根据你的需要选择安装包。在这里一定要选择上 Google USB driver packages,这个包连接我

们开发板的 USB驱动。

下载完成 后会在 Installed packages 下面有你 下载好的 sdk 包。在 android-sdk-windows\platform-tools目录下有我们用的 adb工具,所以我们要把这个路径加入到 PATH环境变量中去,我的电脑-》属性-》高级选项卡,选择环境变量,在系统变量中找到 PATH编

辑,把 ADB所在路径加入进去,

注意:要与前边的环境变量用分号隔开。笔者的路径为 C:\Program Files\Java\android-sdk-windows\platform-tools,把这个路径加入到 PATH这个环境变量中。重新启动电脑,这样我

们就可以在命令行下直接使用 ADB命令了。

Page 64: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-64-

因为 Google官方没有提供 Android2.3.4的 SDK,所以我们还需要将我们在 LINUX 环境下

编译好的平台放到 SDK目录下的 platforms下,将 linux下 SDK目录 platforms下 android-2.3.4复制到 windows的 SDK的 platforms下。

打开 eclipse,Window->Preferences->Android->SDK Location中找到 sdk所在位置。

Page 65: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-65-

Apply->OK

4-44-44-44-4 安装 usbusbusbusb驱动

将装有Android开发板的USB OTG与电脑相连,由于官方给出的USB驱动不能直接安装,我们

需 要 将 其 中 的 配 置 文 件 做 一 些 改 动 。 在 我 们 的 SDK 目 录 下 android-sdk-windows\extras\google\有个usb_driver文件夹,这是我们与开发板相连的USB驱动。用记

事本打开android_winusb.inf ,找到[Google.NTx86],在[Google.NTx86]后加上如下

语句:

;OK6410_2011M04%SingleAdbInterface% = USB_Install, USB/VID_18d1&PID_4e12%CompositeAdbInterface% = USB_Install, USB/VID_18d1&PID_4e12&MI_01

在[Google.NTamd64]后也加上

;OK6410_2011M04%SingleAdbInterface% = USB_Install, USB/VID_18d1&PID_4e12%CompositeAdbInterface% = USB_Install, USB/VID_18d1&PID_4e12&MI_01

Page 66: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-66-

OK6410开发板的设备 VID 为 18d1,PID 为 4e12,这两个参数在设备详细信息里

边可以找到,VID 是设备厂商号,PID 为设备号。我的电脑右键->管理->设备管理器 ,

在其它设备中有一个 OK6410,右键->属性->详细信息中可以看到我们要看到 VID和 PID。

Page 67: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-67-

下面开始安装 USB驱动,在OK6410右键->更新驱动程序

Page 68: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-68-

浏览选择 USB驱动所在目录,点“下一步”就可以完成 USB 驱动的安装了。

打开电源,在开始->运行中输入 cmd回车,在命令行下输入 adb devices就可以看到我们的设

备了。

这说明我们的 ADB 调试环境已经搭建好了。

Page 69: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-69-

在终端输入 adb shell ,就可以进入 android 终端了。

4-54-54-54-5 HelloForlinxHelloForlinxHelloForlinxHelloForlinx小程序

打开 eclipse,File->new->Android Project,如下图所示:

Page 70: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-70-

Finish

Page 71: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-71-

在 Android Application 右键 new 一个 configuration,project选择我们的 helloforlinx,在Target选项卡下 Deployment Target Selection Mode选择 Manual

Page 72: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-72-

然后 run就可以运行了。

Page 73: 51 cto下载 android应用程序开发宝典

AndroidAndroidAndroidAndroid 应用程序开发指南应用程序开发指南应用程序开发指南应用程序开发指南TE/OK6410TE/OK6410TE/OK6410TE/OK6410回目录回目录回目录回目录

www.witech.com.cn 2011.7.31

-73-

在屏幕上就能看到我们开发的小程序了。