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




                              TE/OK6410
                  Android 应用程序开发指南
                            飞凌嵌入式
                   让嵌入式开发融入移动互联时代




            -1-


                       www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                                                                             Android 应用程序开发指南




                                                                   目 录


第一章        ANDROID 系统应用环境搭建... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ............... 3

 1-1   UBUNTU10.10 上编译 ANDROID 源码..............................................................................................3
  1-1-1        编译 Android2.3 形成文件系统.............................................................................................. 3
  1-1-2        编译 Android2.3 形成 SDK 开发包.........................................................................................6
 1-2   安装开发工具,设置开发环境.......................................................................................................9
  1-2-1        安装 Eclipse............................................................................................................................. 9
  1-2-2        安装 ADT................................................................................................................................10
  1-2-3        设置开发环境........................................................................................................................ 11
  1-2-4        运行 Android 模拟器............................................................................................................. 12

第二章    开发 ANDROID 应用程序 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ... 16

 2-1   ANDROID 应用程序开发框架........................................................................................................ 16
 2-2   LED 测试程序框架分析................................................................................................................. 18
 2-3   FORLINX LED TEST 实现过程....................................................................................................... 19
  2-3-1        ForlinxLedTest 软件实现 Led 控制的系统调用图............................................................... 19
  2-3-2        安装 droiddraw 软件 进行界面设计................................................................................... 23
  2-3-3        ForlinxLedTest 软件编码实现............................................................................................... 27
 2-4   LED CLIENT 的实现过程................................................................................................................. 43
  2-4-1        LedClient 软件实现 Led 控制的系统调用图:...................................................................... 43
  2-4-2        LedClient 软件实现.............................................................................................................. 44

第三章        ANDROID 应用程序的调试.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... 47

 3-1   ADB 与 DDMS 简介........................................................................................................................ 47
 3-2   ADB 调试环境搭建....................................................................................................................... 47
 3-3   调试 FORLINX LEDTEST ................................................................................................................. 50
  3-3-1        修改 AndroidManifest.xml 文件............................................................................................ 51
  3-3-2        调试应用程序........................................................................................................................ 52
  3-3-3        DDMS 功能介绍.................................................................................................................... 56

第四章        WINDOWS 下 ADB 调试环境的搭建... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ............. 61

 4-1   JAVA   JDK 下载与安装.................................................................................................................... 61
 4-2   ECLIPSE     下载................................................................................................................................... 61
 4-3   下载 ANDROID SDK....................................................................................................................... 63
 4-4   安装 USB 驱动.................................................................................................................................66
 4-5   HELLO FORLINX 小程序.................................................................................................................. 70




                                                          -2-


                                                                                                           www.witech.com.cn                       2011.7.31
回目录
TE/OK6410                                        Android 应用程序开发指南




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

1-1 Ubuntu10.10 上编译 Android 源码

  飞凌嵌入式公司的 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-1       编译 Android2.3 形成文件系统

  我们建议您在真机 Ubuntu 系统中进行 Android 开发,如果您在虚拟中编译 Android2.3
速度相对慢一些。


  笔 者 的 Android 源 代 码 文 件 夹 名 为 : Stable-Android2.3 , 存 放 路 径 :
/home/monkey/Forlinx/,如下图:




                             -3-


                                                  www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                                 Android 应用程序开发指南




编译 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 源码。
 如图:




                                    -4-


                                                            www.witech.com.cn    2011.7.31
回目录
TE/OK6410                          Android 应用程序开发指南




每个人的开发环境存在差异,以上的库文件只是参考,如果你在编译过程中出现了问题,说明还需要
安装必要的库,这时根据错误提示信息,Google 一下即可解决。再次感谢 Google,有了它生活就
是不一样.


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


  该文件用于一键烧写,是 Android 系统中的文件系统部分,您可以用您刚才制作的这个文件替
换掉开发板配套光盘中提供的同名文件,该文件与飞凌官方提供的文件是相同的,里面含有我们下一
节将要讲述的 Led 测试程序。


一键烧写的详细介绍,请参考飞凌的 Android 用户手册,这里不再详细描述了.一键烧写完成后,
启动开发板,进入 Android 的应用程序列表,如下图所示:




                           -5-


                                    www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                      Android 应用程序开发指南




  里面的 ForlinxLedTest.apk 和 com. forlinx.LedClient.LedClient.apk 两个应用程序是
我们下面章节重点讲述的 Demo 程序,我们将详细的讲述 Led 测试程序的开发环境搭建,开发
过程,及 Android 应用程序的开发框架。



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

   Android 源码编译通过后,下一步我们就要编译 Android2.3 的 SDK 了,有了 SDK 我们
才能进行应用程序的开发,SDK 中封装了 Android 对外提供的调用接口,用户应用程序通过调
用 SDK 中的功能函数或者类库来实现业务上的需求。

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


   . setenv

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



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




                            -6-


                                                 www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                  Android 应用程序开发指南




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




                          -7-


                                            www.witech.com.cn   2011.7.31
回目录
TE/OK6410                             Android 应用程序开发指南




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




                       -8-


                                       www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                Android 应用程序开发指南




这样 Android SDK 准备完成.




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

  Android2.3 SDK 在 Ubuntu10.10 编译成功后,下一步就是开发 Android 的应用程序
了,下面说明一下在 Ubuntu10.10 上开发 Android 应用需要安装的工具。

1-2-1   安装 Eclipse

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

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

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

   把下载的 Eclipse 放到了 /home/monkey/AndroidSDK-and-Tools 目录下面,与
Android SDK 处于并列目录。
                              -9-


                                           www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                         Android 应用程序开发指南



    使用 tar zxvf eclipse-java-helios-SR2-linux-gtk-x86_64.tar.gz 命令解压,形成
eclipse 文件夹,如下图所示:




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

1-2-2       安装 ADT

 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


                              -10-


                                                    www.witech.com.cn   2011.7.31
回目录
TE/OK6410                             Android 应用程序开发指南



unzip ../ADT-10.0.1.zip




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

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

1-2-3       设置开发环境

  运行 eclipse,提示您选择工作空间,这里选择/home/monkey/AndroidApp 文件夹作为
为我的工作空间,选择工作空间是为了存放工程,一个工作空间里面可以有多个工程存在。

  选择完成工作空间后 , 出现欢迎界面,选择 Windows 菜单中的 preference 项,弹出窗体,
然后单击 Brower 按钮,选择您编译的 SDK 文件夹,然后单击 Apply 按钮,如图:




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

                          -11-


                                       www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                    Android 应用程序开发指南



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




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




1-2-4       运行 Android 模拟器

 运行 Android 模拟器之前,     需要创建 AVD,AVD(Android Virtual Device)就是 Android
虚拟设备,同样在 Widows 菜单里面,选择 Android SDK and AVD Manage,弹出框,选择
第一项 Vritual device 然后 new 选择,创建 AVD,我设置的 SD 卡是 512M,其他的默认即
可,创建成功后,如下图:




                          -12-


                                               www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                             Android 应用程序开发指南




单击 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 秒的时间,成功运行后如图:




                                -13-


                                                        www.witech.com.cn   2011.7.31
回目录
TE/OK6410                      Android 应用程序开发指南




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




                  -14-


                                 www.witech.com.cn   2011.7.31
回目录
TE/OK6410          Android 应用程序开发指南




            -15-


                    www.witech.com.cn   2011.7.31
回目录
TE/OK6410                            Android 应用程序开发指南




第二章 开发 Android 应用程序

2-1 Android 应用程序开发框架

 在进行 Android 应用程序开发之前,我们先认识一下 Android 的框架,对框架有了一定的认
识后,才能更好的理解 Android 系统的工作方式。


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




从上图可以看到:Android 的框架分四个层次
 Applications (应用层):


 用户开发的应用程序和系统自动的一些应用处于这一层,如 Browser 浏览器软件,Gallery 图
片查看器软件,music 音乐播放软件等等.

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


                     -16-


                                      www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                  Android 应用程序开发指南



Application Framework(框架层),


 框架层属于 Android 系统的核心层,里面含有各种组件,如 ActivityManager,PackageManger
等等,该层对上层的应用层软件提供 SDK 调用接口,和系统管理服务,主要采用 Java 语言开发.

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


    Dalvik 虚拟机是 Google 等厂商合作开发的 Android 移动设备平台的核心组成部分之一。
它可以支持. d e (即 Dalvik Executable)
           x                    格式的 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 文件中




                          -17-


                                             www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                  Android 应用程序开发指南




