《开发工具及其原理.pptx》由会员分享,可在线阅读,更多相关《开发工具及其原理.pptx(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Android 开发工具及原理开发工具及原理王洪浪王洪浪讲义目录1.AndroidApplication基本概念;2.AndroidSDK介绍及安装;3.AndroidSDK主要工具使用;4.从Eclipse中使用AndroidSDK;5.什么是AndroidNDK,为什么需要NDK?6.NDK提供的主要工具使用;1.AndroidApplication基本概念;1.AndroidAPP使用JAVA编写的,AndroidAPP用SDK编译后将数据、资源和代码编译到一个Android程序包,一般以.apk作为结尾;SDK开发阶段资源(String,BMP,ICON,Audio)数据代码(java
2、class和C+so)ManifestAndroidAPP(APK包)APP发布1.AndroidApplication基本概念;2.AndroidAPP一般由一个或者多个component组成,Application可以包含如下类型的component,目前我们暂时先只关注最常用的Activity,Activity类似于Windows上的Windows,是进行显示和处理用户交互的对象类型,右图是Activity的生命周期迁移图示:1.AndroidApplication基本概念;3.AndroidManifest是每个AndroidAPK都会附带的配置文件,是供系统获取APP信息的重要配置信
3、息,一般地,在系统启动一个程序之前,需要从Manifest配置文件获得如下的信息:标识程序运行需要的权限,比如联网,读取存储,读取联系人等;标识运行时候需要的最小系统版本;标识程序需要的硬件依赖,比如依赖Camare,BlueTooth,MultiTouch等等.系统库依赖,比如依赖于GoogleMapslibrary.其他2.AndroidSDK介绍及安装;1.AndroidSDK无需安装,下载解压就可以使用,使用AndroidSDK可以有两种方法:1)Commandline方式,直接在命令行使用SDK提供的工具创建工程,部署,编译和调试工程;2)通过Eclipse的ADT插件来使用,可以利
4、用Eclipse来进行工程创建,部署,编译,调试。通过Eclipse或者通过commandline两种方式生成的Android工程略有不同,主要是有不同的工程配置文件,其他都是相同的,两种方式各有优缺点,Eclipse开发调试更直观方便,commandline方式编译和部署可以方便的集成进脚本,可以更加方便的自动化。3.AndroidSDK主要工具使用;1.使用Commandline来进行开发;首先使用 android命令 来创建一个新的android工程,命令如下:-n指定工程名字为 androidtest1;-p指定了工程路径;-a制定了默认的activity名称(相当于windows下主
5、窗口的名称)-t制定了targetid,targetid对应了不同的googleAPIlevel(android系统版本)-package指定了代码Java包名称3.AndroidSDK主要工具使用;创建工程成功后,创建了如下的目录及文件结构:/CYGWIN/HOME/WANGHL/ANDROIDPROJ AndroidManifest.xml 工程配置Manifest文件 ant.properties ant编译配置文件 build.xml ant编译配置文件 local.properties 本地工程配置文件,不能上传至version control;proguard.cfg 工程配置文件
6、 project.properties 工程配置文件 bin 生成的APP APK所在目录libs 其他lib,此目录下的文件都被自动打包进APKres 资源子目录 layout 画面布局文件(类似于VS2005下的Dialog布局资源)main.xml values 字符串资源表 strings.xml src Java源代码子目录 com navinfo nds Myactivity.java 3.AndroidSDK主要工具使用;3.创建工程完成后,开始使用Ant来编译工程,首先确保JAVA_HOME环境变量已经定义好,然后直接使用AntDebug或者AntRelease来编译相应的版本
7、;按照之前我们创建的工程名为androidtest1的工程,切换当前目录到工程目录运行antdebug后,在bin目录下生成对应的apk包文件;4.对于调试和单步跟踪,在commandline下是不能进行跟踪,一般地,利用eclipseadt插件,利用eclipse中的javadebugger进行调试;5.在调试的时候,利用DDMS工具可以查看Android设备输出的log,进行截屏,控制系统进程,查看系统资源使用等功能;6.使用adb工具可以安装,卸载APK,传输拷贝文件到设备上;4.从Eclipse中使用AndroidSDK;1.在Eclipse中使用AndroidSDK比较简单,只需要在
8、Eclipse上先在线或者本地安装ADT,在ADT中设置后SDK路径就可以开始使用,使用Eclipse创建一个Android工程后,可以看到如下的目录和文件结构;./.classpath相比于使用android工具创建的工程./.project.project.classpath是eclipse特有的工程文件;./AndroidManifest.xml与android工具生成的相同./assets资源文件夹,与res一样,但不自动生成ID;./bin生成目标./gen自动生成代码./proguard.cfg与android工具生成的相同./project.properties与android工
9、具生成的相同./res与android工具生成的相同./src与android工具生成的相同5.什么是AndroidNDK,为什么需要NDK;NDK的目标:1.在Android1.5或者更高版本上,生成可以供JNI调用的ARM版本的so动态库;2.将生成的so动态库拷贝到工程的libs目录,使得这些文件能够自动打包进最终的APK包;3.InlaterrevisionsoftheNDK,weintendtoprovidetoolsthathelpdebugyournativecodethrougharemotegdbconnectionandasmuchsource/symbolinformat
10、ionaspossible;NDK提供了:1.一个GCC交叉编译工具链(compilers,linkers,etc.),用来编译ARMCPU目标程序,支持Linux,OSX和Windows(withCygwin);2.一系列Android暴露的API头文件及相应lib库文件,在后续系统版本中,这些接口头文件也将保持兼容;3.一个Build系统,使得用户可以通过比较少的配置来写一个Makefile文件来管理工程;NDK不能做:1.NDK不适合编写程序整体框架,一般地,AndroidAPP还是由Java编写,由NDK来开发一些性能关键点接口,整个APP生命期管理,Events管理还是由JAVA来完
11、成;6.NDK主要工具;NDK开发的目录结构:androidproject AndroidManifest.xml ant.properties build.xml local.properties proguard.cfg project.properties binlibsjni Android.mk NDK工程配置文件 Application.mk NDK编译配置文件res src6.NDK主要工具;一个Android.mk和Application.mk的例子:更多请参照$NDK/Documentation.htmlAndroid.mk:PROJECT_COMMON_INCLUDE=#$
12、(call my-dir)/././././release/navmgr$(call my-dir)/././././release/nicore$(CLEAR_VARS)TOP_LOCAL_PATH:=$(call my-dir)#common library projectinclude$(TOP_LOCAL_PATH)/cstl.mk include$(TOP_LOCAL_PATH)/com.mk 6.NDK主要工具;com.mk:PROJECT_NAME:=comLOCAL_PATH:=$(call my-dir)/./././$(PROJECT_NAME)/srcinclude$(C
13、LEAR_VARS)LOCAL_MODULE:=$(PROJECT_NAME)LOCAL_C_INCLUDES:=$(PROJECT_COMMON_INCLUDE)$(LOCAL_PATH)/./inc$(LOCAL_PATH)/././cstl/incLOCAL_CFLAGS:=-DLINUX-DHAVE_USR_INCLUDE_MALLOC_HLOCAL_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.cLOCAL_STATIC_LIBRARIES:=cstlLOCAL_LDLIBS:=-lm-lloginclude$(BUILD_SHARED_LIBRARY)
限制150内