Android Studio Gradle配置教程与目录解析
2016-04-19 13:24:23  By: shinyuu

1、Gradle的简单介绍

Gradle是可以用于Android开发的新一代的Build System、也是Android Studio默认的build工具、其实Gradle脚本是基于一种JVM语言— Groovy、再加上DSL组成的、由于Groovy是JVM语言、所以可以使用大部分的Java语言库、所谓DSL就是专门针对Android开发的插件、比如标准Gradle之外的一些新的方法(Method)、闭包(Closure)等等、通过我们简单的了解知道Gradle的语法足够简洁和简单、而且可以使用大部分的java包、所以它就当之无愧地成为新一代的Build System

android gradle 教程


2、Gradle的文件结构

./build.gradle //设置了模块的gradle构建配置

./gradle.properties //grade的运行环境配置、比如使用多少内存之类的

./gradlew //自动完成 gradle 环境的脚本、在linux和mac下直接运行gradlew会自动完成gradle环境的搭建

./gradlew.bat //自动完成 gradle 环境的脚本、在linux和mac下直接运行gradlew会自动完成gradle环境的搭建

./local.properties //配置SDK或者NDK的环境路径、各个机器上这个变量可能都是不一样的、所以不应该进入版本库

./setting.gradle //整个项目的管理、比如这个项目包含哪些模块等

./XXX.iml //iml是Intellij模块文件、Intellij是一款JAVA的IDE、Android Studio是基于开源的Intellij IDEA开发出来的IDE

./app/build.gradle //设置了模块的gradle构建配置

./app/app.iml //设置了模块的iml

./app/proguard-rules.pro //混淆文件


Gradle项目自动编译的时候要读取的配置文件、比如指定项目的依赖包等、build.grade有两个、一个是全局的、一个是在模块里面、全局的build.grade主要设置的是声明仓库源、gradle的版本号说明等


3、./build.gradle 设置声明仓库源

buildscript {
    repositories {
        // 声明仓库源、比如我们构建了一个安卓的库、现在想要把库上传到jcenter中供别人一起使用、则可以上传到jcenter中
        jcenter()
    }
    dependencies {
        // 说明gradle的版本号
        classpath ´com.android.tools.build:gradle:1.5.0´

        // 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
}


4、./app/build.grade 设置了模块的gradle构建配置

// 说明这个模块是安卓项目、如果是多模块开发、有可能有的值为java/war
apply plugin: ´com.android.application´

// 配置了所有android构建的参数
android {
    // 编译使用SDK版本
    compileSdkVersion 23
    // 编译工具的版本
    buildToolsVersion "23.0.1"

    defaultConfig {
        // 包名
        applicationId "com.luzhiyao.gongdoocar"
        // sdk最低支持版本
        minSdkVersion 14
        // 目标SDK版本、如果目标设备的API版本正好等于此数值、就不会为此程序开启兼容性检查判断的工作
        targetSdkVersion 23
        // 版本号
        versionCode 1
        versionName "1.0.0"
        // 原生
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }
    buildTypes {
        // 发布时候的设置
        release {
            // 是否进行混淆
            minifyEnabled true
            // 混淆使用文件
            proguardFiles getDefaultProguardFile(´proguard-android.txt´), ´proguard-rules.pro´
        }
    }
    sourceSets {
        main {
            jniLibs.srcDirs = [´libs´] //jniLibs路径为libs
            manifest.srcFile ´AndroidManifest.xml´
            java.srcDirs = [´src´]
            resources.srcDirs = [´src´]
            aidl.srcDirs = [´src´]
            renderscript.srcDirs = [´src´]
            res.srcDirs = [´res´]
            assets.srcDirs = [´assets´]
        }
        //测试所在的路径、这里假设是tests文件夹、没有可以不写这一行
        instrumentTest.setRoot(´tests´)
    }


    //这个是解决lint报错的代码
    lintOptions {
        abortOnError false
    }

    //签名设置
    signingConfigs {
        myConfigs {
            storeFile file("签名文件地址")
            keyAlias "..."
            keyPassword "..."
            storePassword "..."
        }
    }

    //导入so文件
    task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {  
        destinationDir file("$projectDir/libs")  
        baseName "Native_Sina"  
        extension "jar"  
        from fileTree(dir: "libs", include: "**/*.so")  
        into "lib"  
    }  

    tasks.withType(JavaCompile) {  
        compileTask -> compileTask.dependsOn(nativeLibsToJar)  
    } 
}

// 依赖的工具包
dependencies {
    compile fileTree(include: [´*.jar´], dir: ´libs´)
    testCompile ´junit:junit:4.12´
    compile ´com.android.support:appcompat-v7:23.0.1´
    compile ´com.android.support:design:23.0.1´
    compile files(´libs/slidingmenu.jar´)
}


相信大家在引入so文件的时候多少会有一些的问题、如果上述的代码不是很清楚的话、可以移步去详细了解一下:Android Studio添加引入so资源库


5、Android Library依赖

对于项目依赖 android library的话、就不是依赖一个jar、那么简单了、在这里需要使用gradle mulit project 机制、在过去、android library并没有一个很好的包管理方式、简单来说、在gradle出现以前、官方并没有一种用于管理android library 依赖包的方式、一般我们都是直接下载别人的android library project 源码进行集成

而对于第三方的android-maven-plugin 用的是apklib 格式、而现在、官方终于推出一种androidlibrary的打包格式、扩展名为*.aar、前面提到、目前android gradle插件并不支持本地直接使用*.aar文件、对android library 进行打包直接在library项目下面使用gradle build 即可、然后、你就会在 build/libs 目录下看到两个*.aar文件、一个debug包用的、一个是release 下用的、看个人需求使用、这里我们用的是release 版本的 .aar 文件、引用脚本跟前面讲的依赖库相似

dependencies {
    compile(name: ´pulltorefresh´, ext: ´aar´)
}



6、总结说明

我估计现在大部分开发的项目普遍使用的是maven、但是不知道为什么、使用Gradle时经常会遇到一些无法获取远程依赖包的问题、最简单的解决办法就是把依赖包下载的本地、所以建议大家尽量使用本地依赖、如果介绍了这些你还不是太明白、那你可以自己在网上搜一些相关的知识学习学习、或者自己找些资料进行了解、最好的学习就是挑战自己而不是依赖别人


若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新资讯、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


博文评论

  • 该博文还没有评论、赶快抢沙发吧...
DD记账
top
+