




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章Android工程结构3.1Project模式下的工程结构3.2app目录3.3res详解3.4AndroidManifest.xml详解3.5build.gradle详解本章总结
3.1Project模式下的工程结构
在新建的Android工程中,默认的工程结构为Android模式,但这并不是Android工程的真实结构。在左上角将其切换为Project模式,如图3.1所示,这才是Android工程的真实结构。
图3.1Project模式下的Android工程结构
在Android工程的目录结构中,可以看到有很多文件,下面对这些文件进行简单介绍。
1. .gradle
.gradle文件夹包含了gradle工具的各个版本。这个目录下放置的文件都是由AndroidStudio自动生成的,用户不要去手动编辑。
2. .idea
.idea文件夹包含了开发所需的各种环境。这个目录下的所有文件也是由AndroidStudio自动生成的,在没有极特殊的需求时不要手动编辑里面的文件。
3. app
app目录包含了工程的功能逻辑、布局、资源、清单文件等内容,开发工作基本上都是在该目录下完成的。
4. gradle
gradle目录包含了gradlewrapper的配置文件,使用gradlewrapper的方式不需要将gradle提前下载好,AndroidStudio会根据本地的缓存情况自行决定是否需要联网下载gradle。
5. .gitignore
该文件用来将指定的目录或文件排除在git提交的内容之外。配置git需要忽略的文件或文件夹,在.gitignore中配置的文件或文件夹不会随着git提交到指定的仓库。
6. build.gradle
该文件是项目全局的gradle构建脚本,里面指定了很多与项目构建相关的配置信息,通常情况下不需要修改文件中的内容。
7. perties
该文件是全局的gradle配置文件,用户可以在里面做一些gradle文件的全局性配置,也可以将比较私密的信息放在里面,防止泄露。在该文件中配置的属性会影响工程中所有的gradle编译脚本。
8. gradlew
该文件用于在Linux或Mac系统中的命令行界面执行gradle命令。
9. gradle.bat
该文件用于在Windows系统中的命令行界面执行gradle命令。
10. HelloWorld2.iml
AndroidStudio是基于IntelliJIDEA开发的一款编程工具,而.iml文件是所有IntelliJIDEA工程都会自动生成的一个文件,用于表示该工程是一个IntelliJIDEA工程。用户不需要修改该文件中的任何内容。
11. perties
该文件用于指定AndroidSDK和NDK所在的路径,内容是自动生成的,一般不需要修改。如果本机中的AndroidSDK或NDK位置发生了变化或者工程在新的设备上打开,那么将该文件中的路径换成新的路径即可。
12. settings.gradle
settings.gradle默认只执行当前目录下的build.gradle脚本,一般的工程中可能有多个模块依赖,但本工程中只有一个app模块,因此该文件中只引入了一个模块app,如果有其他模块依赖,则还需在文件中引入其他模块。该文件需要手动修改的场景比较少。
以上是对Android工程中整个外层目录的介绍。其实大部分文件都不需要开发者去手动修改。在Android开发中,开发者的工作重心主要在app目录下,3.2节会对app目录的内容进行重点讲解。
3.2app目录
点击app目录展开,如图3.2所示。下面介绍app目录下的具体内容。
图3.2app目录下的内容
1. build
该目录下包含了编译时自动生成的一些文件,用户无须关心里边的内容。
2. libs
在比较大型的Android工程中,除了使用AndroidSDK进行开发之外,很可能会使用第三方SDK来进行开发,一般的第三方SDK都是以jar包的形式存在的,要使用这些jar包就必须将其放置在libs目录下,重新同步gradle后即可使用。
3. androidTest
这里可以编写一些androidTest测试用例,对工程进行一些自动化测试。
4. java
整个Android工程的所有java代码都会放置在该目录下,功能逻辑的开发一般在此目录下完成。
5. res
Android工程中所有的资源、布局文件都要放置在该目录下,所有Android程序应用界面的开发都离不开该目录。
6. AndroidManifest.xml
该文件是整个Android工程的配置文件,如果工程中使用到了四大组件必须先在该文件中进行注册;此外Android应用程序中需要申请的权限也可以在该文件中添加。
7. test
该文件用来编写UnitTest测试用例。
8. .gitignore
该文件用来将app模块内指定的目录或文件排除在git提交之外,与外层的.gitignore文件作用类似。
9. app.iml
与外层的HelloWorld2.iml文件差不多,该文件也属于IntelliJIDEA工程自动生成的文件,开发者不必关心文件里的内容。
10. build.gradle
该文件为app模块的gradle构建文件,里面有很多与工程相关的配置,在添加一些依赖或其他操作的时候会对该文件中的内容进行修改。
11.
该文件用于指定工程中代码的混淆规则,在完成一项工程的开发后要对代码进行编译打包生成 .apk安装文件。如果开发者不希望安装包被别人破解,通常会对代码进行混淆处理,提高安全性,使其不易被破解。
3.3res详解
开发Android应用程序时,一般都会用到图片、字符串、布局文件等资源,这些资源都可以系统化地放置在res目录下的不同文件夹中。展开res目录,如图3.3所示。
图3.3res目录下的内容
从图3.3中可以看到,res目录下有很多以“mipmap”开头的文件夹,mipmap是用来放置启动器图标的,后面跟的“hdpi”“xhdpi”等表示的是不同的分辨率,是为了满足程序对不同分辨率设备的兼容性。
此外还可以手动创建目录。如建立的是menu目录,在menu目录下放置.xml文件可以为应用程序添加菜单;如建立raw目录,可以在其中放入任意文件,比如音频、图片等资源。
3.4AndroidManifest.xml详解
每个Android应用程序都有一个清单文件——AndroidManifest.xml,该文件在src/main目录下,程序中定义的四大组件都要在这个文件里注册,这些组件构成了整个应用程序。此外还可以在该文件中添加应用程序的权限声明。清单文件中的信息会配置到Android系统中,当程序运行时,系统会根据清单文件中的信息打开相应的组件。
<manifest>节点是清单文件的根节点,是整个应用程序的基本属性,其中必须指定xmlns:android和package属性,并且必须包含一个<application>节点,在该节点中声明应用程序的组件及属性(如title,icon,theme等)。同时它又表现为一个容器,容纳四大组件Activity、Service、ContentProvider、BroadcastReceiver的标签。
应用程序中显示的Activity都要在<manifest>中定义一个activity标签,通过android:name特性来指定类名,需要启动和交互的Activity必须在manifest中定义。尝试启动一个没有在manifest中定义的Activity会引发运行时的异常。intent-filter子标签用于指定启动哪些Activity,在本例中,MainActivity通过intent-filter被指定为主Activity,在启动应用程序后会自动打开MainActivity这个Activity。
此外,在清单文件中,uses-permission标签可以将应用程序中用到的权限添加进去,在Android6.0以前,安装程序之前必须获得所有权限。在Android6.0之后,引入了动态权限的概念,用户可以在程序运行时逐一授权,即便是有些权限没有授予,程序的其他功能的使用也不受影响。
3.5build.gradle详解
AndroidStudio是采用Gradle来构建工程的。Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种烦琐配置,用一种基于Groovy的内部领域特定(DSL)语言代替。一个新建的Android工程会有两个build.gradle文件,一个在外层目录中,另外一个在app模块下,两个文件缺一不可。
在dependencies闭包中使用classpath声明一个插件,即Gradle插件。声明Gradle插件是因为Gradle并不是专门用于Android工程构建的,Java、C++等项目都可以使用Gradle来构建。如果要使用Gradle来构建Android工程,就需要声明该插件,声明的方式为“com.android.tools.build:gradle:4.0.1”,最后的数字为版本号,一般就是AndroidStudio的版本号。最后声明了一个clean的task,它会在执行gradleclean时,删除根目录的build目录。
app模块的build.gradle文件会比外层目录的复杂一些。文件中首先用applyplugin声明了一个插件,一般有两种选择,“com.android.application”和“com.android.library”,前者表示的是应用程序模块,后者表示的是库模块,两者最大的区别在于一个可以直接运行,而另一个只能依附于应用程序运行。
最后还有个很重要的dependencies闭包,功能非常强大,可以指定当前工程的所有依赖关系。依赖关系一共有三种:本地依赖、库依赖和远程依赖,本地依赖可以在工程中加入第三方的jar包;库依赖可以对工程中的库模块添加依赖关系,远程依赖可以对jcenter
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025云南省建筑安全员-C证(专职安全员)考试题库
- 2025年海南健康管理职业技术学院单招职业技能测试题库及答案1套
- 施工车辆合同范本
- 2025吉林省建筑安全员《A证》考试题库及答案
- 第11课《核舟记》课前导学 统编版语文八年级下册
- 维修托管合同范本
- 2025年甘肃省临夏回族自治州单招职业适应性测试题库新版
- 2025年湖北省荆门市单招职业适应性测试题库完美版
- 2025年河北对外经贸职业学院单招职业倾向性测试题库一套
- 2025年甘肃建筑职业技术学院单招职业适应性测试题库参考答案
- 传统的中国纹样与饰品设计
- 工业园区消防培训课件
- 供水管网项目背景
- 浅层高效气浮池技术说明
- 小学大观念教学:设计与实施
- 《安全原理》习题库及参考答案
- 氮气能耗估算表
- 分离工程授课教案
- 《HSK标准教程3》第10课
- 人民医院能源托管服务项目可研技术方案书
- 系统上线验收合格证书
评论
0/150
提交评论