Android Studio项目结构,编译器,ProGuard
在本文中,我们将详细研究Android Studio项目结构和关键概念,然后详细介绍编译器。
当我们在Android Studio中启动新的Android项目时,它将自动为我们创建许多文件和文件夹。
让我们看看它们的功能和含义。
新项目会自动在Android项目视图中打开。
Android专案检视
Android项目视图在Gradle脚本下的项目层次结构的顶层显示所有构建文件。
每个项目模块在项目层次结构的顶层显示为一个文件夹,并在顶层包含以下三个元素:
java /:模块的源文件。
manifests /:模块的列表文件
res /:模块的资源文件
这是Android项目结构中重要文件/文件夹的简短描述:
Android列表文件
AndroidManifest.xml是Android项目结构中最重要的文件之一。
它包含软件包的信息,包括应用程序的组件,例如活动,服务,广播接收器,内容提供者等。
它执行以下任务:
- 它负责通过提供权限来保护应用程序访问任何受保护的部分
- 它还声明了应用程序将要使用的android api
- 它列出了检测类。
工具类提供概要分析和其他信息。
这些信息将在应用程序发布之前被删除等。
java
java文件夹包含组织成软件包的应用程序的Java源代码文件。
我们在Android应用程序中可以有多个软件包。
将应用程序的源代码根据其核心功能分为不同的软件包始终是一个好习惯。
活动,服务等的所有源文件都进入此文件夹。
资源
Res文件夹是用于存储应用程序所有外部资源的位置,例如图像,布局XML文件,字符串,动画,音频文件等。
子文件夹:
- Drawable:此文件夹包含要在程序中使用的位图文件。
有不同的文件夹来存储绘图。
它们是drawable-ldpi,drawable-mdpi,drawable-hdpi,drawable-xdpi等。
这些文件夹用于为特定屏幕配置提供替代图像资源。
Ldpi,mdpi和hdpi分别代表低密度,中密度和高密度屏幕。
每种屏幕分辨率的资源都存储在相应的文件夹中,Android系统将根据设备的像素密度进行选择 - 布局:它包含XML文件,这些文件定义了应用程序的用户界面
- 菜单:定义应用程序菜单的XML文件进入此文件夹
- Mipmap:mipmap文件夹仅用于放置应用程序图标。
其他任何可绘制资源应像以前一样放置在相关的可绘制文件夹中。
值:将定义简单值(例如字符串,数组,整数,尺寸,颜色,样式等)的XML文件放置在此文件夹中
Gradle脚本
Gradle脚本用于自动执行任务。
大多数情况下,Android Studio在后台执行应用程序构建,而无需开发人员干预。
该构建过程使用Gradle系统处理,该系统是一个自动化构建工具包,旨在通过一组构建配置文件来配置和管理构建项目的方式,它使用一种名为groovy的语言。
项目视图
.idea
Eclipse将project.properties文件用于项目特定的元数据。
在Android Studio中,此.idea的作用相同。
这意味着特定于项目的元数据由Android Studio存储。
项目模块(应用程序)
这是应用程序代码所在的实际项目文件夹。
应用程序文件夹具有以下子目录
- build:它具有制作过程的所有完整输出,即classes.dex,编译的类和资源等。
在Android Studio GUI中,仅显示了几个文件夹。
重要的部分是R.java在以下位置找到build/Generated/source/r /…/R.java - libs:这是eclipse和android studio中的常见文件夹,可以选择保存库或者.jar文件
- src:src文件夹可以同时包含应用程序代码和android单元测试脚本。
您会发现两个名为" androidTest"和" main"的文件夹对应于src文件夹。
主文件夹包含两个子文件夹java和res。
java文件夹包含所有Java代码,res包含可绘制对象,布局等。
gradle
这是找到gradle构建系统jar包装器的地方。
这个jar是Android Studio与Windows/MAC中安装的gradle通信的方式。
外部库
这实际上不是文件夹,而是显示参考库和目标平台SDK上的信息的位置。
什么是R.java?
Android R.java是aapt(Android资产打包工具)自动生成的文件,其中包含res /目录的所有资源的资源ID。
在activity_main.xml文件中创建任何组件时,将在该文件中自动创建相应组件的ID。
可以在活动源文件中使用此ID对组件执行任何操作。
Android编译器
编译器将已编译的.class文件转换为Dalvik格式的可执行.dex文件,以在Android环境中进一步执行。
以下是使用的两个重要工具:
DEX
Dalvik虚拟机是为移动设备优化的Android虚拟机。
它优化了虚拟机的内存,电池寿命和性能。
Dex编译器将类文件转换为在Dalvik虚拟机上运行的.dex文件。
将多个类文件转换为一个dex文件。
以下流程描述了源文件的编译和打包过程:
javac工具将Java源文件编译为类文件。
dx工具获取应用程序的所有类文件,并生成一个.dex文件。
它是特定于平台的工具。Android资产打包工具(aapt)处理打包过程。
Android ProGuard
ProGuard工具通过删除未使用的代码并使用语义上晦涩的名称重命名类,字段和方法来缩小,优化和混淆代码。
结果是一个较小的.apk文件,很难进行反向工程。