No1:

minSdkVersion

public void minSdkVersion(int minSdkVersion){
setMinSdkVersion(minSdkVersion);
}
-----------------------
public void setMinSdkVersion(@Nullable String minSdkVersion){
setMinSdkVersion(getApiVersion(minSdkVersion));
} public void minSdkVersion(@Nullable String minSdkVersion){
setMinSdkVersion(minSdkVersion);
}

No2:

android代号版本对应表

No3:

versionCode-内部版本号

@NonNull
public ProductFlavor setVersionCode(Integer versionCode){
mVersionCode = versionCode;
return this;
} @Override
@Nullable
publid Integer getVersionCode(){
return mVersionCode;
}

No4:

versionName-版本名称

@NonNull
public ProductFlavor setVersionName(String versionName){
mVersionName = versionName;
return this;
} @Override
@Nullable
public String getVersionName(){
return mVersionName;
}

No5:

testApplicationId-app的包名

@NonNull
public ProductFlavor setTestApplicationId(String applicationId){
mTestApplicationId = applicationId;
return this;
} @Override
@Nullable
public String getTestApplicationId(){
return mTestApplicationId;
}

No6:

testInstrumentationRunner-配置单元测试时使用的Runner

@NonNull
public ProductFlavor setTestInstrumentationRunner(String testInstrumentationRunner){
mTestInstrumentationRunner = testInstrumentationRunner;
return this;
} @Override
@Nullable
public String getTestInstrumentationRunner(){
return mTestInstrumentationRunner();
}

No7:

signingConfig-配置默认的签名信息

@Override
@Nullable
public SigningConfig getSigningConfig(){
return mSigningConfig;
} @NonNull
public ProductFlavor setSigningConfig(SigningConfig signingConfig){
mSigningConfig = signingConfig;
return this;
}

No8:

proguardFile-混淆所使用的配置文件

public void projuardFile(@NonNull Object projuardFile){
getProjuardFiles().add(project.file(projuaardFile));
}

No9:

proguardFiles-同时接受多个配置文件

public void proguardFiles(@NonNull Object...proguardFileArray){
getProguardFiles().addAll(project.files(proguardFileArray).getFiles());
}

No10:

配置签名信息

signingConfigs{
release{
storeFile file("myreleasekey.keystore")
storePassword "password"
keyAlias "MyReleaseKey"
keyPassword "password"
}
debug{
storeFile file("mydebugkey.keystore")
storePassword "password"
keyAlias "MyDebugKey"
keyPassword "password"
}
}

storeFile:签名证书文件

storePassword:签名证书文件的密码

storeType:签名证书的类型

keyAlias:签名证书中秘钥别名

keyPassword:签名证书中该秘钥的密码

注:debug模式的签名已经被配置好了,使用的就是android sdk自动生成的debug证书,一般位于../.android/debug.keystore

调用

defaultConfig{
applicationId "org.flysnow.app.example82"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
signingConfig signingConfig.debug
}

或者

buildType{
release{
signingConfig signingConfigs.release
}
debug{
signingConfig signingConfig.debug
}
}

No11:

applicationIdSuffix-用于配置基于默认applicationId的后缀

@NonNull
public BaseConfigImpl setApplicationIdSuffix(@Nullable String applicationIdSuffix){
mApplicationIdSuffix = applicationIdSuffix;
return this;
} @Override
@Nullable
public String getApplicationIdSuffix(){
return mApplicationIdSuffix;
}

No12:

debuggable-用于配置是否生成一个可供调试的apk

@NonNull
public BuildType setDebuggable(boolean debuggable){
mDebuggable = debuggable;
return this;
} @Override
public boolean isDebuggable(){
return mDebuggable || mTestCoverageEnabled;
}

No13:

jniDebuggable-用于配置是否生成一个可供调试Jni代码的apk

@NonNull
public BuildType setJniDebuggable(boolean jniDebugBuild){
mJniDebuggable = jniDebugBuild;
return this;
} @Override
public boolean isJniDebuggable(){
return mJniDebuggable;
}

No14:

minifyEnabled-用于配置是否启用Proguard混淆

@NonNull
public BuildType setMinifyEnabled(boolean enabled){
mMinifyEnabled = enabled;
return this;
} @Override
public boolean isMinifyEnabled(){
return mMinifyEnabled;
}

No15:

multiDexEnabled-用于配置该BuildType是否启用自动拆分多个Dex的功能

@Override
@Nullable
public Boolean getMultiDexEnabled(){
return mMultiDexEnabled;
} public void setMultiDexEnabled(@Nullable Boolean multiDex){
mMultiDexEnabled = multiDex;
}

No16:

proguardFile

@NonNull
public BuildType projuardFile(@NonNull Object proguardFile){
getProguardFiles().add(project.file(proguardFile));
return this;
}

No17:

proguardFiles

@NonNull
public BuildType projuardFiles(@NonNull Object... proguardFileArray){
getProguardFiles().addAll(project.files(proguardFileArray).getFiles());
return this;
}

No18:

shrinkResources

@Override
public boolean isShrinkResources(){
return thrinkResources;
} public void setShrinkResources(boolean shrinkResources){
this.shrinkResources = shrinkResources;
}

No19:
signingConfig

@NonNull
public BuildType setSigningConfig(@Nullable SigningConfig signingConfig){
mSigningConfig = signingConfig;
return this;
} @Override
@Nullable
public SigningConfig getSigningConfig(){
return mSigningConfig;
}

No20:

每一个BuildType都会生成一个SourceSet,还会生成相应的assemble任务,比如:assembleRelease或assembleDebug

No21:

