20151106AS 中 Gradle 配置运行浅析@佟飞

2024-04-27 20:18

本文主要是介绍20151106AS 中 Gradle 配置运行浅析@佟飞,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


转自  佟飞的印象笔记

Gradle

Gradle 是以 Groovy 语言为基础,面向Java应用为主。基于DSL(领域特定语言)语法的自动化构建工具。

依赖管理

支持多方式依赖管理:包括从 maven 远程仓库、 nexus 私服、 ivy 仓库以及本地文件系统的 jars 或者 dirs 。这也是我最喜欢的地方,操作简单。

新项目



data-cke-saved-src=http://www.2cto.com/uploadfile/Collfiles/20150104/201501040909141.png





一个新的项目中就包含这些文件,build 是两个,一个项目一个是 APP Model 的。另外在 APP 中可以看见有一个 manifest 文件夹,这意味着着可以有多 AndroidManifest 文件。

另外值得一说的是 gradle.properties 文件也是含有两个,但是却是一个是全局,一个是项目的;这与上面的 Build 文件有何区别?区别在于全局文件存在于 C:Users用户名.gradle文件夹中,该文件有可能没有,需要自己创建,创建后所有项目都将具有访问权限,在该文件中一般保存的是项目的一些变量等,如果是无关紧要的变量可以保存在项目文件中,如果是用户名密码等变量则需要保存在全局文件中。

data-cke-saved-src=http://www.2cto.com/uploadfile/Collfiles/20150104/201501040909153.png

至于项目的配置文件一般是空的。

local.properties

 

?
1
2
3
4
5
6
7
8
9
10
## This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file should *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
sdk.dir=D:ToolKitsAndroidsdk
其中包含了你的 sdk 配置,当然你还可以配置 ndk 路径;格式与 sdk 一样。

 

 

settings.gradle

 

 

?
1
include ':app'
该文件中就仅仅只包含了一句话,在你的项目中如果有多个 Model 存在的时候,就可以选择包含哪些进行编译。

 

 

 

build.gradle

项目:

 

data-cke-saved-src=http://www.2cto.com/uploadfile/Collfiles/20150104/201501040909154.png

两个大的包围一看就明了,一个是为编译准备的,一个是为所有项目准备的。

其中,Repositories 配置的是上面所说的依赖管理的东西,也就是依赖管理的服务器。默认是 jcenter() 你可以添加其他,多个之间不干扰。

dependencies 这个也是依赖管理的东西,上面是指定依赖管理的服务器,这个就是具体依赖什么库。

联合起来也就是,依赖 jcenter() 服务中的 gradle 库,其包名是:“com.android.tools.build” ,版本是:1.0.0 版本。

 

APP Model

data-cke-saved-src=http://www.2cto.com/uploadfile/Collfiles/20150104/201501040909156.png

在这个中基本可以按照名称来知晓其作用。

第一行:

 

?
1
apply plugin: 'com.android.application'
表示的是添加插件,其是可以理解为该 model 为一个 com.android.application 程序,也就是应用程序,如果你的 Model 是一个库,那么自然也就是:

 

 

?
1
apply plugin: 'com.android.library'

 

dependencies :

这个也就是所谓的依赖了,在这里不光可以进行远程依赖(上面所说的方法),也可以本地依赖:

 

?
1
compile fileTree(include: [ '*.jar' ], dir: 'libs' )
这句话也就是说编译时依赖 libs 文件夹下的所有 jar 文件。
?
1
compile project( ':library' )
这样一句话是什么意思?这也是依赖,不过依赖的是一个 model ,前面说了在一个项目中可以有多个 model ,这句话的意思也就是依赖一个本项目中 名称为 library 的 model 库。

 

 

?
1
compile 'com.android.support:appcompat-v7:21.0.3'
至于这句话也就是依赖一个远程的库了,这个库的作用是在低版本中使用一定的 Material Design 的东西。

 

