《Android开发工具及其原理课件》由会员分享,可在线阅读,更多相关《Android开发工具及其原理课件(14页珍藏版)》请在金锄头文库上搜索。
1、Android 开发工具及原理,王洪浪 MSN:,讲义目录,Android Application 基本概念; Android SDK 介绍及安装; Android SDK 主要工具使用; 从Eclipse中使用Android SDK; 什么是Android NDK,为什么需要NDK? NDK提供的主要工具使用;,Android Application 基本概念;,Android APP 使用JAVA编写的,Android APP用SDK编译后将数据、资源和代码编译到一个Android程序包,一般以.apk作为结尾;,SDK 开发阶段,资源 (String,BMP,ICON,Audio),数据
2、,代码 (java class和C+ so),Manifest,Android APP (APK 包),APP 发布,Android Application 基本概念;,Android APP 一般由一个或者多个component 组成,Application可以包含如下类型的component,目前我们暂时先只关注最常用的Activity,Activity类似于Windows上的Windows,是进行显示和处理用户交互的对象类型,右图是Activity的生命周期迁移图示:,Android Application 基本概念;,Android Manifest是每个Android APK都会附带
3、的配置文件,是供系统获取APP信息的重要配置信息,一般地,在系统启动一个程序之前,需要从Manifest配置文件获得如下的信息: 标识程序运行需要的权限,比如联网,读取存储,读取联系人等; 标识运行时候需要的最小系统版本; 标识程序需要的硬件依赖,比如依赖Camare,BlueTooth,MultiTouch等等. 系统库依赖,比如依赖于Google Maps library. 其他,Android SDK 介绍及安装;,Android SDK无需安装,下载解压就可以使用,使用Android SDK可以有两种方法: Command line方式,直接在命令行使用SDK提供的工具创建工程,部署,
4、编译和调试工程; 通过Eclipse的ADT插件来使用,可以利用Eclipse来进行工程创建,部署,编译,调试。 通过Eclipse或者通过command line两种方式生成的Android工程略有不同,主要是有不同的工程配置文件,其他都是相同的,两种方式各有优缺点,Eclipse开发调试更直观方便,command line方式编译和部署可以方便的集成进脚本,可以更加方便的自动化。,Android SDK 主要工具使用;,使用Command line来进行开发; 首先使用 android 命令 来创建一个新的android工程,命令如下: android.bat create project
5、 -n androidtest1 -p ./androidproj -a Myactivity -t 5 -package com.navinfo.nds -n 指定工程名字为 androidtest1; -p 指定了工程路径; -a 制定了默认的activity名称(相当于windows下主窗口的名称) -t 制定了target id,target id对应了不同的google API level(android系统版本) -package 指定了代码Java 包名称,Android SDK 主要工具使用;,创建工程成功后,创建了如下的目录及文件结构:,/CYGWIN/HOME/WANGHL
6、/ANDROIDPROJ AndroidManifest.xml 工程配置Manifest文件 ant.properties ant编译配置文件 build.xml ant编译配置文件 local.properties 本地工程配置文件,不能上传至version control; proguard.cfg 工程配置文件 project.properties 工程配置文件 bin 生成的APP APK所在目录 libs 其他lib,此目录下的文件都被自动打包进APK res 资源子目录 layout 画面布局文件(类似于VS2005下的Dialog布局资源) main.xml values 字符
7、串资源表 strings.xml src Java源代码子目录 com navinfo nds Myactivity.java,Android SDK 主要工具使用;,创建工程完成后,开始使用Ant来编译工程,首先确保JAVA_HOME环境变量已经定义好,然后直接使用Ant Debug或者Ant Release来编译相应的版本; 按照之前我们创建的工程名为androidtest1的工程,切换当前目录到工程目录 运行ant debug后,在bin目录下生成对应的apk包文件; 对于调试和单步跟踪,在command line下是不能进行跟踪,一般地,利用eclipse adt插件,利用eclips
8、e中的java debugger进行调试; 在调试的时候,利用DDMS工具可以查看Android设备输出的log,进行截屏,控制系统进程,查看系统资源使用等功能; 使用adb工具可以安装,卸载APK,传输拷贝文件到设备上;,从Eclipse中使用Android SDK ;,在Eclipse中使用Android SDK比较简单,只需要在Eclipse上先在线或者本地安装ADT,在ADT中设置后SDK路径就可以开始使用,使用Eclipse创建一个Android工程后,可以看到如下的目录和文件结构;,./.classpath 相比于使用android工具创建的工程 ./.project .proje
9、ct .classpath是eclipse特有的工程文件; ./AndroidManifest.xml 与android工具生成的相同 ./assets 资源文件夹,与res一样,但不自动生成ID; ./bin 生成目标 ./gen 自动生成代码 ./proguard.cfg 与android工具生成的相同 ./project.properties 与android工具生成的相同 ./res 与android工具生成的相同 ./src 与android工具生成的相同,什么是Android NDK,为什么需要NDK ;,NDK 的目标: 在Android1.5或者更高版本上,生成可以供JNI调用
10、的ARM版本的so动态库; 将生成的so动态库拷贝到工程的libs目录,使得这些文件能够自动打包进最终的APK包; In later revisions of the NDK, we intend to provide tools that help debug your native code through a remote gdb connection and as much source/symbol information as possible; NDK提供了: 一个GCC交叉编译工具链(compilers, linkers, etc.) ,用来编译ARM CPU目标程序,支持Li
11、nux, OS X 和 Windows (with Cygwin); 一系列Android暴露的API 头文件及相应lib库文件,在后续系统版本中,这些接口头文件也将保持兼容; 一个Build 系统,使得用户可以通过比较少的配置来写一个Makefile文件来管理工程; NDK 不能做: NDK不适合编写程序整体框架,一般地,Android APP还是由Java编写,由NDK来开发一些性能关键点接口, 整个APP生命期管理,Events管理还是由JAVA来完成;,NDK主要工具 ;,NDK开发的目录结构: androidproject AndroidManifest.xml ant.proper
12、ties build.xml local.properties proguard.cfg project.properties bin libs jni Android.mk NDK工程配置文件 Application.mk NDK编译配置文件 res src,NDK主要工具 ;,一个Android.mk和Application.mk的例子: 更多请参照$NDK/Documentation.html Android.mk: PROJECT_COMMON_INCLUDE = # $(call my-dir)/././././release/navmgr $(call my-dir)/./././
13、./release/nicore $(CLEAR_VARS)TOP_LOCAL_PATH := $(call my-dir) #common library project include $(TOP_LOCAL_PATH)/cstl.mk include $(TOP_LOCAL_PATH)/com.mk,NDK主要工具 ;,com.mk: PROJECT_NAME := com LOCAL_PATH := $(call my-dir)/./././$(PROJECT_NAME)/src include $(CLEAR_VARS) LOCAL_MODULE := $(PROJECT_NAME)
14、 LOCAL_C_INCLUDES := $(PROJECT_COMMON_INCLUDE) $(LOCAL_PATH)/./inc $(LOCAL_PATH)/././cstl/inc LOCAL_CFLAGS := -DLINUX -DHAVE_USR_INCLUDE_MALLOC_H LOCAL_SRC_FILES := Com_Cache.c Com_DataRead.c Com_DataWrite.c Com_DetectSD.c Com_Event.c Com_File.c Com_Geometry.c Com_LangCode.c Com_Log.c Com_Memory.c Com_MsgQue.c Com_SHM.c Com_Thread.c Com_Time.c LOCAL_STATIC_LIBRARIES := cstl LOCAL_LDLIBS := -lm -llog include $(BUILD_SHARED_LIBRARY),