defaultConfit默认配置
defaultConfig是Android对象中的一个配置块,负责定义所有的默认配置.他是一个ProductFlavor,如果一个ProductFlavor没有特殊定义配置,默认会使用defaultConfig{}指定配置

android{    compileSdkVersion 23    buildToolsVersion "23.0.1"    defaultConfig{        applicationId "com.xx.app.xx"        minSdkVersion 14        targetSdkVersion 23        versionCode 1        versionName "1.0"    }}​

applicationId
applicationId是ProductFlavor的一个属性,用于指定app的包名,默认是null.
为null时,在构建过程中会从AndroidManifest.xml中读取,
manifest标签的package属性

minSdkVersion
是ProductFlavor的一个方法

public void minSdkVersion(int minSdk){​    setMinSdkVersion(minSdk);​}​public void setMinSdkVersion(@Nullable String minSdkVersion){​    setMinSdkVersion(getApiVersion(minSdkVersion))​}​public void MinSdkVersion(@Nullable String minSdkVersion){​    setMinSdkVersion(getApiVersion(minSdkVersion))​}​

versionCode
ProductFlavor的一个属性,配置AndroidApp的内部版本号.没有配置时从AndroidManifet.xml中读取

public ProductFlavor setVersionCode(Integer version){​    mVersionCode=versionCode;​    return this;​}​public Integer getVersion(){​    return mVersionCode;​}


versionName
versionName和versionCode类型,也是ProductFlavorde一个属性,用于让用户知道我们的应用的版本.

testApplicationId
用于配置测试App的包名,默认情况是applicationId+”.test”.
一般情况下默认即可,它也是ProductFlavor的一个属性

public ProductFlavor setTestApplicationId(String applicationId){    mTestApplicationId=applicationId;    return this;}​public String getTestApplicationId(){    return mTestApplicationId;}

testInstrumentationRunner
用于配置单元测试用的Runner,默认使用的是android.test.InstumentationTestRunner,如果想使用自定义的配置,
修改该值即可

SigningConfig
配置默认的签名信息,对生成的app签名.
也是ProductFlavor的一个属性,可以直接对其进行配置

proguardFiles
配置混淆文件,可以接收多个文件

public void proguardFile(Object ..proguardFileArray){​    getproguardFiles().addAll(project.files(proguardFileArray.getfiles()));​}

配置签名信息
一个app只有签名之后才能被发布 安装 使用 ,签名是保护app的方式,标记该app的唯一性.如果app被恶意篡改,签名不一样了,那么该app就无法升级安装.
app有debug release两种模式:
debug , Android SDK为我们提供了一个默认的debug签名
release , debug模式无法发布,所以我们要配置自己的签名

/*singingConfigs是android的一个方法,接口一个域对象(NamedDomaimobjectContainer)作为其参数,所以我们在signingConfigs{}中定义的都是一个SignConfig.*/android{    ...    signingConfigs{        release{            storeFile file("xx.keystore")            storePassword "passwort"            keyAlias "MyReleaseKey"            keyPassword "password"        }        //debug签名一般不手动配置,已经有默认配置了        debug{            storeFile file("$HOME/.android/debug.keystore")            storePassword "password"            keyAlias "MyDebugKey"            keyPassword "password"                  }    }    //配置好之后就可以进行引用了    defaultConfig{        applicationId "com.xx.app.projectName"        minSdkVrsion 23        targetTargetSdkVersion 25        versionCode 1        versionName "1.0"        signingConfig signingConfigs.debug    }    //还可以针对类型分别配置签名信息,例如对vip版本特别配置vip签名    buildTypes{        release{            signingConfig signingConfigs.release        }        debug{            signingConfig signingConfigs.debug        }    }}

构建的应用类型
debug 和realse的区别在于能否在设备上调试,以及签名不同.
其他代码和资源文件都是一样的

android{​    buildTypes{​        release{​            minifyEnabled false​            proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguardrules.pro'​        }​        debug{​            ...​        }​        //新增类型很简单,因为buildTypes也是一个NamedDomainObjectContainer,直接在buildTypes增加元素​        vip{​​​        }​    }​}

BuildType属性
每一个BuildType都会生成一个SourceSet,默认为src//.
每一个SourceSet包含源代码 资源文件等信息.
所以针对不同的BuildType我们可以单独为其指定Java源码 res资源等.
每一个BuildType都会新增一个SourceSet所以注意不要命名为main和androidTest,因为已经被系统占用
除了生成对应的SourceSet外,每一个BuildType还会生成assemable任务.
常用的asssemableRelease和assemableDebug就是Gradle(release,debug)自动生成的任务.
assemableXXX就能生成对应的apk文件

applicationIdSuffix:
用于配置基于默认的applicationId的后缀 , BuildType的一个属性
如:
applicationId “com.xx.app.projectName”
applicationIdSuffix “.debug”
生成的apk包名为 “com.xx.app.projectName.debug”

debuggable:
配置是否生成一个debug的apk,类型为boolean , BuildType的一个属性

jniDebuggable:
与Debuggable类似,配置是否生成jni代码的apk, BuildType的一个属性

其他配置属性
minifyEnabled:
配置是否开启混淆
mutilDexEnable:
配置是否开启MutilDex
proguardFile:
配置混淆规则的文件
proguardFiles:
一次配置多个混淆文件
shrinkResources
配置是否自动移除未使用的资源文件,默认为false
signingConfig
配置签名默认设置

使用混淆
配置混淆

android{​    buildTypes{        //仅发布版开启混淆        release{            minityEnabled ture            //传入文件名称,获取AndroidSdk中默认的混淆文件(tools/proguard/xx.txt)            proguardFiles getDefaultProguardFile('proguard-android.txt')            ,'proguard-rules.pro'        }        //因为混淆后就无法断点调试了​        debug{​        }​    }​}


编写混淆规则

//AndroidSdk默认有两个混淆文件​//1.proguard-android.txt​//2.proguard-android-optimize.txt,优化过的​public File getDefaultProguardFile(String name){​    File sdkDir=sdkHandler.getAndCheckSdkFolder();​    return new File(sdkDir,SdkConstants.FD_TOOLS+File.separatorChar​        +SdkConstants.FD_PROGUARD+File.separatorChar+name)​}​

启用zipalign优化
一个整理优化Apk文件的工具,推荐开启

android{    buildTypes{        release{            zipAlignEnabled true        }    }}

更多相关文章

  1. Android 数据存储02之文件读写
  2. Android属性之android:priority
  3. Android XML文件解析
  4. 记录EditText的输入属性InputType以及imeOptions
  5. Android 如何在XML文件中定义动画
  6. Android 资源文件中的符号含义与说明: @ ?
  7. Android属性之build.prop生成过程

随机推荐

  1. android中如何执行java命令
  2. Android(安卓)【手撕Glide】--Glide缓存
  3. Android多媒体应用使用MediaPlayer播放音
  4. android 手机logo 的设置
  5. Android文件读写实例代码
  6. [Android(安卓)新特性] Android(安卓)4.3
  7. Android(安卓)功耗分析之wakelock
  8. 代码讲解Android(安卓)Scroller、Velocit
  9. android音频基础与SoundPool
  10. 用activity实现半透明的、淡入的menu