其他一些介绍我以前发过文章可以看看,包括依赖 JNI 本地 aar 等等:

 

[Android][Android Studio] Gradle项目中添加JNI生成文件(.so文件)[Android][Android Studio] *.jar 与 *.aar 的生成与*.aar导入项目方法

 

详细说说 android 部分:

先来看看基本完整的一个:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
android {
     compileSdkVersion ANDROID_BUILD_TARGET_SDK_VERSION as int
     buildToolsVersion ANDROID_BUILD_TOOLS_VERSION
     defaultConfig {
     }
     buildTypes {
     }
     compileOptions {
     }
     sourceSets {
     }
     lintOptions {
     }
     productFlavors {
         flavor1 {
         }
         flavor2 {
         }
     }
     signingConfigs {
         release {
             storeFile file(×.keystore)
             storePassword ×××
             keyAlias ××××
             keyPassword ×××
         }
     }
}
可以看见如果是完整的是有很多可以配置的地方;还让我一个个道来:

 

 

?
1
2
compileSdkVersion 21
buildToolsVersion 21.1 . 2
这两个就是指定的编译SDK以及编辑工具版本,具体可以打开你的 SDK Manager 看看。

 

defaultConfig

这个自然就是默认配置了,既然是默认配置那么久相当于全局配置,也就是说这里边配置的下面的 buildTypes 中也将自动继承了。

在这个中可以放入很多的控制,如下面 buildTypes/release 中的配置你也可以放到其中:

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
defaultConfig {
     applicationId com.example.qiujuer.application
     minSdkVersion 15
     targetSdkVersion 21
     versionCode 1
     versionName 1.0
     ndk {
         moduleName genius
         cFlags -DANDROID_NDK -D_RELEASE
         ldLibs m, log, jnigraphics
         abiFilters all
     }
}
在这里,首先进行了一个 applicationId 配置,该配置不是必须,但 库类型的 Model 将无此配置。

 

下面自然也就是 最小的SDK版本为 15,目标版本为:21 也就是说其中的代码你使用的全是API21中的 Android。再有就是当前的版本代码,版本名称,在Eclipse 中这两个属性是在 AndroidManifest.xml 文件中,在这里把其提出来单独配置就是为了下面你可以在不同发布版本中配置不同的值。

至于这里的 ndk 部分,这个就是我额外加入的,其作用是可以直接编译 NDK 代码,不需要自己执行,具体详见:[Android] 环境配置之Android Studio开发NDK
 

buildTypes

 

在这里进行配置的是你的编译配置,可以看见这里有一个 release ,当然也就是有 debug 部分,两个部分配置都是一样。

在这里主要进行的配置是是否进行代码混淆,所以有一个代码混淆的开关,以及代码混淆的具体文件,文件有两种,无论哪种都行。

 

compileOptions

很多人或许不知道这个部分是干什么的,其是看看下面就明了了:

 

?
1
2
3
4
compileOptions {
     sourceCompatibility JavaVersion.VERSION_1_7
     targetCompatibility JavaVersion.VERSION_1_7
}
在这里你可以进行 Java 的版本配置,以便使用对应版本的一些新特性。

 

 

sourceSets

这个部分,看名字应该有个大概意思就是说源码设置,其是很多从 Eclipse 中迁移过来的代码,大部分中都将带有这个设置,因为 Eclipse的文件夹与 AS 不尽相同,所以需要手动指定。

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
sourceSets {
     main {
         manifest.srcFile 'AndroidManifest.xml'
         java.srcDirs = [ 'src' ]
         resources.srcDirs = [ 'src' ]
         aidl.srcDirs = [ 'src' ]
         renderscript.srcDirs = [ 'src' ]
         res.srcDirs = [ 'res' ]
         assets.srcDirs = [ 'assets' ]
         jniLibs.srcDirs = [ 'libs' ]
     }
}
以上是一些常用的设置,其中最后一个是引用 *.so 文件的时候使用的方法。

 

 