2-2 Led 测试程序框架分析

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


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




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

ForlinxLedTest 体现了 Android 特有的进程间对象调用,    进程之间对象的调用就像一个进程间
上层模块对下层模块调用那么简单,开发人员不必关心过多的细节,只需要了解必要的接口即
可。
com.forlinx.LedClient.LedClient 是传统的单进程应用,这个进程直接调用 Android 的 SDK,
来操作开发板上的硬件,以下我们简称 LedClient.

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




                          -18-


                                             www.witech.com.cn   2011.7.31
回目录
TE/OK6410                          Android 应用程序开发指南




2-3 Forlinx Led Test 实现过程

  ForlinxLedTest 软件的实现是我们重点讲述的,他符合 Android 应用程序开发框架,有利
于您对 Android 系统的学习。



2-3-1       ForlinxLedTest 软件实现 Led 控制的系统调用图




                     -19-


                                     www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                  Android 应用程序开发指南




                                       c o m.l e d
                                 ForlinxLedTest .a p k
 A pplication



                                 .LedSystemServer
                                 ForlinxLedTest .a p k




  F ramew ork                        fo rlin x _l e d .ja r
                                     framew ork .ja r
                                 s y s te m /framew ork /




      JN I                  libforlinx_runtim e .s o
                                 /s y s t e m /l i b/




     HAL                           l e d.default .s o
                                  /s y s t e m /l i b/h w/



   L in u x                            L in u x
                       含l e c驱     动,提 供/d e v/le d s设 备 节 点
                -20-


                                             www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                   Android 应用程序开发指南




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


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



HAL 层:

  硬件抽象层,该层主要操作 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 前缀.


JNI 层:
     :


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 目录下面.

                               -21-


                                              www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                           Android 应用程序开发指南



Framwork 层:


 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/目录下面.


Application 层:
             :


    应用层位于 Android 系统架构的最高层,是给用户提供服务的最直接的程序,用户编写的
程序基本上位于这一层.
   在本例中 Led 应用层有两个进程运行, 一个是 .LedSystemServer 进程,也可以称之为
服务进程,另外一个是 com.led 进程, 这两个进程合作来完成 Led 的控制, 他们由 Forlinx
LED Test.apk 创建,我们来说明一下各自的分工。


.LedSystemServer 进程:


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


com.led 进程:


  用户操作界面,用户通过操作界面上的按钮来打开,关闭 Led。该进程的另外一个功能是从
系统服务列表中获取到 .LedSystemServer 进程注册的服务,也就是获取
到.LedSystemServer 进程中 LedService 对象提供的接口,com.led 进程调用这些接口,来
实现进程间对象调用,从而实现 Led 设备的控制。

                               -22-


                                                      www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                    Android 应用程序开发指南



下面的章节重点讲述的就是 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-2       安装 droiddraw 软件 进行界面设计

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


      进行 Android 应用程序开发需要进行界面设计,我们在 Windows 上开发应用程序使用
过 VC++,VB 这样的集成开发环境,进行界面设计时一般就是拖放控件,比如把按钮控件,编辑
控控件拖放到窗口上,实现所见即所得的效果,但是进行 Android 应用程序开发进行界面设置
时需要编写 XML 文件,在该文件中定义 Android 程序的界面风格和控件大小,位置等,对于
不熟悉 XML 语言和对 Android 界面定义语法不是很清晰的开发者而言有点不太习惯,为此
droiddraw 工具诞生了。


   droiddraw 是一个开源工具,用户可以使用该工具拖放控件设计 Android 应用程序界面,
然后保存成 XML 语言的文本文件,把该 XML 文件替换掉 Eclipse 工程的界面定义 XML 文件即
可,软件开发完成后,运行时的界面就是我们使用 droiddraw 这个开源工具制作的,是不是很
方便呢。


  Droiddraw 下载地址:
                              -23-


                                              www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                        Android 应用程序开发指南




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




笔者使用 droiddraw-r1b18.tgz 版本,,解压后,在 cd 到解压后的文件夹,终端窗口里面执
行: ./droiddraw.sh 即可运行软件,第一次运行时会检测是否有新版本,如果有新的版本
会提示您下载.




  droiddraw 运行后如下图所示:




                             -24-


                                                   www.witech.com.cn    2011.7.31
回目录
TE/OK6410                                  Android 应用程序开发指南




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



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


Android 界面布局类型:
FrameLayout:里面只可以有一个控件,并且不能设计这个控件的位置,控件会放到左上角
LinearLayout:里面可以放多个控件,但是一行只能放一个控件
TableLayout:这个要和 TableRow 配合使用,很像 html 里面的 table
AbsoluteLayout:里面可以放多个控件,并且可以自己定义控件的 x,y 的位置
RelativeLayout:里面可以放多个控件,不过控件的位置都是相对位置
(界面的布局好像还可以直接引用一些 view,如 ScrollView 等)


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

                          -25-


                                             www.witech.com.cn   2011.7.31
回目录
TE/OK6410              Android 应用程序开发指南




  如下图所示:




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

 拖动按钮控件到窗体上:




                -26-


                        www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                    Android 应用程序开发指南




  单击界面右下角的 Generate 按钮,在 Output 框将产生界面的 XML 语言描述,您也可以
修改 XML 中按钮名称等描述信息.

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


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



2-3-3       ForlinxLedTest 软件编码实现

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


  注意:我们发布的 Android 中包含了 Led 测试程序的源码,位于 Android 源码包
  Stable-Android2.3/packages/apps/ForlinxLED/ 目录下面, 在编译 Android 时将自动
编译该测试程序,烧写 Android 时会安装到开发板上。该测试程序主要用来学习使用,您可以
自由修改.
                          -27-


                                               www.witech.com.cn   2011.7.31
回目录
TE/OK6410                             Android 应用程序开发指南




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




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




                         -28-


                                        www.witech.com.cn   2011.7.31
回目录
  TE/OK6410                              Android 应用程序开发指南




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




编写 Java 代码




                           -29-


                                          www.witech.com.cn   2011.7.31
回目录
TE/OK6410                        Android 应用程序开发指南




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

上面我们看到的 LedTest.java 文件的代码是系统自动生成的,目前还不能实现我们需要的功
能,需要修改这个文件,增加 Java 代码,如下图:




                   -30-


                                  www.witech.com.cn   2011.7.31
回目录
 TE/OK6410                                         Android 应用程序开发指南




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

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

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


修改字符串资源

   开发 Android 应用程序时可以定义字符串资源,在界面的 XML 定义文件中使用该字符串资
 源,字符串资源默认文件名为 string.xml, 该文件中定义了 Led 测试程序的名字,飞凌发布
 的 Demo 名字为 ForlinxLEDTest,您可以修改成自己喜欢的名字,这样在开发板程序列表中
 就可以看到您定义的软件的名字了。

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



                               -31-


                                                      www.witech.com.cn   2011.7.31
回目录
 TE/OK6410                                          Android 应用程序开发指南




 string.xml 文件路径:


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




设计界面文件


    在前边的章节中我们已经知道 Andrid 应用软件的界面设计需要编写 XML 文件,我们使用
 了 droiddraw 软件拖放控件来实现所见即所得的效果,并且保存了 main.xml 文件。



   现在我们该使用 main.xml 文件了,使用 gedit 打开 droiddraw 制作的 main.xml 文 件 ,
 拷贝里面的内容到 ForlinxLEDTest 中 main.xml 文件中,保存,如下图:




                               -32-


                                                      www.witech.com.cn   2011.7.31
回目录
  TE/OK6410                                          Android 应用程序开发指南




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


编写 AndroidManifest.xml 文件


    每个 Android 的 application 都必须包含一个 AndroidManifest.xml,且文件名是
  固定的,不能修改。应用程序需要通过它向 Android 系统提供一些必需的信息,且需要
  在 application 运行前提供给系统.

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




                                -33-


                                                          www.witech.com.cn   2011.7.31
回目录
 TE/OK6410                                     Android 应用程序开发指南




   AndroidManifest.xml 文件位于:
   Stable-Android2.3/packages/apps/ForlinxLED/ 目录下面


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

   注意:

  确认您使用的 Android SDK 从我们提供的 Android 源码包中编译出来的,也就是执
 行了 make sdk 命令产生的 SDK,因为我们在 Android 原有 SDK 的基础上增加了我们自己
 的接口,如果不使用我们的 SDK,您的 ForlinxLEDTest 无法在模拟器中运行。




