AndroidStudio使用教程(第四弹)

AndroidStudio使用教程(第四弹)

Gradle

讲解到这里我感觉有必要说明一下Gradle

Gradle是一个基于Apache AntApache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言来声明项目设置,而不是传统的XML.

更多介绍请直接参考GradleGoogle搜索。

以下是为什么Android Studio选择Gradle的主要原因:

- 使用领域专用语言(Domain Specific Language)来描述和处理构建逻辑。(以下简称DSL)

- 基于Groovy。DSL可以混合各种声明元素,用代码操控这些DSL元素达到逻辑自定义。

- 支持已有的Maven或者Ivy仓库基础建设

- 非常灵活,允许使用best practices,并不强制让你遵照它的原则来。

- 其它插件时可以暴露自己的DSL和API来让Gradle构建文件使用。

- 允许IDE集成,是很好的API工具

Overview

AndroidStudio build系统是一个你可以用来build, test, run, package your apps的工具。 build系统与Android Studio之间是独立的,

所以你可以在Android Studio中或者

command line中去执行。写完自己的应用程序之后,你可以用build系统来做以下事情:     

- 自定义、配置和扩展build过程.。

- 用同一个工程根据不同的特性来创建多个APK

- 重复利用代码和资源。

Android Studio灵活的build系统能让你不用修改项目和核心文件而完成上面所有的工作。

Overview of the Build System

Android Studio的构建系统包含一个GradleAndroid插件,Gradle是一个管理依赖关系并且允许自定义构建逻辑的高级构建工具。 许多软件都用Gradle来进行构建。

GradleAndroid插件并不依赖Android Studio, 虽然Android Studio全部集成了Gralde, 这就意味着:    

- 你可以用用命令行的方式去构建Android应用或者是在一些没有安装Android Studio的机器上。

- 你可以用命令行构建时的配置和逻辑来在Android Studio中进行构建Android项目。

不管你是通过命令行还是远程机器或者是Android Studio来进行构建的产出都是一致的。

Build configuration

项目的构建配置都在Gralde build files中, 都是些符合Gradle要求的选项和语法,Android插件并不依赖Android

通过build文件来配置一下几个方面:

-Build variants构建系统能对同一个项目通过不同的配置生成多个APK,当你想构建多个不同版本时这是非常有用的,因为不用为他们建立多个不同的项目。

-Dependencies构建系统管理项目的依赖关系,并且支持本地已经远程仓库的依赖关系。 这样你就不用再去搜索、下载,然后再拷贝相应的包到你工程的目录了。

-Manifest entries构建系统能够通过构建配置去指定清单文件中中某些元素的值。 当你想生成一些包名、最低SDK版本或目标SDK版本不同的APK时是非常有用的。

-Signing构建系统能在build配置中设置指定的签名, 在构建的构成会给APK进行签名。

-ProGuard构建系统允许根据不同的构建配置设置不同的混淆规则, 在构建的过程中会运行ProGuard来对class文件进行混淆。

-Testing构建系统会根据项目中的测试代码生成一个测试APK, 这样就不需要创建一个单独的测试工程了, 在构建的过程中会运行相应的测试功能。

