一、Andriod编译过程
在项目文件发生变化时,Android Studio无需指示便会自动进行编译。在整个编译过程中,Android开发工具将资源文件、代码以及AndroidManifest.xml文件(包含应用的元数据)编译生成.apk文件。.apk文件要在模拟器上运行,还需以debug key签名。(分发.apk应用给用户时,应用必须以release key签名。
更多有关编译过程的信息,可参考Android开发文档网页 developer.android.com/tools/publishing/preparing.html
那么,应用的.xml布局文件的内容该如何转变为View对象呢?作为编译过程的一部分,aapt(Android Asset Packaging Tool)将布局文件资源编译压缩紧凑后,打包到.apk文件中。然后,在**Activity类的onCreate(Bundle)方法调用setContentView(…)方法时,**Activity使用LayoutInflater类实例化布局文件中定义的每一个View对象。
二、Andriod编译工具
当前,我们看到的项目编译都是在Android Studio里执行的。编译功能已整合到IDE中,IDE负责调用aapt等Android标准编译工具,但编译过程本身仍由Android Studio管理。有时,出于某种原因,可能需要脱离Android Studio编译代码。最简单的方法是使用命令行编译工具。现代Android编译系统使用Gradle编译工具。
要从命令行使用Gradle,请切换到项目目录并执行以下命令:
$ ./gradlew tasks
如果是Windows系统,执行以下命令:
> gradlew.bat tasks
我在一个简单Andriod项目目录下执行上述指令之后,命令行出现以下信息:
执行以上命令会显示一系列可用任务。你需要的任务是installDebug,因此,再执行以下命令:
$ ./gradlew installDebug
如果是Windows系统,执行以下命令:
> gradlew.bat installDebug
命令行显示以下结果:
以上命令将把应用安装到当前连接的设备上,但不会运行它。要运行应用,需要在设备上手动启动。
何为Gradle
gradle 是目前非常流行的一个项目构建工具。 它并不局限于一种平台,随着软件工程的项目的日益复杂,对于软件项目的编译,打包就成为了一大重点。 以android项目为例,如果要手动配置那么多依赖的第三方库和jar包,自己需要一个一个去网上找资源,然后下载,配置。如果依赖包的版本变更的话,又要重新找资源,下载,配置。 想想都麻烦。 有时还需要把java源码,res等资源编译打包成apk。这也是一个巨大的工作量。 这个时候就需要一个工具帮我们完成这些工作了。在软件项目中完成以上类似工作的工具,称之为项目构建工具。当然gralde的功能远远不止这些,这需要我们不停的探索。
小结:
1、Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML。
当前其支持的语言限于Java、Groovy和Scala,计划未来将支持更多的语言。
2、Gradle 是一个构建工具,也是一个开发框架,基于Groovy语言。 我们可以通过Groovy语言去写自己的Gradle插件,也可以去编写指定的脚本去改变构建规则。
3、android studio中gradle之所以能够构建android工程,是因为有基于android的gradle插件。