在模拟器中运行

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

  Eclipse 菜单中:
                            -34-


                                                 www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                        Android 应用程序开发指南




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

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




 单击 Edit AVD 设置完成。.




                                -35-


                                                  www.witech.com.cn   2011.7.31
回目录
TE/OK6410                        Android 应用程序开发指南




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




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




                   -36-


                                  www.witech.com.cn   2011.7.31
回目录
TE/OK6410                      Android 应用程序开发指南




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




                        -37-


                                www.witech.com.cn   2011.7.31
回目录
 TE/OK6410                            Android 应用程序开发指南




   界面显示效果,如图所示,由于软件是测试 Demo,对界面没有进行优化,您在开发产品中
 可以编写 main.xml 文件或者使用 droiddraw 工具美化界面。

   单击运行界面上的按钮,没有任何反应,这是因为我们只完成了界面程序的设计。该进程 会
 调用另外一个进程的对象,这样才能实现 Led 的控制。




与 Android 源码一起编译

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




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

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



                       -38-


                                          www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                         Android 应用程序开发指南




 .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"

                             -39-


                                                    www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                         Android 应用程序开发指南



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

      注意 : package 属性值不能为 com.led,
                          com.led,这里设置成 com.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 ” 设置环
境变量, 然后编译即可,编译方法如下图所示:




                              -40-


                                                      www.witech.com.cn   2011.7.31
回目录
TE/OK6410          Android 应用程序开发指南




  回车后:




            -41-


                    www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                        Android 应用程序开发指南




  编译通过后会在 Android 源代码目录中的 out/target/product/OK6410/system/app 目
录下形成 MyLedTest.apk

 把该软件包安装到开发板上,这里使用 SD 卡拷贝的方法,把 MyLedTest.apk 拷贝到 SD 卡
中,SD 卡插入到开发板中,在超级终端里面执行:


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

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




                              -42-


                                                  www.witech.com.cn   2011.7.31
回目录
TE/OK6410                           Android 应用程序开发指南




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



2-4     LedClient 的实现过程

  LedClient 是与 ForlinxLedTest 例子不同的另外一种编程思想,该软件相对比较简单,没
有涉及到进程通信,而是直接调用系统提供的 API 来实现底层硬件的控制.



2-4-1       LedClient 软件实现 Led 控制的系统调用图:
                                       :




                     -43-


                                      www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                               Android 应用程序开发指南




 A pplication                          c o m.fo rlin x .LedC lient
                                            LedC lient .a p k




  F ramew ork                                   fo rlin x _l e d.ja r
                                            s y s te m /framew ork /




     JN I                                  lib fo rlin x _ru n tim e .s o
                                                   /s y s te m /l i b /




     HAL                                         l e d.default .s o
                                               /s y s te m /l i b /h w/




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




2-4-2          LedClient 软件实现


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


                                                           www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                           Android 应用程序开发指南



有进程间对象调用,而是直接调用 Android 系统 API 来操作 Led,相比 ForlinxLEDTest 简单
了很多,LedClient 的源代码位于


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


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


我们提供 LedClient 例子,是因为您编写应用程序时也可以采用这种简单的系统调用方式,而
不一定按照进程间对象调用的方法,进程间对象调用是为了更好的解释 Android 系统架构,以
加深您的 Android 系统的理解。


编译 Android 系统时会自动编译 Forlinx_LedClient,        编译好的 LedClient.apk
包位于开发板的 /system/app/目录下面.


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




运行后:




                              -45-


                                                     www.witech.com.cn   2011.7.31
回目录
TE/OK6410                         Android 应用程序开发指南




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


注意:


我们演示使用的是 OK6410 开发板,FL6410 开发板的运行效果与 OK6410 开发板相同.
这两个开发板硬件部分均是低电平灯亮,高电平灯灭.


如果您的板子上灯没有亮,很可能是你的板子 GPIO 高电平灯亮,低电平灯灭,根据您的需求,
修改驱动,或者应用层文件即可。




                    -46-


                                    www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                     Android 应用程序开发指南




第三章 Android 应用程序的调试


3-1 ADB 与 ddms 简介

  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 Monitor
Service,它可以为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、
广播状态信息、模拟电话呼叫、接收 SMS、虚拟地理坐标等等。

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



3-2 ADB 调试环境搭建
 在 Ubuntu 的 /etc/udev/rules.d/下创建一个配置文件 : 51-android.rules
gedit   /etc/udev/rules.d/50-android.rules

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


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

如图:




                               -47-


                                                www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                         Android 应用程序开发指南




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


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

下面我们说一下 SYSFS 参数:


SYSFS{"idVendor"}="xxx"

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




                               -48-


                                                   www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                Android 应用程序开发指南




  我们 看到 红色部 分, ID 18d1:4e12 其中 18d1 是该 设备 的生产 商 ID 也就 是 Vendor
ID,4e12 是该设备的产品 ID,即 Product ID,,刚才我们做的工作就是把 VendorID 信息写入
ADB 驱动配置文件中., 使 ADB 功能可用.


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




                        -49-


                                            www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                        Android 应用程序开发指南




  在使用 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-3 调试 ForlinxLEDTest

  下面,我们以 ForlinxLEDTest 为例,来调试界面应用程序,我们讲解的主要目录是帮助用 户
建立应用程序开发调试的概念,熟悉 Ecplise 开发环境,使用 ADB,DDMS 调试工具,应用程
序的代码分析我们这里不参与讲解。



                             -50-


                                                   www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                           Android 应用程序开发指南




3-3-1       修改 AndroidManifest.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 运行在一
个进程中,这样可以共享数据.

修改完成后如下图:




                             -51-


                                                     www.witech.com.cn   2011.7.31
回目录
TE/OK6410                          Android 应用程序开发指南




3-3-2       调试应用程序

 在 Eclipse 集成开发环境中 打开 LedTest.java 文件,在需要加断点的地方,用鼠标在该标
签页的最左边双击即可完成断点的添加,如图:




                     -52-


                                     www.witech.com.cn   2011.7.31
回目录
TE/OK6410                               Android 应用程序开发指南




注意:把开发板加电,Android 启动完成后,再把 USB 线一端接开发板的 OTG 接口,一端接
PC 机 USB 接口,这样在 Ubuntu 终端 shell 中执行 adb devices 即可看到系统识别了 USB
设备.


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

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




                        -53-


                                          www.witech.com.cn   2011.7.31
回目录
TE/OK6410                      Android 应用程序开发指南




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




                  -54-


                                www.witech.com.cn   2011.7.31
回目录
TE/OK6410                        Android 应用程序开发指南




  这时开发板上会运行您的 MyLedTest 应用程序,单击 Led 控制界面的某个按钮,将运行到
断点状态,如下图:




                   -55-


                                  www.witech.com.cn   2011.7.31
回目录
TE/OK6410                              Android 应用程序开发指南




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

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




3-3-3       DDMS 功能介绍


 使用 DDMS 功能可以方便的查看 Android 设备信息,如设备上正在运行的进程,设备里面的
文件信息浏览,还可以远程观看设备的界面显示,抓屏图片保存成文件等功能。

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




                        -56-


                                         www.witech.com.cn   2011.7.31
回目录
TE/OK6410                        Android 应用程序开发指南




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




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




                    -57-


                                   www.witech.com.cn   2011.7.31
回目录
TE/OK6410                        Android 应用程序开发指南




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



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




                   -58-


                                  www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                Android 应用程序开发指南




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

   ADB 和 DDMS 是开发应用程序,学习 Android 系统必不可少的工具,另外我们
只讲述了它们的最基本功能,您可以深入的学习,研究,做一名资深的 Android 研发人员。




                        -59-


                                           www.witech.com.cn   2011.7.31
回目录
TE/OK6410          Android 应用程序开发指南




            -60-


                    www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                         Android 应用程序开发指南




第四章 WINDOWS 下 ADB 调试环境的搭建

4-1 java JDK 下载与安装
进入该网页:

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




安装JDK,一步步默认就可以,如果是默认的路径会安装在 C:Program FilesJava下。在这个
文件夹下有两个文件夹jdk1.6.0_10和jre6。


4-2 eclipse 下载
 进入该网页: http://www.eclipse.org/downloads/
我们选择第一个(即eclipse IDE for java EE Developers)




                             -61-


                                                    www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                     Android 应用程序开发指南



解压到 C:Program FilesJavajre6的目录下,双击 eclipse目录下 eclipse.exe就可以打开
eclipse了。


ADT的安装

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




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


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

                                  -62-


                                                www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                       Android 应用程序开发指南




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