lintOptions

 

这个其实应该写到最后的,因为这个是设置 编译的 lint 开关。

程序在buid的时候,会执行lint检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关掉。

 

?
1
2
3
lintOptions {
     abortOnError false
}

 

productFlavors
在这里你可以设置你的产品发布的一些东西,比如你现在一共软件需要发布到不同渠道,且不同渠道中的包名不同,那么可以在此进行配置;甚至可以设置不同的 AndroidManifest.xml 文件。

 

 

?
1
2
3
4
5
6
7
8
9
10
11
productFlavors {
     flavor1 {
         packageName= 'com.example.qiujuer.application1'
         manifest.srcFile 'exampleapk/AndroidManifest1.xml'
     }
     flavor2 {
         packageName= 'com.example.qiujuer.application2'
         manifest.srcFile 'exampleapk/AndroidManifest2.xml'
     }
}
不过,对于这个我并不常用,可以说基本没有用。

 

 

signingConfigs

 

这个相信大伙都知道吧,就是为包签名的配置,你可以设置具体的签名文件,签名密码等等:

 

?
1
2
3
4
5
6
7
8
signingConfigs {
     release {
         storeFile file(×.keystore)
         storePassword ×××
         keyAlias ××××
         keyPassword ×××
     }
}
这个可以不用自己创建,你可以点击 build/generate signed apk,在其中选择你的文件或者创建签名文件,设置密码等等,然后选择记住密码,然后就会看见有这个配置了。

 

data-cke-saved-src=http://www.2cto.com/uploadfile/Collfiles/20150104/201501040909157.png

 

 

 

Case

一些常用的操作配置说完了,来说说,一个简单的小Case 。

 

在 APP Model build.gradle 文件根部我们加上:

 

?
1
2
3
4
5
6
7
8
9
10
11
task clearApk(type: Delete) {
     delete '../release/' + POM_ARTIFACT_ID + '_' + VERSION_NAME + '.apk'
}
task makeApk(type: Copy) {
     from( 'build/outputs/apk/' )
     into( '../release/' )
     include( 'app-debug.apk' )
     rename( 'app-debug.apk' , POM_ARTIFACT_ID + '_' + VERSION_NAME + '.apk' )
}
makeApk.dependsOn(clearApk, build)

代码分为3个部分,分别是删除,拷贝,以及将其连接起来的一个设置。

 

先说说这个 Case 的目的,其目的是拷贝 build/outputs/apk下面的debug apk文件到项目根目录的 release 文件夹下,并且更名。

但是细心的朋友应该会看见其中有两个参数:POM_ARTIFACT_ID VERSION_NAME 这两个从哪里来?

前面最开始讲过:gradle.properties 文件,这两个就是写在项目根部的 gradle.properties 文件中:

data-cke-saved-src=http://www.2cto.com/uploadfile/Collfiles/20150104/201501040909168.png

写好了,怎么运行呢?两种方式,第一种,代码 task 上右击,run():

data-cke-saved-src=http://www.2cto.com/uploadfile/Collfiles/20150104/201501040909169.png

第二张,命令行方式:

data-cke-saved-src=http://www.2cto.com/uploadfile/Collfiles/20150104/2015010409091611.png

输入后回车,等待执行完成,成功后会出现:

data-cke-saved-src=http://www.2cto.com/uploadfile/Collfiles/20150104/2015010409091612.png

现在看看项目中:

data-cke-saved-src=http://www.2cto.com/uploadfile/Collfiles/20150104/2015010409091613.png

这篇关于20151106AS 中 Gradle 配置运行浅析@佟飞的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/941435

相关文章

springmvc源码解析之配置加载SpringServletContainerI...

