zoukankan      html  css  js  c++  java
  • Android Gradle 一些基础知识

    Gradle定义
        Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。
     
    Gradle安装
        Android Studio 新建项目会自动构建下载Gradle。下载地址:
    •     Mac上会默认下载到 **/Users/<用户名>/.gradle/wrapper/dists** 目录
    •     Win平台会默认下载到C:Documents and Settings<用户名>.gradlewrapperdists目录
     
        ps:这个目录下有个 gradle-x.xx-all 的文件夹, 如果下载实在太慢,但是又不想翻墙的话,可以自己手动到Gradle官网下载对应的版本,然后将下载的.zip文件(也可以解压)复制到上述的gradle-x.xx-all 文件夹下,不过还是建议让它直接下载的好。
     
     
    Gradle基本概念
    1. xx/app/build.gradle
    这个文件是app文件夹下这个Module的gradle配置文件,也可以算是整个项目最主要的gradle配置文件,我们来看下这个文件的内容:
    apply plugin: ‘com.android.application’ ////声明是Android程序
     
    android {
        compileSdkVersion 27 //编译SDK的版本
         buildToolsVersion “27.0.1"  //buildtools的版本
     
        defaultConfig {
            applicationId "com.cn.ice.rx_program"
            minSdkVersion 21
            targetSdkVersion 27
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false //是否进行混淆
                        //混淆文件的位置
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    //移除lint检查的
    error lintOptions{
            abortOnError false
        }
    }
     
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar’]) ////编译libs目录下的所有jar包
        implementation 'com.android.support:appcompat-v7:27.1.1'
        implementation 'com.android.support.constraint:constraint-layout:1.1.0'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.1'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
     
        //引入Rxjava和Rxandroid依赖
        compile 'io.reactivex:rxjava:1.0.14'
        compile 'io.reactivex:rxandroid:1.0.1'
        // compile 'com.squareup.retrofit:2.4.0'
        //引入retrofit2依赖
        compile 'com.squareup.retrofit2:retrofit:2.0.2'
        compile 'com.squareup.retrofit2:converter-gson:2.0.2'
        compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'
        compile 'com.squareup.okhttp3:loggin-interrceptor:3.2.0
        
        //编译extras目录下的ShimmerAndroid模块
        compileproject(':extras:ShimmerAndroid’)
    }
    补充说明:
    buildToolsVersion这个需要你本地安装该版本才行,很多人导入新的第三方库,失败的原因之一是build version的版本不对,这个可以手动更改成你本地已有的版本或者打开SDK Manager去下载对应版本。
     
    proguardFiles这部分有两段,前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,免去了我们很多事,这个文件的目录在 **/tools/proguard/proguard-android.txt** , 后一部分是我们项目里的自定义的混淆文件,目录就在 **app/proguard-rules.txt** , 如果你用Studio 1.0创建的新项目默认生成的文件名是 **proguard-rules.pro** , 这个名字没关系,在这个文件里你可以声明一些第三方依赖的一些混淆规则。
     
    compile project(‘:extras:ShimmerAndroid’)这一行是因为xxx中存在其他Module,不知道Module的概念可以看下这篇博客Android Studio系列教程二–基本设置与运行, 总之你可以理解成Android Library,由于Gradle的普及以及远程仓库的完善,这种依赖渐渐的会变得非常不常见,但是你需要知道有这种依赖的。
    以上文件里的内容只是基本配置,其实还有很多自定义部分,如自动打包debug,release,beta等环境,签名,多渠道打包等,后续会单独拿出来讲解。
     
    每一个Module都需要有一个gradle配置文件,语法都是一样,唯一不同的是开头声明的是apply plugin: ‘com.android.library’
     
    xx/gradle
    这个目录下有个wrapper文件夹,里面可以看到有两个文件,我们主要看下gradle-wrapper.properties这个文件的内容:
    #Thu Dec 18 16:02:24 CST 2014distributionBase=GRADLE_USER_HOMEdistributionPath=wrapper/distszipStoreBase=GRADLE_USER_HOMEzipStorePath=wrapper/distsdistributionUrl=https://services.gradle.org/distributions/gradle-2.2.1-all.zip
    可以看到里面声明了gradle的目录与下载路径以及当前项目使用的gradle版本,这些默认的路径我们一般不会更改的,这个文件里指明的gradle版本不对也是很多导包不成功的原因之一。
    settings.gradle
    这个文件是全局的项目配置文件,里面主要声明一些需要加入gradle的module,我们来看看xx该文件的内容:
    include':app',':extras:ShimmerAndroid'
    文件中的app,extras:ShimmerAndroid都是module,如果还有其他module都需要按照如上格式加进去。
  • 相关阅读:
    hdu 1823 Luck and Love 二维线段树
    UVA 12299 RMQ with Shifts 线段树
    HDU 4578 Transformation 线段树
    FZU 2105 Digits Count 线段树
    UVA 1513 Movie collection 树状数组
    UVA 1292 Strategic game 树形DP
    【ACM】hdu_zs2_1003_Problem C_201308031012
    qsort快速排序
    【ACM】nyoj_7_街区最短路径问题_201308051737
    【ACM】nyoj_540_奇怪的排序_201308050951
  • 原文地址:https://www.cnblogs.com/cold-ice/p/9115759.html
Copyright © 2011-2022 走看看