根据你的需要选择安装包。          在这里一定要选择上 Google USB driver packages,这个包连接我
们开发板的 USB 驱动。
下 载 完 成 后 会 在 Installed packages 下 面 有 你 下 载 好 的 sdk 包 。 在 android-sdk-
windowsplatform-tools 目录下有我们用的 adb 工具,所以我们要把这个路径加入到 PATH
环境变量中去,我的电脑-》属性-》高级选项卡,选择环境变量,在系统变量中找到 PATH 编
辑,把 ADB 所在路径加入进去,
注意:  要与前边的环境变量用分号隔开。          笔者的路径为 C:Program FilesJavaandroid-sdk-
windowsplatform-tools,把这个路径加入到 PATH 这个环境变量中。重新启动电脑,这样我
们就可以在命令行下直接使用 ADB 命令了。


                            -63-


                                                  www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                   Android 应用程序开发指南




因为 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 所在位置。




                          -64-


                                              www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                    Android 应用程序开发指南




Apply->OK

4-4 安装 usb 驱动
将装有Android开发板的USB OTG与电脑相连,由于官方给出的USB驱动不能直接安装,我们
需 要 将 其 中 的 配 置 文 件 做 一 些 改 动 。 在 我 们 的 SDK 目 录 下 android-sdk-
windowsextrasgoogle有个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



                           -65-


                                               www.witech.com.cn   2011.7.31
回目录
TE/OK6410                         Android 应用程序开发指南




OK6410 开发板的设备 VID 为 18d1,PID 为 4e12,这两个参数在设备详细信息里
边可以找到,   VID 是设备厂商号,  PID 为设备号。  我的电脑右键->管理->设备管理器 ,
在其它设备中有一个 OK6410,右键->属性->详细信息中可以看到我们要看到 VID
和 PID。




                    -66-


                                   www.witech.com.cn   2011.7.31
回目录
TE/OK6410                     Android 应用程序开发指南




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




                  -67-


                                www.witech.com.cn   2011.7.31
回目录
TE/OK6410                         Android 应用程序开发指南




 浏览选择 USB 驱动所在目录,点“下一步”就可以完成 USB 驱动的安装了。
打开电源,在开始->运行中输入 cmd 回车,在命令行下输入 adb devices 就可以看到我们的设
备了。




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


                    -68-


                                    www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                      Android 应用程序开发指南




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




4-5 HelloForlinx 小程序
打开 eclipse,File->new->Android Project,如下图所示:




                          -69-


                                                www.witech.com.cn   2011.7.31
回目录
TE/OK6410          Android 应用程序开发指南




Finish

            -70-


                    www.witech.com.cn   2011.7.31
回目录
TE/OK6410                                        Android 应用程序开发指南




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




                             -71-


                                                   www.witech.com.cn   2011.7.31
回目录
TE/OK6410               Android 应用程序开发指南




然后 run 就可以运行了。




                 -72-


                         www.witech.com.cn   2011.7.31