用SpringMVC源码解析之配置加载SpringServletContainerInitializer 用SpringMVC配置解析 sdervlet容器启动的时候会加载org.springframework.web.SpringServletContainerInitializer这个类,调用初始化类的onStartup方法   [AppleScript] 纯文本查

STM32F103 USART配置问题

最近开始搞嵌入式了,因为是小白,所以遇到了很多各种各样的问题,其中一个USART的配置问题至今未解决,先在此记录一下; 问题描述:初始化USART1,将USART1重映射到pb6和pb7端口,然后配置相关参数。 但是第一次配置总是不成功,然而第二次配置成功,也就是说要把程序向板子里烧两次才行,第一次初始化完成后没有效果,我单步跟踪了一下,发现相应的寄存器的值也已经设置,可USART1的t

Hadoop3.4.0 完全分布式集群 运行环境搭建 VMware Workstation 虚拟机 大数据系列 一

一  生产环境集群模式部署,需要多台主机,主机之间通过密钥相互访问. 1 配置如图 节点名字节点IP系统版本master11192.168.50.11centos 8.5slave12192.168.50.12centos 8.5slave13192.168.50.13centos 8.5 2 安装服务器 #先安装一台master11,具体可以参考 VMware Workstation

第14讲 struts2中struts.xml中的标签配置

1复制项目,HeadFirstStruts2chapter02_06 改名:HeadFirstStruts2chapter02_07,同时修改web project settings 2修改HelloAction,name属性,get() set()方法,package com.cruise.action;import com.opensymphony.xwork2.ActionSupport;p

第10讲 struts2分模块配置方法

1复制HeadFirstStruts2chapter02-03,改名:HeadFirstStruts2chapter02-04,修改web project settings 2修改struts.xml文件,<include>标签,模拟车辆和资产模块 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC     "-//Apa

用hMailServer+roundcubemail+宝塔安装配置一个自己的邮箱服务

用hMailServer+roundcubemail安装配置一个自己的邮箱服务 1、准备工具与资料: 云服务器一台 基础配置就行 2核4G。域名一个 以下用lizipro.cn示例。hMailServer安装包roundcubemail安装包异常处理插件补丁: libmysql.zip 2、hMailServer服务安装: 下载 hMailServer安装包(windows安装包),根据

IDEA及Maven配置代理及Maven中央仓库配置详解

一、配置代理 首先,需要本地开启代理入口,如图。 这个跟你使用代理软件有关。像我使用的是qv2ray。 其次,idea配置代理,如图。 1.1 idea配置代理 打开Settings,如图 1.2 maven配置代理 maven配置代理,修改settings.xml,如图。 之后,就能正常且快速的拉取外网依赖咯。 二、maven中央仓库记录 2.1 仓库地址

Ubuntu22.04下安装kafka_2.12-2.6.0并运行简单实例

目录 一、版本信息 二、安装Kafka 1. 将Kafka安装包移到下载目录中 2. 安装Kafka并确保hadoop用户对Kafka目录有操作权限 三、启动Kafka并测试Kafka是否正常工作 1. 启动Kafka 2. 测试Kafka是否正常工作 一、版本信息 虚拟机产品:VMware® Workstation 17 Pro   虚拟机版本:17.0.0 build

Linux subversion安装与配置

linux svn使用 博客分类:  linux subversion svn centos linux       SVN是一种版本管理系统,前身是CVS,是开源软件的基石。即使在沟通充分的情况下,多人维护同一份源代码的一定也会出现混乱的情况,版本管理系统就是为了解决这些问题。 SVN中的一些概念 :  a. repository(源代码库)     源代码统一存放的

Nginx https反向代理和负载均衡服务器配置(centos)

Nginx https反向代理和负载均衡服务器配置(centos) Nginx安装包下载    1、pcre     http://www.pcre.org/     2、nginx http://nginx.org/ 下载mainline version的版本,本次下载了 nginx-1.13.5 Nginx安装   1、安装linux常用库 yum install -y gcc gdb