代码混淆不仅能优化我们的代码,让apk包变得更小,还可以混淆我们原来的代码

No22:

public File getDefaultProjuardFile(String name){
File sdkDir = sdkHandler.getAndCheckSdkFolder();
return new File(sdkDir,SdkConstants.FD_TOOLS + File.separatorChar + SdkConstants.FD_PROGUARD + File.separatorChar + name);
}

android sdk默认提供两个Proguard配置文件,proguard-android.txt和proguard-android-optimize.txt,一个没有优化,一个有优化。

No23:

android{
buildTypes{
release{
zipAlignEnabled true
}
debug{ }
}
}
@NonNull
public BuildType setZipAlignEnabled(boolean zipAlign){
mZipAlignEnabled = zipAlign;
return this;
} @Override
public boolean isZipAlignEnabled(){
return mZipAlignEnabled;
}

《Gradle权威指南》--自定义Android Gradle工程的更多相关文章

  1. 《Gradle权威指南》--Android Gradle插件

    No1: Android Gradle插件分类 App插件id:com.android.application Library插件id:com.android.library Test插件id:com ...

  2. 《Gradle权威指南》--Android Gradle高级自定义

    No1: 指定共享库 <uses-library android:name="com.google.android.maps" android:required=" ...

  3. 《Gradle权威指南》--Android Gradle NDK支持

    No1: 在根项目下的local.properties文件中配置 sdk.dir=/home/frame/android/android-sdk ndk.dir=/home/frame/android ...

  4. 《Gradle权威指南》--Android Gradle测试

    No1: Android既可以用传统的JUnit测试,也可以用Android的instrument测试. No2: 当我们运行测试的时候,androidTest SourceSet会被构建成一个可以安 ...

  5. 《Gradle权威指南》--Android Gradle多渠道构建

    No1: Build Variant = Build Type + Product Flavor Build Variant:构建的产物 Build Type:构建的类型 Product Flavor ...

  6. 《Gradle权威指南》--Android Gradle多项目构建

    No1: Android多项目设置 目录结构: MyProject/ setting.gradle app/ build.gradle libraries/ lib1/ build.gradle li ...

  7. 《Gradle权威指南》--Java Gradle插件

    No1: dependencies{ compile group: 'com.squareup.okhttp3',name:'okhttp',version:'3.0.1' } //缩写 depend ...

  8. 读书笔记--Android Gradle权威指南(上)

    本篇文章已授权微信公众号 dasu_Android(大苏)独家发布 最近看了一本书<Android Gradle 权威指南>,对于 Gradle 理解又更深了,但不想过段时间就又忘光了,所 ...

  9. 读书笔记--Android Gradle权威指南(下)

    前言 最近看了一本书<Android Gradle 权威指南>,收获挺多,就想着来记录一些读书笔记,方便后续查阅. 本篇内容是基于上一篇:读书笔记--Android Gradle权威指南( ...

  10. 【Gradle】自定义Android Gradle工程

    自定义Android Gradle工程 defaultConfig默认配置 defaultConfig是Android对象中的一个配置项,负责定义所有的默认配置.一个基本的defaultConfig配 ...

随机推荐

  1. CF949D Curfew

    传送门 跟这个大佬学的->戳我 假设只有一个宿管,那么从前往后做的过程中,如果能到达某个寝室范围内的人数不够\(b\),那么不如把这个寝室空出来,这样更有利于后面的抉择;反之,就把这个寝室搞正好 ...

  2. luogu P2515 [HAOI2010]软件安装

    传送门 看到唯一的依赖关系,容易想到树型dp,即\(f_{i,j}\)表示选点\(i\)及子树内连通的点,代价为\(j\)的最大价值,然后就是选课那道题 但是要注意 1.题目中的依赖关系不一定是树,可 ...

  3. 第16月第31天 mongo

    1. 94  brew install  mongodb 95  cd ~ 96  cd Desktop/web/ 97  ls 98  mkdir mongo 99  cd mongo/ 100  ...

  4. Struts通配符映射

  5. Protues常用元器件查找对应表

    原理图常用库文件:Miscellaneous Devices.ddbDallas Microprocessor.ddbIntel Databooks.ddbProtel DOS Schematic L ...

  6. Dubbo配置参数的优先级

    总结为: 1).Java运行时虚拟机参数 eg:-Ddubbo.protocol.port=20880 2).dubbo.xml || application.properties(SpringBoo ...

  7. 【逆向知识】GitHub:Awesome-Hacking(黑客技能列表-逆向)

    0 初衷 GitHub这一份黑客技能列表很不错,包含了多个方向的安全.但目前我关注只有逆向工程与恶意代码,所以其他的被暂时略过. 虽然很感谢作者的辛勤付出,但并不打算复制粘贴全套转载.逐条整理是为了从 ...

  8. gdb 调试入门,大牛写的高质量指南

    引用自:http://blog.jobbole.com/107759/ gdb 调试 ncurses 全过程: 发现网上的“gdb 示例”只有命令而没有对应的输出,我有点不满意.gdb 是 GNU 调 ...

  9. 三 、 Multivariance Linear Regssion练习(转载)

    转载:http://www.cnblogs.com/tornadomeet/archive/2013/03/15/2962116.html 前言: 本文主要是来练习多变量线性回归问题(其实本文也就3个 ...

  10. 【vim】实时加密文本 ggVGg?

    如果你不想让别人看懂你的屏幕上的内容,你可以使用一个内置的选项,通过下面的命令使用 ROT13 来对文本进行编码: ggVGg? gg 把光标移动到 Vim 缓冲区的第一行, V 进入可视模式, G ...