Android Studio的.gradle文件

2017-10-13  本文已影响0人  badcyc

gradle是Android的构建工具,一种依赖管理工具,基于Groovy语言,面向java应用为主,在开发工具中使用,构建工具就是一个把我们本来必须要使用手工进行编译打包的方式来用自动化的方式来完成。(Android 中使用Gradle Wrapper对Gradle进行一层包装,这么做的原因可能是因为gradle更新速度实在太快,为了兼容性着想)

Module中的build.gradle

//声明是Android程序
apply plugin: 'com.android.application'

android {
//编译sdk的版本
    compileSdkVersion 26
//build tools的版本
    buildToolsVersion "25.0.3"
    defaultConfig {
//应用包名
        applicationId "com.example.demo"
        minSdkVersion 15
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
debug{
//debug模式
}
        release {
//是否进行混淆
            minifyEnabled false
//混淆文件的位置
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
//编译libs目录下的所有jar包
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    testCompile 'junit:junit:4.12'
}
分析

Android混淆是Android开发者经常使用的一种用于代码防止被反编译的一种常见方法,一般在release中生效,主要作用
1 压缩、优化、删除代码;
2 一定程度上提高反编译后被读懂的难度;
3 通过删除代码功能实现的特殊作用。
在debug模式下,不混淆,release下正式发布版里混淆,此时用到的两个文件'proguard-android.txt'和'proguard-rules.pro'

dependencies {
//编译libs目录下的所有jar包
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com .android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:26.+'
testCompile 'junit:junit:4.12'
}

外部依赖就是一个网站专门收集各种软件库,我们想使用某种软件库时就compile依赖,然后ADT工具就会自动的从该网站下载库。

project下的.gradle文件
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

这两个仓库和github仓库是不一样的,github关注的是合作开发和代码分享,而这两个库专注的是代码的收集和存放。

1.buildscript里的
dependencies{
classpath'com.android.tools.build:gradle:2.2.2.'
}
告诉gradle需要下载jar包,里面包含各种android编译打包的插件类,gradle到哪里下载这个jar包?由
repositories{
jcenter()
}指定,到jcenter网站去下载

2.allprojects{
repositories{
jcenter()
}
}
调用这个方法是告诉所有子module,下载依赖就到jcenter网站去下载

  1. taskclean(type:Delete){
    delete rootProject.buildDir
    }
    调用这个方法为这个项目构建创建一个任务,可以等构建脚本解析完执行这个任务生成的build目录
settings.gradle文件
include ':app'
上一篇 下一篇

猜你喜欢

热点阅读