回目录
TE/OK6410              Android 应用程序开发指南




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




                -73-


                        www.witech.com.cn   2011.7.31

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

  • 1.
    回目录 TE/OK6410 Android 应用程序开发指南 TE/OK6410 Android 应用程序开发指南 飞凌嵌入式 让嵌入式开发融入移动互联时代 -1- www.witech.com.cn 2011.7.31
  • 2.
    回目录 TE/OK6410 Android 应用程序开发指南 目 录 第一章 ANDROID 系统应用环境搭建... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ............... 3 1-1 UBUNTU10.10 上编译 ANDROID 源码..............................................................................................3 1-1-1 编译 Android2.3 形成文件系统.............................................................................................. 3 1-1-2 编译 Android2.3 形成 SDK 开发包.........................................................................................6 1-2 安装开发工具,设置开发环境.......................................................................................................9 1-2-1 安装 Eclipse............................................................................................................................. 9 1-2-2 安装 ADT................................................................................................................................10 1-2-3 设置开发环境........................................................................................................................ 11 1-2-4 运行 Android 模拟器............................................................................................................. 12 第二章 开发 ANDROID 应用程序 .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ... 16 2-1 ANDROID 应用程序开发框架........................................................................................................ 16 2-2 LED 测试程序框架分析................................................................................................................. 18 2-3 FORLINX LED TEST 实现过程....................................................................................................... 19 2-3-1 ForlinxLedTest 软件实现 Led 控制的系统调用图............................................................... 19 2-3-2 安装 droiddraw 软件 进行界面设计................................................................................... 23 2-3-3 ForlinxLedTest 软件编码实现............................................................................................... 27 2-4 LED CLIENT 的实现过程................................................................................................................. 43 2-4-1 LedClient 软件实现 Led 控制的系统调用图:...................................................................... 43 2-4-2 LedClient 软件实现.............................................................................................................. 44 第三章 ANDROID 应用程序的调试.... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... 47 3-1 ADB 与 DDMS 简介........................................................................................................................ 47 3-2 ADB 调试环境搭建....................................................................................................................... 47 3-3 调试 FORLINX LEDTEST ................................................................................................................. 50 3-3-1 修改 AndroidManifest.xml 文件............................................................................................ 51 3-3-2 调试应用程序........................................................................................................................ 52 3-3-3 DDMS 功能介绍.................................................................................................................... 56 第四章 WINDOWS 下 ADB 调试环境的搭建... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... .... ............. 61 4-1 JAVA JDK 下载与安装.................................................................................................................... 61 4-2 ECLIPSE 下载................................................................................................................................... 61 4-3 下载 ANDROID SDK....................................................................................................................... 63 4-4 安装 USB 驱动.................................................................................................................................66 4-5 HELLO FORLINX 小程序.................................................................................................................. 70 -2- www.witech.com.cn 2011.7.31
  • 3.
    回目录 TE/OK6410 Android 应用程序开发指南 第一章 Android 系统应用环境搭建 1-1 Ubuntu10.10 上编译 Android 源码 飞凌嵌入式公司的 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-1 编译 Android2.3 形成文件系统 我们建议您在真机 Ubuntu 系统中进行 Android 开发,如果您在虚拟中编译 Android2.3 速度相对慢一些。 笔 者 的 Android 源 代 码 文 件 夹 名 为 : Stable-Android2.3 , 存 放 路 径 : /home/monkey/Forlinx/,如下图: -3- www.witech.com.cn 2011.7.31
  • 4.
    回目录 TE/OK6410 Android 应用程序开发指南 编译 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 源码。 如图: -4- www.witech.com.cn 2011.7.31
  • 5.
    回目录 TE/OK6410 Android 应用程序开发指南 每个人的开发环境存在差异,以上的库文件只是参考,如果你在编译过程中出现了问题,说明还需要 安装必要的库,这时根据错误提示信息,Google 一下即可解决。再次感谢 Google,有了它生活就 是不一样. 笔者的机器编译了大约 1 个小时的时间,编译完成后在超级终端里面执行命令: ./make-rootfs 即可形成文件系统 android-fs.tar。 该文件用于一键烧写,是 Android 系统中的文件系统部分,您可以用您刚才制作的这个文件替 换掉开发板配套光盘中提供的同名文件,该文件与飞凌官方提供的文件是相同的,里面含有我们下一 节将要讲述的 Led 测试程序。 一键烧写的详细介绍,请参考飞凌的 Android 用户手册,这里不再详细描述了.一键烧写完成后, 启动开发板,进入 Android 的应用程序列表,如下图所示: -5- www.witech.com.cn 2011.7.31
  • 6.
    回目录 TE/OK6410 Android 应用程序开发指南 里面的 ForlinxLedTest.apk 和 com. forlinx.LedClient.LedClient.apk 两个应用程序是 我们下面章节重点讲述的 Demo 程序,我们将详细的讲述 Led 测试程序的开发环境搭建,开发 过程,及 Android 应用程序的开发框架。 1-1-2 编译 Android2.3 形成 SDK 开发包 Android 源码编译通过后,下一步我们就要编译 Android2.3 的 SDK 了,有了 SDK 我们 才能进行应用程序的开发,SDK 中封装了 Android 对外提供的调用接口,用户应用程序通过调 用 SDK 中的功能函数或者类库来实现业务上的需求。 在 Ubuntu 终端窗口中执行命令: . setenv 注意: setenv 前面有一个点,这句话的意思是吧 setenv 脚本里面的语句 include 到当前 shell 终端中. 执行 make sdk 命令开始编译,SDK 开发包如下图: -6- www.witech.com.cn 2011.7.31
  • 7.
    回目录 TE/OK6410 Android 应用程序开发指南 笔 者 的 机 器 编 译 SDK 用 了 30 分 钟 左 右 的 时 间 , 编 译 完 成 后 会 在 Stable- Android2.3/out/host/linux-x86/形成 SDK 目录 ,里面含 有我们需 要的文件 夹 android- sdk_eng.root_linux-x86 ,如下图 -7- www.witech.com.cn 2011.7.31
  • 8.
    回目录 TE/OK6410 Android 应用程序开发指南 我们把这个文件夹拷贝到/home/monkey/AndroidSDK-and-Tools 目录下面如图: -8- www.witech.com.cn 2011.7.31
  • 9.
    回目录 TE/OK6410 Android 应用程序开发指南 这样 Android SDK 准备完成. 1-2 安装开发工具,设置开发环境 Android2.3 SDK 在 Ubuntu10.10 编译成功后,下一步就是开发 Android 的应用程序 了,下面说明一下在 Ubuntu10.10 上开发 Android 应用需要安装的工具。 1-2-1 安装 Eclipse Android 推荐的 IDE(集成开发环境) 为 Eclipse,访问以下地址下载 : http://www.eclipse.org/downloads/ 由于笔者使用的是 64 位的 Ubuntu 系统,所以需要安装 Eclipse 64 位版本。 把下载的 Eclipse 放到了 /home/monkey/AndroidSDK-and-Tools 目录下面,与 Android SDK 处于并列目录。 -9- www.witech.com.cn 2011.7.31
  • 10.
    回目录 TE/OK6410 Android 应用程序开发指南 使用 tar zxvf eclipse-java-helios-SR2-linux-gtk-x86_64.tar.gz 命令解压,形成 eclipse 文件夹,如下图所示: 进入该文件夹双击 eclipse 文件,即可运行 eclipse. 1-2-2 安装 ADT 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 -10- www.witech.com.cn 2011.7.31
  • 11.
    回目录 TE/OK6410 Android 应用程序开发指南 unzip ../ADT-10.0.1.zip 这样就完成了 ADT 插件的安装. 如果您无法下载 ADT 插件,可以使用我们光盘资料中的 ADT,或者从我们官方下载服务里 面下载 ADT 插件. 1-2-3 设置开发环境 运行 eclipse,提示您选择工作空间,这里选择/home/monkey/AndroidApp 文件夹作为 为我的工作空间,选择工作空间是为了存放工程,一个工作空间里面可以有多个工程存在。 选择完成工作空间后 , 出现欢迎界面,选择 Windows 菜单中的 preference 项,弹出窗体, 然后单击 Brower 按钮,选择您编译的 SDK 文件夹,然后单击 Apply 按钮,如图: 单击 OK 键确定,这样 SDK 在 eclipse 中设置完成。 -11- www.witech.com.cn 2011.7.31
  • 12.
    回目录 TE/OK6410 Android 应用程序开发指南 在 Widows 菜单里面,选择 Android SDK and AVD Manage 弹出框,选择 installed pages,出现下图所示即可: 如果出现这样的界面说明您的 SDK 安装成功了. 1-2-4 运行 Android 模拟器 运行 Android 模拟器之前, 需要创建 AVD,AVD(Android Virtual Device)就是 Android 虚拟设备,同样在 Widows 菜单里面,选择 Android SDK and AVD Manage,弹出框,选择 第一项 Vritual device 然后 new 选择,创建 AVD,我设置的 SD 卡是 512M,其他的默认即 可,创建成功后,如下图: -12- www.witech.com.cn 2011.7.31
  • 13.
    回目录 TE/OK6410 Android 应用程序开发指南 单击 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 秒的时间,成功运行后如图: -13- www.witech.com.cn 2011.7.31
  • 14.
    回目录 TE/OK6410 Android 应用程序开发指南 自此,Android 的应用程序开发环境搭建完成,可以开发应用程序了,下面以开发板上的 Led 测试程序为例来讲解 Android 应用程序开发的基本步骤。 -14- www.witech.com.cn 2011.7.31
  • 15.
    回目录 TE/OK6410 Android 应用程序开发指南 -15- www.witech.com.cn 2011.7.31
  • 16.
    回目录 TE/OK6410 Android 应用程序开发指南 第二章 开发 Android 应用程序 2-1 Android 应用程序开发框架 在进行 Android 应用程序开发之前,我们先认识一下 Android 的框架,对框架有了一定的认 识后,才能更好的理解 Android 系统的工作方式。 首先我们先看一下 Google 发布的经典 Android 框架: 从上图可以看到:Android 的框架分四个层次 Applications (应用层): 用户开发的应用程序和系统自动的一些应用处于这一层,如 Browser 浏览器软件,Gallery 图 片查看器软件,music 音乐播放软件等等. 这一层的应用程序的开发主要采用 Java 语言,,飞凌提供的 Led 测试程序同样处于这一层中。 -16- www.witech.com.cn 2011.7.31
  • 17.
    回目录 TE/OK6410 Android 应用程序开发指南 Application Framework(框架层), 框架层属于 Android 系统的核心层,里面含有各种组件,如 ActivityManager,PackageManger 等等,该层对上层的应用层软件提供 SDK 调用接口,和系统管理服务,主要采用 Java 语言开发. Dalvik Virtual Machine,(达尔维虚拟机) : Dalvik 虚拟机是 Google 等厂商合作开发的 Android 移动设备平台的核心组成部分之一。 它可以支持. d e (即 Dalvik Executable) x 格式的 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 文件中 -17- www.witech.com.cn 2011.7.31
  • 18.
    回目录 TE/OK6410 Android 应用程序开发指南 2-2 Led 测试程序框架分析 我们提供的 Led 测试程序符合 Android 的系统框架,之所以我们重点讲述这个简单的 Led 应用是因为她不仅仅是个应用程序,更是 Android 系统的分层思想的体现,学习了 Led 相信您 对 Android 系统有一个新的深层次的认识。 如果您在发板上运行了 Android 系统, 相信您也看到了我们提供的 Led 测试程序,Forlinx Led Test 和 com.forlinx.LedClient.LedClient,如图: 这里有两个 Led 的测试程序,他们的实现方式是不一样的。 ForlinxLedTest 体现了 Android 特有的进程间对象调用, 进程之间对象的调用就像一个进程间 上层模块对下层模块调用那么简单,开发人员不必关心过多的细节,只需要了解必要的接口即 可。 com.forlinx.LedClient.LedClient 是传统的单进程应用,这个进程直接调用 Android 的 SDK, 来操作开发板上的硬件,以下我们简称 LedClient. 下面我们会详细分析两种方式的实现过程。 -18- www.witech.com.cn 2011.7.31
  • 19.
    回目录 TE/OK6410 Android 应用程序开发指南 2-3 Forlinx Led Test 实现过程 ForlinxLedTest 软件的实现是我们重点讲述的,他符合 Android 应用程序开发框架,有利 于您对 Android 系统的学习。 2-3-1 ForlinxLedTest 软件实现 Led 控制的系统调用图 -19- www.witech.com.cn 2011.7.31
  • 20.
    回目录 TE/OK6410 Android 应用程序开发指南 c o m.l e d ForlinxLedTest .a p k A pplication .LedSystemServer ForlinxLedTest .a p k F ramew ork fo rlin x _l e d .ja r framew ork .ja r s y s te m /framew ork / JN I libforlinx_runtim e .s o /s y s t e m /l i b/ HAL l e d.default .s o /s y s t e m /l i b/h w/ L in u x L in u x 含l e c驱 动,提 供/d e v/le d s设 备 节 点 -20- www.witech.com.cn 2011.7.31
  • 21.
    回目录 TE/OK6410 Android 应用程序开发指南 下面我们由下至上来说明每一层的功能: Linux 层: 由 linux 系统组成 为 Led 测试 Demo 提供驱动支持,产生设备节点 /dev/leds led 驱动代码位于 linux 内核目录 /driver/char/s3c6410_leds.c 中。 HAL 层: 硬件抽象层,该层主要操作 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 前缀. JNI 层: : 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 目录下面. -21- www.witech.com.cn 2011.7.31
  • 22.
    回目录 TE/OK6410 Android 应用程序开发指南 Framwork 层: 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/目录下面. Application 层: : 应用层位于 Android 系统架构的最高层,是给用户提供服务的最直接的程序,用户编写的 程序基本上位于这一层. 在本例中 Led 应用层有两个进程运行, 一个是 .LedSystemServer 进程,也可以称之为 服务进程,另外一个是 com.led 进程, 这两个进程合作来完成 Led 的控制, 他们由 Forlinx LED Test.apk 创建,我们来说明一下各自的分工。 .LedSystemServer 进程: .LedSystemServer 进程创建 LedService 对象,调用系统服务中的 API 函数来注册 LedService 服务,为进程间对象调用做准备。 com.led 进程: 用户操作界面,用户通过操作界面上的按钮来打开,关闭 Led。该进程的另外一个功能是从 系统服务列表中获取到 .LedSystemServer 进程注册的服务,也就是获取 到.LedSystemServer 进程中 LedService 对象提供的接口,com.led 进程调用这些接口,来 实现进程间对象调用,从而实现 Led 设备的控制。 -22- www.witech.com.cn 2011.7.31
  • 23.
    回目录 TE/OK6410 Android 应用程序开发指南 下面的章节重点讲述的就是 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-2 安装 droiddraw 软件 进行界面设计 在进行应用程序开发之前我们说一下 droiddraw 这个工具软件。 进行 Android 应用程序开发需要进行界面设计,我们在 Windows 上开发应用程序使用 过 VC++,VB 这样的集成开发环境,进行界面设计时一般就是拖放控件,比如把按钮控件,编辑 控控件拖放到窗口上,实现所见即所得的效果,但是进行 Android 应用程序开发进行界面设置 时需要编写 XML 文件,在该文件中定义 Android 程序的界面风格和控件大小,位置等,对于 不熟悉 XML 语言和对 Android 界面定义语法不是很清晰的开发者而言有点不太习惯,为此 droiddraw 工具诞生了。 droiddraw 是一个开源工具,用户可以使用该工具拖放控件设计 Android 应用程序界面, 然后保存成 XML 语言的文本文件,把该 XML 文件替换掉 Eclipse 工程的界面定义 XML 文件即 可,软件开发完成后,运行时的界面就是我们使用 droiddraw 这个开源工具制作的,是不是很 方便呢。 Droiddraw 下载地址: -23- www.witech.com.cn 2011.7.31
  • 24.
    回目录 TE/OK6410 Android 应用程序开发指南 http://code.google.com/p/droiddraw/downloads/detail?name=droiddraw- r1b18.tgz&can=2&q= 笔者使用 droiddraw-r1b18.tgz 版本,,解压后,在 cd 到解压后的文件夹,终端窗口里面执 行: ./droiddraw.sh 即可运行软件,第一次运行时会检测是否有新版本,如果有新的版本 会提示您下载. droiddraw 运行后如下图所示: -24- www.witech.com.cn 2011.7.31
  • 25.
    回目录 TE/OK6410 Android 应用程序开发指南 在进行界面设计之前,先说一下 Android 界面的布局类型: Andorid 的界面定义文件,在 工程目录下的 res/layout 的 xml 文件里面,一般情况下一个 xml 对应一个界面。做 android 的界面有点像写 html,要先给 android 定框架,然后在框架里面放控 件。 Android 界面布局类型: FrameLayout:里面只可以有一个控件,并且不能设计这个控件的位置,控件会放到左上角 LinearLayout:里面可以放多个控件,但是一行只能放一个控件 TableLayout:这个要和 TableRow 配合使用,很像 html 里面的 table AbsoluteLayout:里面可以放多个控件,并且可以自己定义控件的 x,y 的位置 RelativeLayout:里面可以放多个控件,不过控件的位置都是相对位置 (界面的布局好像还可以直接引用一些 view,如 ScrollView 等) 这里我们在 droiddraw 界面左上角的 Screen 项中 RootLayout 选项选择: AbsoluteLayout ScreenSize 选项选择: HVGA Landscape -25- www.witech.com.cn 2011.7.31
  • 26.
    回目录 TE/OK6410 Android 应用程序开发指南 如下图所示: 这是我们在开发板上运行时的界面布局。 拖动按钮控件到窗体上: -26- www.witech.com.cn 2011.7.31
  • 27.
    回目录 TE/OK6410 Android 应用程序开发指南 单击界面右下角的 Generate 按钮,在 Output 框将产生界面的 XML 语言描述,您也可以 修改 XML 中按钮名称等描述信息. 选择文件菜单里面的保存选项,保存 XML 界面定义,文件名为 main.xml. 这样界面设计完成,下面我们将会用到刚刚保存的 main.xml 文件,作为我们 ForlinxLed Test 软件的主界面。 2-3-3 ForlinxLedTest 软件编码实现 前面 的章节我 们已经讲 解了 android 应用 程序开发 环境的搭 建,下面 我们就来 创建 ForlinxLedTest 应用来演示 Android 应用软件的开发。 注意:我们发布的 Android 中包含了 Led 测试程序的源码,位于 Android 源码包 Stable-Android2.3/packages/apps/ForlinxLED/ 目录下面, 在编译 Android 时将自动 编译该测试程序,烧写 Android 时会安装到开发板上。该测试程序主要用来学习使用,您可以 自由修改. -27- www.witech.com.cn 2011.7.31
  • 28.
    回目录 TE/OK6410 Android 应用程序开发指南 运行 Eclipse,选择 /home/monkey/AndroidApp 目录作为工作空间,如图: 选择 File->New->Android 工程 如图: -28- www.witech.com.cn 2011.7.31
  • 29.
    回目录 TE/OK6410 Android 应用程序开发指南 点击 Finish 按钮,完成 ForlinxLEDTest 的框架搭建. 编写 Java 代码 -29- www.witech.com.cn 2011.7.31
  • 30.
    回目录 TE/OK6410 Android 应用程序开发指南 LedTest.java 文件是我们主要编写的代码文件,主要功能 : 完成用户界面的创建,响应用户操 作请求. 上面我们看到的 LedTest.java 文件的代码是系统自动生成的,目前还不能实现我们需要的功 能,需要修改这个文件,增加 Java 代码,如下图: -30- www.witech.com.cn 2011.7.31
  • 31.
    回目录 TE/OK6410 Android 应用程序开发指南 详细的代码这里就不描述了,您可以查看我们提供的 Led 测试程序的源代码 源代码 LedTest.java 文件路径: Stable-Android2.3/packages/apps/ForlinxLED/src/com/led/ 提示:您在 Eclipse 中编写 Java 代码时,可以在标签页上双击该标签,这个页面将最大化显示 。 再次双击将还原显示. 修改字符串资源 开发 Android 应用程序时可以定义字符串资源,在界面的 XML 定义文件中使用该字符串资 源,字符串资源默认文件名为 string.xml, 该文件中定义了 Led 测试程序的名字,飞凌发布 的 Demo 名字为 ForlinxLEDTest,您可以修改成自己喜欢的名字,这样在开发板程序列表中 就可以看到您定义的软件的名字了。 我们的 string.xml 文件内容如图: -31- www.witech.com.cn 2011.7.31
  • 32.
    回目录 TE/OK6410 Android 应用程序开发指南 string.xml 文件路径: Stable-Android2.3/packages/apps/ForlinxLED/res/values/ 设计界面文件 在前边的章节中我们已经知道 Andrid 应用软件的界面设计需要编写 XML 文件,我们使用 了 droiddraw 软件拖放控件来实现所见即所得的效果,并且保存了 main.xml 文件。 现在我们该使用 main.xml 文件了,使用 gedit 打开 droiddraw 制作的 main.xml 文 件 , 拷贝里面的内容到 ForlinxLEDTest 中 main.xml 文件中,保存,如下图: -32- www.witech.com.cn 2011.7.31
  • 33.
    回目录 TE/OK6410 Android 应用程序开发指南 main.xml 文件路径: Stable-Android2.3/packages/apps/ForlinxLED/res/layout 编写 AndroidManifest.xml 文件 每个 Android 的 application 都必须包含一个 AndroidManifest.xml,且文件名是 固定的,不能修改。应用程序需要通过它向 Android 系统提供一些必需的信息,且需要 在 application 运行前提供给系统. 我们提供的 AndroidManifest.xml 文件如下: -33- www.witech.com.cn 2011.7.31
  • 34.
    回目录 TE/OK6410 Android 应用程序开发指南 AndroidManifest.xml 文件位于: Stable-Android2.3/packages/apps/ForlinxLED/ 目录下面 这样 ForlinxLEDTest 工程完成,可以在模拟器看一下软件运行以后,界面的显示效 果: 注意: 确认您使用的 Android SDK 从我们提供的 Android 源码包中编译出来的,也就是执 行了 make sdk 命令产生的 SDK,因为我们在 Android 原有 SDK 的基础上增加了我们自己 的接口,如果不使用我们的 SDK,您的 ForlinxLEDTest 无法在模拟器中运行。 在模拟器中运行 运行之前我们先设置一下模拟器的显示参数: Eclipse 菜单中: -34- www.witech.com.cn 2011.7.31
  • 35.
    回目录 TE/OK6410 Android 应用程序开发指南 Windows -> AndroidSDK and AVD Manager 出现对话框, 选择我们前面章节创建的 Test 模拟器,然后单击右边的编辑按钮,在 Skin:中选择 HVGA,如下图所示: 单击 Edit AVD 设置完成。. -35- www.witech.com.cn 2011.7.31
  • 36.
    回目录 TE/OK6410 Android 应用程序开发指南 Eclipse 菜单中 Run-> Run As->Android Application 启动模拟器,启动时间与您的 PC 配置相关,启动后进入应用程序列表,即可看到我们刚才编 写的 ForlinxLEDTest 软件,如下图: 笔者的开发板采用 4.3 寸屏,横屏显示,这里是竖屏,可以使用 Ctrl+F11 键实现横竖屏切 换,我们切换到横屏显示,如图: -36- www.witech.com.cn 2011.7.31
  • 37.
    回目录 TE/OK6410 Android 应用程序开发指南 单击 ForlinxLED Test,运行测试程序: -37- www.witech.com.cn 2011.7.31
  • 38.
    回目录 TE/OK6410 Android 应用程序开发指南 界面显示效果,如图所示,由于软件是测试 Demo,对界面没有进行优化,您在开发产品中 可以编写 main.xml 文件或者使用 droiddraw 工具美化界面。 单击运行界面上的按钮,没有任何反应,这是因为我们只完成了界面程序的设计。该进程 会 调用另外一个进程的对象,这样才能实现 Led 的控制。 与 Android 源码一起编译 由于我们提供的 Led Demo 涉及到进程间对象调用, 而我们在模拟器中看只看到了 com.led 进程,没有我们需要的.LedSystemServer 服务,如下图所示: 注意: 使用 adb 功能可以进入到模拟器查看进程信息,adb 功能我们下一章节会讲解到, 我们需要启动.LedSystemServer 服务进程与 com.led 进行配合来完成工作. -38- www.witech.com.cn 2011.7.31
  • 39.
    回目录 TE/OK6410 Android 应用程序开发指南 .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" -39- www.witech.com.cn 2011.7.31
  • 40.
    回目录 TE/OK6410 Android 应用程序开发指南 android:sharedUserId="android.uid.system"> 注意 : package 属性值不能为 com.led, com.led,这里设置成 com.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 ” 设置环 境变量, 然后编译即可,编译方法如下图所示: -40- www.witech.com.cn 2011.7.31
  • 41.
    回目录 TE/OK6410 Android 应用程序开发指南 回车后: -41- www.witech.com.cn 2011.7.31
  • 42.
    回目录 TE/OK6410 Android 应用程序开发指南 编译通过后会在 Android 源代码目录中的 out/target/product/OK6410/system/app 目 录下形成 MyLedTest.apk 把该软件包安装到开发板上,这里使用 SD 卡拷贝的方法,把 MyLedTest.apk 拷贝到 SD 卡 中,SD 卡插入到开发板中,在超级终端里面执行: cp /sdcard/MyLedTest.apk /system/app -f 这时会在开发板应用程序列表中看到我们刚才安装的文件 : -42- www.witech.com.cn 2011.7.31
  • 43.
    回目录 TE/OK6410 Android 应用程序开发指南 运行它,将会看到您设计的图形界面, 点击按钮就可以控制 Led 了. 2-4 LedClient 的实现过程 LedClient 是与 ForlinxLedTest 例子不同的另外一种编程思想,该软件相对比较简单,没 有涉及到进程通信,而是直接调用系统提供的 API 来实现底层硬件的控制. 2-4-1 LedClient 软件实现 Led 控制的系统调用图: : -43- www.witech.com.cn 2011.7.31
  • 44.
    回目录 TE/OK6410 Android 应用程序开发指南 A pplication c o m.fo rlin x .LedC lient LedC lient .a p k F ramew ork fo rlin x _l e d.ja r s y s te m /framew ork / JN I lib fo rlin x _ru n tim e .s o /s y s te m /l i b / HAL l e d.default .s o /s y s te m /l i b /h w/ L in u x L in u x 含l e c驱 动,提 供/d e v/le d s设 备 节 点 2-4-2 LedClient 软件实现 从上面的系统调用图可以看到 LedClient 与 ForlinxLEDTest 不同之处在于 LedClient 没 -44- www.witech.com.cn 2011.7.31
  • 45.
    回目录 TE/OK6410 Android 应用程序开发指南 有进程间对象调用,而是直接调用 Android 系统 API 来操作 Led,相比 ForlinxLEDTest 简单 了很多,LedClient 的源代码位于 Stable-Android2.3/packages/apps/Forlinx_LedClient 目录下面 您可以进入到 Forlinx_LedClient 目录查看相应的文件,这里就不详细说明了. 我们提供 LedClient 例子,是因为您编写应用程序时也可以采用这种简单的系统调用方式,而 不一定按照进程间对象调用的方法,进程间对象调用是为了更好的解释 Android 系统架构,以 加深您的 Android 系统的理解。 编译 Android 系统时会自动编译 Forlinx_LedClient, 编译好的 LedClient.apk 包位于开发板的 /system/app/目录下面. 进入应用程序列表,我们会看到该软件: 运行后: -45- www.witech.com.cn 2011.7.31
  • 46.
    回目录 TE/OK6410 Android 应用程序开发指南 运行后会自动打开开发板上的四个 Led 灯。 注意: 我们演示使用的是 OK6410 开发板,FL6410 开发板的运行效果与 OK6410 开发板相同. 这两个开发板硬件部分均是低电平灯亮,高电平灯灭. 如果您的板子上灯没有亮,很可能是你的板子 GPIO 高电平灯亮,低电平灯灭,根据您的需求, 修改驱动,或者应用层文件即可。 -46- www.witech.com.cn 2011.7.31
  • 47.
    回目录 TE/OK6410 Android 应用程序开发指南 第三章 Android 应用程序的调试 3-1 ADB 与 ddms 简介 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 Monitor Service,它可以为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、 广播状态信息、模拟电话呼叫、接收 SMS、虚拟地理坐标等等。 ADB 和 DDMS 均可以调试 Android 实体设备,也可以调试 Android 模拟器. 3-2 ADB 调试环境搭建 在 Ubuntu 的 /etc/udev/rules.d/下创建一个配置文件 : 51-android.rules gedit /etc/udev/rules.d/50-android.rules 文件里添加如下配置参数: SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1",MODE="0666" 如图: -47- www.witech.com.cn 2011.7.31
  • 48.
    回目录 TE/OK6410 Android 应用程序开发指南 保存,给配置文件设置读写权限, ADB 驱动配置功能即可完成. chmod a+rx /etc/udev/rules.d/50-android.rules 下面我们说一下 SYSFS 参数: SYSFS{"idVendor"}="xxx" Linux ADB 驱动配置文件里的 SYSFS 参数是指设备厂商的 ID 号,如何知道 USB 设备的 ID 号呢,在 Ubuntu 终端里面执行 lsusb 命令,如下图: -48- www.witech.com.cn 2011.7.31
  • 49.
    回目录 TE/OK6410 Android 应用程序开发指南 我们 看到 红色部 分, ID 18d1:4e12 其中 18d1 是该 设备 的生产 商 ID 也就 是 Vendor ID,4e12 是该设备的产品 ID,即 Product ID,,刚才我们做的工作就是把 VendorID 信息写入 ADB 驱动配置文件中., 使 ADB 功能可用. adb 工具位于 SDK 开发包 platform-tools 目录里面,如下图: -49- www.witech.com.cn 2011.7.31
  • 50.
    回目录 TE/OK6410 Android 应用程序开发指南 在使用 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-3 调试 ForlinxLEDTest 下面,我们以 ForlinxLEDTest 为例,来调试界面应用程序,我们讲解的主要目录是帮助用 户 建立应用程序开发调试的概念,熟悉 Ecplise 开发环境,使用 ADB,DDMS 调试工具,应用程 序的代码分析我们这里不参与讲解。 -50- www.witech.com.cn 2011.7.31
  • 51.
    回目录 TE/OK6410 Android 应用程序开发指南 3-3-1 修改 AndroidManifest.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 运行在一 个进程中,这样可以共享数据. 修改完成后如下图: -51- www.witech.com.cn 2011.7.31
  • 52.
    回目录 TE/OK6410 Android 应用程序开发指南 3-3-2 调试应用程序 在 Eclipse 集成开发环境中 打开 LedTest.java 文件,在需要加断点的地方,用鼠标在该标 签页的最左边双击即可完成断点的添加,如图: -52- www.witech.com.cn 2011.7.31
  • 53.
    回目录 TE/OK6410 Android 应用程序开发指南 注意:把开发板加电,Android 启动完成后,再把 USB 线一端接开发板的 OTG 接口,一端接 PC 机 USB 接口,这样在 Ubuntu 终端 shell 中执行 adb devices 即可看到系统识别了 USB 设备. 确认系统已经识别开发板设备后,继续以下的操作: 单击 Run->Run Configurations 项 选择 Target 标签里面的 Manual 项,然后单击 Apply 确定即可,如图: -53- www.witech.com.cn 2011.7.31
  • 54.
    回目录 TE/OK6410 Android 应用程序开发指南 选择 Run 菜单里面的 Debug 项,开始调试应用程序,运行时会出现以下的提示信息,确定后 继续。. -54- www.witech.com.cn 2011.7.31
  • 55.
    回目录 TE/OK6410 Android 应用程序开发指南 这时开发板上会运行您的 MyLedTest 应用程序,单击 Led 控制界面的某个按钮,将运行到 断点状态,如下图: -55- www.witech.com.cn 2011.7.31
  • 56.
    回目录 TE/OK6410 Android 应用程序开发指南 有了断点就可以方便查看变量的值,调用堆栈等重要信息了. Run 菜单里面是关于调试和运行的控制项,您可以选择里面的选项来控制软件的运行,如单步 运行,终止运行等等. 3-3-3 DDMS 功能介绍 使用 DDMS 功能可以方便的查看 Android 设备信息,如设备上正在运行的进程,设备里面的 文件信息浏览,还可以远程观看设备的界面显示,抓屏图片保存成文件等功能。 单击 Windows->Open Perspective->DDMS 即可出现 DDMS 窗口,如下图: -56- www.witech.com.cn 2011.7.31
  • 57.
    回目录 TE/OK6410 Android 应用程序开发指南 文件浏览页面可以查看 Android 设备的中的文件: 红色区域标注的 ”照相机” 按钮可以查看 Android 设备当前界面的显示: -57- www.witech.com.cn 2011.7.31
  • 58.
    回目录 TE/OK6410 Android 应用程序开发指南 Refresh 按钮刷新界面显示,Sava 按钮可以把界面显示保存成图片文件。 选择正在运行的进程后,使用停止按钮终止正在运行的进程,如图: -58- www.witech.com.cn 2011.7.31
  • 59.
    回目录 TE/OK6410 Android 应用程序开发指南 单击 Windows->Open Perspective->Java 项回到代码编辑状态 . ADB 和 DDMS 是开发应用程序,学习 Android 系统必不可少的工具,另外我们 只讲述了它们的最基本功能,您可以深入的学习,研究,做一名资深的 Android 研发人员。 -59- www.witech.com.cn 2011.7.31
  • 60.
    回目录 TE/OK6410 Android 应用程序开发指南 -60- www.witech.com.cn 2011.7.31
  • 61.
    回目录 TE/OK6410 Android 应用程序开发指南 第四章 WINDOWS 下 ADB 调试环境的搭建 4-1 java JDK 下载与安装 进入该网页: http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u26- download-400750.html如图: 安装JDK,一步步默认就可以,如果是默认的路径会安装在 C:Program FilesJava下。在这个 文件夹下有两个文件夹jdk1.6.0_10和jre6。 4-2 eclipse 下载 进入该网页: http://www.eclipse.org/downloads/ 我们选择第一个(即eclipse IDE for java EE Developers) -61- www.witech.com.cn 2011.7.31
  • 62.
    回目录 TE/OK6410 Android 应用程序开发指南 解压到 C:Program FilesJavajre6的目录下,双击 eclipse目录下 eclipse.exe就可以打开 eclipse了。 ADT的安装 打开 eclipse,Help->Install New Software->add,名字随意起, Location中为http://dl- ssl.google.com/android/eclipse/ 一直Next就可以完成安装,安装完ADT会在工具栏中有一个 。 4-3 下载 Android SDK 从 Google 官网下载 sdk,下载地址为 http://developer.android.com/sdk/index.html -62- www.witech.com.cn 2011.7.31
  • 63.
    回目录 TE/OK6410 Android 应用程序开发指南 下载 完 成 后得 到 一 压 缩 包 。 解压 到 某 一 目 录 , 如 C:Program FilesJavaandroid-sdk- windows ,下载下来的并不是真正的 SDK,准确的说是一个 SDK 下载安装器。打开 SDK Manager.exe,如果你的电脑不支持 https ,则必须到 settings 里把"Force https...http:" 这一项勾上。选择 Available packages,如下图所示 根据你的需要选择安装包。 在这里一定要选择上 Google USB driver packages,这个包连接我 们开发板的 USB 驱动。 下 载 完 成 后 会 在 Installed packages 下 面 有 你 下 载 好 的 sdk 包 。 在 android-sdk- windowsplatform-tools 目录下有我们用的 adb 工具,所以我们要把这个路径加入到 PATH 环境变量中去,我的电脑-》属性-》高级选项卡,选择环境变量,在系统变量中找到 PATH 编 辑,把 ADB 所在路径加入进去, 注意: 要与前边的环境变量用分号隔开。 笔者的路径为 C:Program FilesJavaandroid-sdk- windowsplatform-tools,把这个路径加入到 PATH 这个环境变量中。重新启动电脑,这样我 们就可以在命令行下直接使用 ADB 命令了。 -63- www.witech.com.cn 2011.7.31
  • 64.
    回目录 TE/OK6410 Android 应用程序开发指南 因为 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 所在位置。 -64- www.witech.com.cn 2011.7.31
  • 65.
    回目录 TE/OK6410 Android 应用程序开发指南 Apply->OK 4-4 安装 usb 驱动 将装有Android开发板的USB OTG与电脑相连,由于官方给出的USB驱动不能直接安装,我们 需 要 将 其 中 的 配 置 文 件 做 一 些 改 动 。 在 我 们 的 SDK 目 录 下 android-sdk- windowsextrasgoogle有个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 -65- www.witech.com.cn 2011.7.31
  • 66.
    回目录 TE/OK6410 Android 应用程序开发指南 OK6410 开发板的设备 VID 为 18d1,PID 为 4e12,这两个参数在设备详细信息里 边可以找到, VID 是设备厂商号, PID 为设备号。 我的电脑右键->管理->设备管理器 , 在其它设备中有一个 OK6410,右键->属性->详细信息中可以看到我们要看到 VID 和 PID。 -66- www.witech.com.cn 2011.7.31
  • 67.
    回目录 TE/OK6410 Android 应用程序开发指南 下面开始安装 USB 驱动,在 OK6410 右键->更新驱动程序 -67- www.witech.com.cn 2011.7.31
  • 68.
    回目录 TE/OK6410 Android 应用程序开发指南 浏览选择 USB 驱动所在目录,点“下一步”就可以完成 USB 驱动的安装了。 打开电源,在开始->运行中输入 cmd 回车,在命令行下输入 adb devices 就可以看到我们的设 备了。 这说明我们的 ADB 调试环境已经搭建好了。 -68- www.witech.com.cn 2011.7.31
  • 69.
    回目录 TE/OK6410 Android 应用程序开发指南 在终端输入 adb shell ,就可以进入 android 终端了。 4-5 HelloForlinx 小程序 打开 eclipse,File->new->Android Project,如下图所示: -69- www.witech.com.cn 2011.7.31
  • 70.
    回目录 TE/OK6410 Android 应用程序开发指南 Finish -70- www.witech.com.cn 2011.7.31
  • 71.
    回目录 TE/OK6410 Android 应用程序开发指南 在 Android Application 右键 new 一个 configuration,project 选择我们的 helloforlinx,在 Target 选项卡下 Deployment Target Selection Mode 选择 Manual -71- www.witech.com.cn 2011.7.31
  • 72.
    回目录 TE/OK6410 Android 应用程序开发指南 然后 run 就可以运行了。 -72- www.witech.com.cn 2011.7.31
  • 73.
    回目录 TE/OK6410 Android 应用程序开发指南 在屏幕上就能看到我们开发的小程序了。 -73- www.witech.com.cn 2011.7.31