Gradle构建文件使用Groovy语法,Groovy是一门可以自定义构建逻辑并且能通过GradleAndroid插件与Android`一些特定元素通信的语言。

Build by convention

Android Studio构建系统对项目结构和一些其他的构建选项做了一些很好的默认规范声明,如果你的项目符合这些条件,Gradle的构建文件就非常简单了。 如果你的项目不符合

其中的一些要求, 灵活的构建系统也允许你去配置几乎所有的构建选项。例如你项目的源码没有放在默认的文件夹中,你可以通过build文件去配置它的位置。

Projects and modules

Android Studio中的Project代表了一个完整的Android应用,每个Project中可以有一个或多个ModuleModule是应用中可以单独build, testdebug的组件。

Module中包含应用中的源码和资源文件, Android Studio中的Project包含以下三种Module

- 包含可复用代码的Java library modules. 构建系统对Java library module会生成一个JAR包。

- 有可复用Android代码和资源的Android library modules. 对该library modules构建系统会生成一个AAR(Android ARchive)包。

- 有应用代码或者也可能是依赖其他library modulesAndroid application modules, 虽然很很多Android应用都只包含一个application module.

对于application modules

构建系统会生成一个APK包。

Android Studio projectsproject的最外城都包含一个列出所有modulesGradle build file, 每个module也都包含自己的Gradle build file.

Dependencies

Android Studio的构建系统管理着依赖项目并且支持module依赖, 本地二进制文件依赖和远程二进制文件的依赖。

  • Module Dependencies

    一个项目的module可以在构建未见中包含一系列所依赖的其他modules, 在你构建这个module的时候,系统回去组装这些所包含的modules.

  • Local Dependencies

    如果本地文件系统中有module所依赖的二进制包如JAR包, 你可以在该module中的构建文件中声明这些依赖关系。

  • Remote Dependencies

    当你的依赖是在远程仓库中,你不需要去下载他们然后拷贝到自己的工程中。 Android Studio支持远程Maven依赖。 Maven是一个流行的项目管理工具,

    它可以使用仓库帮助组织项目依赖。

    许多优秀的软件类库和工具都在公共的Maven仓库中, 对于这些依赖只需按照远程仓库中不同元素的定义来指定他们的Moven位置即可。

    构建系统使用的Maven位置格式是group:name:version. 例如Google Guava16.0.1版本类库的Maven坐标是

    com.google.guava:guava:16.0.1.

    Maven Central Repository现在被广泛用于分发许多类库和工具。

下面分别为以上三种依赖关系的配置;

dependencies {
    compile project(":name")
    compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])
    compile ‘com.google.guava:guava:16.0.1‘
}

Build tasks

Android Studio构建系统定义了一些列的构建任务, 高级别的任务调用一些产出必要输出的任务。 构建系统提供了project tasks来构建appmodule tasks

来独立的构建modules.

可以通过Andorid Studio或者命令行看到当前可用任务的列表,并且执行里面的任务。

The Gradle wrapper

Android Studio项目包含了Gradle wrapper, 包括:     

- A JAR file

- A properties file

- A shell script for Windows platforms

- A shell script for Mac and Linux platforms

声明:需要把这些文件提交到代码控制系统。

使用Gradle wrapper(而不用本地安装的Gradle)能确保经常运行配置文件中配置的Gralde版本。 通过在配置文件中定义最新的版本来确保你的工程一直使用最新版的Gradle

Android Studio从你项目中的Gradle wrapper目录读取配置文件,并且在该目录运行wrapper, 这样在处理多个需要不同Gradle版本的项目时就会游刃有余。

声明:Android Studio不使用shell脚本,所以对于他们的任何改变在IDE构建时都不会生效,你应该在Gradle build files中去设置自定义的逻辑。

你可以在开发及其或者是一些没有安装Android Studio的及其上使用命令行运行shell脚本来构建项目。

直接上图:


  • 邮箱 :[email protected]
  • Good Luck!
时间: 2024-08-30 01:48:44

AndroidStudio使用教程(第四弹)的相关文章

AndroidStudio使用教程(第五弹)

AndroidStudio使用教程(第五弹) Create and Build an Android Studio Project 接下来是以下这四个部分: - Create projects and modules. - Work with the project structure. - Eidt build files to configure the build process. - Build and run your app. 关于如何创建Project这里就不说了, 默认创建的Pr

AndroidStudio使用教程(第六弹)

AndroidStudio使用教程(第六弹) Debug Andorid Studio中进行debug: - 在Android Studio中打开应用程序. - 点击状态栏中的Debug图标. - 在接下来的选择设备窗口选择相应的设备或创建虚拟机, 点击OK即可. Android Studio在debug时会打开Debug工具栏, 可以点击Debug图标打开Debug窗口. 设置断点 与Eclipse十分相似, 在代码左侧位置点击一下即可, 圆点的颜色变了. Attach the debugge

AndroidStudio使用教程(第三弹)

AndroidStudio使用教程(第三弹) 熟悉了基本的使用之后,可能关心的就是版本控制了. SVN 下载Subversion command line 方法一 下载地址是Subversion里面有不同系统的版本. 以Windows为例,我们采用熟悉的VisualSVN. 进入下载页后下载Apache Subversion command line tools, 解压即可. 方法二 Windows下的Tortoise SVN也是带有command line的,但是安装的时候默认是不安装这个选项

AndroidStudio使用教程(第一弹)

AndroidStudio使用教程(第一弹) Android Studio是一套面世不久的IDE(即集成开发环境),免费向谷歌及Android的开发人员发放.Android Studio以IntelliJ IDEA为基础, 旨在取代Eclipse和ADT(Android开发者工具)为开发者提供更好的开发工具. 运行相应速度.智能提示.布局文件适时多屏预览等都比Eclipse要强,但也不能说全部都是有点现在Studio中无法在一个窗口管理多个Project, 每个Project都要打开一个窗口,或

AndroidStudio使用教程(第二弹)

AndroidStudio使用教程(第二弹) 迁移Eclipse工程到Android Studio 官方文档中说Android Studio可以兼容Eclipse的现有工程,但需要做一些操作: Eclipse进行项目构建 首先升级ADT到最新版本, 好像是22之后,选择需要从Eclipse导出的工程,右键选择Export并选择Android下的Generate Gradle Build Files, 运行完成之后你会发现在项目目录中多了一个build.gradle, 这就是Android Stu

Blend4精选案例图解教程(四):请给我路径指引

原文:Blend4精选案例图解教程(四):请给我路径指引 路径在界面设计中,可以起到很好的辅助作用,我常常使用它来对元素进行规则排列和非规则排列控制. 本次教程将演示,Blend中路径的常规用法. 1.新建项目,在默认设计视图中添加一个椭圆(Elipse),按住Shift键可以画圆 视图树设计视图 2.从绘制的圆中提取路径,右键点击圆,弹出的窗口选择Path-Make Layout Path,在视图树中显示为PathListBox,这就是我们需要的路径 3.选中PathListBox,通过双击图

Windows server 2012 搭建VPN图文教程(四)客户端访问VPN测试

Windows server 2012 搭建VPN图文教程(一)安装VPN相关服务 Windows server 2012 搭建VPN图文教程(二)配置路由和远程访问服务 Windows server 2012 搭建VPN图文教程(三)配置VPN访问账户 Windows server 2012 搭建VPN图文教程(四)客户端访问VPN测试 Part IV 客户端访问VPN测试 本部分主要介绍如何通过客户端访问VPN的方法.实验客户端操作系统为windows 8,以下是客户端配置VPN的步骤: 打

运维学习第四弹

运维学习第四弹之shell(bash): 一. hell可以翻译成壳,大多指能够对内部核心起到保护作用的一种装置或结构.在计算机科学中shell的实际意义为操作者提供的.能够通过系统调用或库调用使用整个计算机资源的访问接口. 它既是一种命令解析器又是一种程序设计语言.作为命令解析器,它可以解释和执行用户输入的命令,也可以自动地解释和执行预先编写好并保存在某个文本文件中的一系列的命令:作为程序设计语言,shell特别定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和条件分支

Docker入门教程(四)Docker Registry

Docker入门教程(四)Docker Registry [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它是Docker中的重要组件.本文通过情景演绎的方式对其进行了介绍,图文并茂,强烈推荐读者阅读. 在Docker系列教程的上一篇文章中,我们讨论了Dockerfile的重要性并提供了一系列Dockerfile的命令,使镜像的自动构建更加容易.在这篇文章中,我们将介绍Docker的一个重要组件:Dock