Android studio的gradle目录结构

  • ./build.gradle
  • ./gradle.properties
  • ./gradlew
  • ./gradlew.bat
  • ./local.properties
  • ./setting.gradle
  • ./XXX.iml
  • ./app/build.gradle
  • ./app/app.iml
  • ./app/proguard-rules.pro

gradle项目自动编译的时候要读取的配置文件。


依赖管理
支持多方式依赖管理:包括从 maven 远程仓库、 nexus 私服、 ivy 仓库以及本地文件系统的 jars 或者 dirs 。

 

AS的六种依赖:

Compile,Provided,APK,Test compile,Debug compile,Release compile

 

Compile
compile是对所有的build type以及favlors都会参与编译并且打包到最终的apk文件中。

Provided
Provided是对所有的build type以及favlors只在编译时使用,类似eclipse中的external-libs,只参与编译,不打包到最终apk。

APK
只会打包到apk文件中,而不参与编译,所以不能再代码中直接调用jar中的类或方法,否则在编译时会报错

Test compile
Test compile 仅仅是针对单元测试代码的编译编译以及最终打包测试apk时有效,而对正常的debug或者release apk包不起作用。

Debug compile
Debug compile 仅仅针对debug模式的编译和最终的debug apk打包。

Release compile
Release compile 仅仅针对Release 模式的编译和最终的Release apk打包。

build.grade有两个,一个是全局的,一个是在模块里面。
全局的build.grade主要设置的是声明仓库源,gradle的版本号说明等。

./build.gradle

buildscript {
    repositories {//repositories 配置的是依赖管理的东西,也就是依赖管理的服务器。默认是 jcenter() 也可以添加其他,多个之间不干扰。
        // 声明仓库源,比如我们构建了一个安卓的库,现在想要把库上传到jcenter中供别人一起使用,则可以上传到jcenter中
        // 具体上传步骤见:http://www.jcodecraeer.com/a/anzhuokaifa/Android_Studio/2015/0227/2502.html
        jcenter()
    }
    dependencies {
        // 说明gradle的版本号
        classpath 'com.android.tools.build:gradle:1.3.0'

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

// 所有项目都继承这个配置
allprojects {
    repositories {
        mavenLocal()
        jcenter()
    }
}

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

// 说明这个模块是安卓项目,如果是多模块开发,有可能有的值为java/war
apply plugin: 'com.android.application'//表示的是添加插件,其是可以理解为该 model 为一个 com.android.application 程序,也就是应用程序,如果你的 Model 是一个库,那么也就是:apply plugin: 'com.android.library'

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

    defaultConfig {//默认配置 也相当于全局配置,这里边配置的下面的 buildTypes 中也将自动继承了。
        // 包名
        applicationId "com.awesomeproject"
        // sdk最低支持版本
        minSdkVersion 16
        // 目标SDK版本,如果目标设备的API版本正好等于此数值,就不会为此程序开启兼容性检查判断的工作
        targetSdkVersion 22
        // 版本号
        versionCode 1
        versionName "1.0"
        // 原生
        ndk {
            abiFilters "armeabi-v7a", "x86"
        }
    }
    buildTypes {//编译配置
        // 发布时候的设置
        release {
            // 是否进行混淆
            minifyEnabled false
            // 混淆使用文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

 
 
sourceSets { //源码设置 其是很多从 Eclipse 中迁移过来的代码,大部分中都将带有这个设置,因为 Eclipse的文件夹与 AS 不尽相同,所以需要手动指定。
     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' ]
     }
 
}
compileOptions {//在这里你可以进行 Java 的版本配置,以便使用对应版本的一些新特性。
	sourceCompatibility JavaVersion.VERSION_1_7     
	targetCompatibility JavaVersion.VERSION_1_7 
}

        
        
lintOptions { //设置编译的 lint 开关,程序在buid的时候,会执行lint检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关掉。
     abortOnError false
}
 
 
 
 
 
 
 
 
 
 
productFlavors { //在这里你可以设置你的产品发布的一些东西,比如你现在一共软件需要发布到不同渠道,且不同渠道中的包名不同,
那么可以在此进行配置;甚至可以设置不同的 AndroidManifest.xml 文件。这个配置不常用
     flavor1 {
         packageName= 'com.example.qiujuer.application1'
         manifest.srcFile 'exampleapk/AndroidManifest1.xml'
     }
 
     flavor2 {
         packageName= 'com.example.qiujuer.application2'
         manifest.srcFile 'exampleapk/AndroidManifest2.xml'
     }
}
 
signingConfigs { //包签名配置  设置具体的签名文件,签名密码等等
     release {
         storeFile file(×.keystore)
         storePassword ×××
         keyAlias ××××
         keyPassword ×××
     }
}
//这个可以不用自己创建,你可以点击 build/generate signed apk,在其中选择你的文件或者创建签名文件,设置密码等等,然后选择记住密码,然后就会看见有这个配置了。
}
 

 
// 依赖的工具包dependencies {//可以是远程依赖,也可以是本地的
    compile fileTree(dir: 'libs', include: ['*.jar'])
	//这句话就是说编译时依赖 libs 文件夹下的所有 jar 文件
    compile project(':library') 
	//这也是依赖,不过依赖的是一个 model ,在一个项目中可以有多个 model ,这句话的意思就是依赖一个本项目中名称为library 的 model 库。
    compile 'com.android.support:appcompat-v7:23.0.0'
	//这句话也就是依赖一个远程的库了,这个库的作用是在低版本中使用一定的 Material Design 的东西。
    compile 'com.facebook.react:react-native:0.11.+'
}

 

./app/proguard-rules.pro
这个和上面说的一样混淆文件

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

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

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

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

./XXX.iml 和 ./app/app.iml
iml是Intellij模块文件。Intellij是一款JAVA的IDE。Android Studio是基于开源的Intellij IDEA开发出来的IDE。
所以Android Studio有的IDE功能是需要有.iml才能使用的。比如我们删除了iml文件,可能就在Android Studio中看不到一些目录了。

 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值