gradle入门

gradle深入了解
中文手册

自定义目录结构

//兼容eclipse
sourceSets{
    main{
        java.srcDirs=['src']
        res.srcDirs=['res']
        assets.srcDirs=['assets']
        jni.srcDirs=['jni']
        jniLibs.srcDirs=['libs']
        renderscript.srcDirs=['src']
        aidl.srcDirs=['src']
        mainfest.srcFile'AndroidMainfest.xml'
    }
}

将布局文件分类的办法

sourceSets{
    main{
        res.srcDirs=['src/main/res',
                    'src/main/res/layout/activity',
                    'src/main/res/layout/fragment'
                    ]
    }
}

|--res
    |--layout
        |--activity
            |--activity.xml
        |--fragment
            |--fragment.xml
        |--activity_main.xml

全局配置

在根目录build.gradle配置 详细

buildscript{}
allprojects {}
ext {//定义所有project公用参数  使用rootProject.ext.XX就能拿到相应对象
    compileSdkVersion=23
    buildToolsVersion="23.0.2"
    minSdkVersion=14
    targetSdkVersion=23
    versionCode=3
    versionName="1.0.1"
}
在module中引用
android{
    compileSdkVersion rootProject.ext.compileSdkVersion
}

buildTypes

系统默认的release debug

buildTypes{
    release{
    ...
    }
    xys{
        applicationIdSuffix".xys"//生成apk为 app-xys-ungisned.apk
    }
}
//继承
xys.initWith(buildTypes.debug)
xys{
    applicationIdSuffix".xys"
}

介绍
这里写图片描述

signingConfigs

签名文件可以放在app–xys_key.jks
android{
signingConfigs {

       xys{
        storeFile file("xys_key.jks")
        storePassword "android"
        keyAlias "xys"
        keyPassword "android"
    }
}
buildTypes{
xys{
    signingConfigs  signingConfigs.xys
} 

}

可选配置 compileOptions lintOptions

//用来配置java编译版本
compileOptions{
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
//控制link代码检查
lintOptions{
    abortOnError=false
}

动态参数配置

三种方式 1.System.properties 2.Key\Value方式 3.属性方式

//System.properties
方式 通过System.properties[KEY]获取 如
在gradle.properties中配置

systemProp.keyALiasPassword=1234567
systemProp.keyAlias=xys
systemProp.keyStorePassword=1234567
systemProp.keyStore=xys_key.jks
//引用如下
signingConfigs{
    xys{
        storeFile file(System.properties['keyStore'])
        storePassword System.properties['keyStorePassword']
        keyAlias System.properties['keyAlias']
        keyPassword System.properties['keyAliasPassword']
    }
}
//Key\Value方式
//在gradle.properties中配置
xys.keyAlias=xys
xys.keyAliasPassword=1234567

signiingConfig{
    xys{
        keyAlias project.property('xys.keyAlias')
        keyPassword project.property('xys.keyAliasPassword')
    }
}
//属性方式
pKeyAlias=xys
pKeyAliasPassword=1234567

//build.gradle中引用
signingconfigs{
    xys{
        keyAlias pKeyALias
        keyPassword pKeyAliasPassword
    }
}

总结:第一二中是通过xxx.xx来配置,掉的api不同,第三种最简便,区别是有一种不支持命令行参数。(书中没说懒得查了)

多渠道打包

在AndroidMainifest 的Application节点下创建

<meta-data
    android:name="PRODUCT"
    android:values="${CHANNEL_VALUE}"//替换的渠道占位符
/>

gradle创建

//mainfestPlaceholders关键字为纽带连接
productFlavors{
    product1{
        mainfestPlaceholders=[CHANNEL_VALUE:"PRODUCT1"]
    }
    product2{
        mainfestPlaceholders=[CHANNEL_VALUE:"PRODUCT2"]
    }
}

不同版本添加不同代码

buildTypes{
    release{
        //就是BuildConfig类中的变量
        buildConfigField  "String","myname","\"abx\""  //类型 名字 值 字符串类型主义转义符号
        resValue("String","app_name","XYSAppRelease")//可以更改xml中的值,但是要删除文件中的,否则会冲突
    }
}

生成jar包

task makeJar(type:Jar){
//清空已经存在的jar包
delete'libs/sdk.jar'
//指定生成的jar包名
baseName'sdk'
//从class文件生成jar包
from'build/intermediates/classes/debug/com/xys'
//打包进jar包后的文件目录结构
into('com/xys')
//去掉不需要打包的目录和文件
exclude('test/','BuildConfig.class',R.class)
//去掉R文件
exclude{it.name.startsWith(R$);}
}
//生成目录
app---build---libs----sdk.jar

SO库依赖

|--main
        |----java
        |--jniLibs
                |--armeabi
                    |--test.so
                |--armeabi-v7a
                    |--test.so
        |--res

Gradle依赖统一管理

在根目录的build.gradle配置

ext{
    android=[
            compileSdkVersion:23,buildToolsVersion:'23.0.2'
    ]
    dependencies=[supportv7:'com.android.support:appcompat-v7:23.2.0']
}
//使用
android {
    compileSdkVersion rootProject.ext.android.compileSdkVersion
    buildToolsVersion rootProject.ext.android.buildToolsVersion
}
dependencies{
    compile rootProject ext.dependencies.supportv7
}
//写在单独的配置文件中
//在项目根目录下创建config.gradle文件
ext{
compileSdkVersion:23,buildToolsVersion:'23.0.2'
    ]
    dependencies=[supportv7:'com.android.support:appcompat-v7:23.2.0']
}
//在根目录下build.gradle引用
apply from:'config.gradle'
//如此所有module都可使用,引用方式和上面一样
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值