[Android] 浅析总结 AS 中 Gradle 配置运行

========================================================
作者:qiujuer
博客:blog.csdn.net/qiujuer
网站:www.qiujuer.net
开源库:Genius-Android
转载请注明出处:http://blog.csdn.net/qiujuer/article/details/42342667
========================================================

既然是浅析,自然也就没有深入的地方,我也写不出深入的地方,自己没有用过,也不会写出来坑人的;仅仅就是在 Android Studio 中的 Gradle 使用配置而已。

Gradle

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

依赖管理

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

新项目


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

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


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

local.properties

## 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\:\\ToolKits\\Android\\sdk
其中包含了你的 sdk 配置,当然你还可以配置 ndk 路径;格式与 sdk 一样。


settings.gradle

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


build.gradle

项目:


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

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

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

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


APP Module


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

第一行:

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

apply plugin: 'com.android.library'


dependencies :

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

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

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

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

详细说说 android 部分:

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

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 "×××"
        }
    }
}
可以看见如果是完整的是有很多可以配置的地方;还让我一个个道来:

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

defaultConfig

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

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

    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 配置,该配置不是必须,但库类型的 M odule 将无此配置。

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

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

buildTypes

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

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


compileOptions 

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

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


sourceSets 

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

    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检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关掉。

    lintOptions {
        abortOnError false
    }

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

    productFlavors {
        flavor1 {
            packageName='com.example.qiujuer.application1'
            manifest.srcFile 'exampleapk/AndroidManifest1.xml'
        }

        flavor2 {
            packageName='com.example.qiujuer.application2'
            manifest.srcFile 'exampleapk/AndroidManifest2.xml'
        }
    }
不过,对于这个我并不常用,可以说基本没有用。


signingConfigs

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

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




Case

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

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

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 文件中:


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


第二张,命令行方式:


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


现在看看项目中:


的确是成功了!

这只是一个很基本的用法,限于篇幅就差不多这么多吧,如果大家有疑问,可以评论回复,我如果积累了一定量,我好针对问题写新的一些用法,不然我也很没有头绪的。

========================================================
作者:qiujuer
博客:blog.csdn.net/qiujuer
网站:www.qiujuer.net
开源库:Genius-Android
转载请注明出处:http://blog.csdn.net/qiujuer/article/details/42342667
========================================================

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: Gradle是一种基于Apache Ant和Apache Maven概念的自动化构建工具,用于Java项目的自动化构建、依赖管理和测试等。在Android StudioGradle被用来构建和管理Android项目Gradle配置包括: 1. 项目级别的Gradle配置:位于项目根目录下的build.gradle文件,用于配置整个项目的构建和依赖管理。 2. 模块级别的Gradle配置:位于每个模块的build.gradle文件,用于配置该模块的构建和依赖管理。 在Gradle配置,常见的配置项包括: 1. repositories:用于指定依赖库的仓库地址,可以是本地文件系统、远程Maven仓库或者其他自定义仓库。 2. dependencies:用于指定项目依赖库,可以是本地文件系统、远程Maven仓库或者其他自定义仓库。 3. buildTypes:用于指定项目的构建类型,例如debug、release等。 4. productFlavors:用于指定项目的产品风味,例如free、paid等。 5. compileSdkVersion、buildToolsVersion、minSdkVersion、targetSdkVersion等:用于指定项目的编译版本、构建工具版本、最低支持版本和目标版本等。 以上是Android StudioGradle配置的基础内容,具体配置还需要根据项目需求进行调整。 ### 回答2: GradleAndroid Studio的一种构建工具,用于编译、打包、发布Android应用程序。它使用Groovy语言编写,基于Apache Maven和Apache Ant构建工具的优点,支持灵活的构建脚本并提供了丰富的插件,可以有效地管理依赖关系、自动化构建任务、自动导入库等。 在Android StudioGradle配置分为两部分:项目级别的Gradle配置和模块级别的Gradle配置项目级别的Gradle配置包括build.gradle文件和gradle-wrapper.properties文件。build.gradle文件是Gradle构建脚本的主文件,它定义了项目的构建方式、仓库地址、插件,以及需要构建的模块等。gradle-wrapper.properties文件是Gradle包装器的配置文件,它定义了Gradle版本号并指定了Gradle下载地址。 模块级别的Gradle配置包括build.gradle文件和proguard-rules.pro文件。build.gradle文件包括了该模块的构建配置,包括依赖库、运行时权限、签名方式,以及生成的APK路径等。proguard-rules.pro文件是混淆规则文件,它包括了混淆代码时需要忽略的类和方法等信息。 要配置Gradle,我们需要根据实际需要添加或修改相应的内容。例如,添加依赖库可以在build.gradle文件的dependencies节点添加相关依赖库信息,例如: implementation 'com.android.support:appcompat-v7:28.0.0' 如果需要修改混淆规则,可以在proguard-rules.pro文件添加相关规则,例如: -keep class com.example.app.** { *;} 总之,Gradle是一款功能强大的构建工具,它可以帮助开发者自动化构建任务,管理依赖关系等。对于Android开发者而言,掌握Gradle配置是非常重要的技能,可以提高开发效率,降低开发成本。 ### 回答3: Android Studio是一种支持Android应用程序开发的集成开发环境,而Gradle则是一种基于Apache Maven和Ant的开源构建自动化工具。它可以更轻松地以面向对象的方式来管理Java工程。在Android Studio,使用Gradle配置可以使项目更加方便,同时也具备了灵活性。 首先,我们需要了解一些Android StudioGradle配置的基本知识。可以在项目的根目录下找到build.gradle文件,这是Gradle构建脚本文件的主要文件之一。它包含了项目构建所需的所有配置信息,如编译版本号、依赖项等。在Gradle构建脚本,有两个重要的部分称为buildscript和dependencies。 buildscript: buildscript的配置项是为了配置Gradle的编译环境。通常包含如下的内容: - repositories: Gradle插件库和第三方库的URL地址。 - dependencies: Gradle插件列表,所有的插件都需要在这个部分声明,基本上最常见的就是com.android.tools.build:gradle。 dependencies: dependencies部分包含项目依赖的所有库文件,例如支持库和第三方库。我们可以通过在dependencies块添加依赖项来设置库和版本: 例如: ``` dependencies { compile 'com.android.support:appcompat-v7:26.0.0-beta1' compile 'com.android.support.constraint:constraint-layout:1.0.2' } ``` 此外,我们还可以更改项目编译版本。可以在build.gradle文件修改编译版本信息,例如minSdkVersion,targetSdkVersion和compileSdkVersion。以下是一个示例: ``` android { compileSdkVersion 27 defaultConfig { minSdkVersion 19 targetSdkVersion 27 ... } buildTypes { release { ... } } } ``` 在配置Gradle时,我们还可以添加自定义任务。Gradle提供了一组系统任务,例如clean,assemble,build和check等。我们也可以使用Gradle插件以及自定义任务来自己指定相关任务。 总之,配置Gradle可以使Android Studio更加灵活,能够更好地管理、构建和部署项目。通过使用Gradle构建脚本,我们可以更方便地进行依赖项管理以及其他任务。同时,它还支持自定义插件和扩展,以满足我们的特定需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值