android studio的Gradle各种配置汇总

本博文为个人使用过程中遇到问题和解决方案的总结,并非系统的gradle编译教程。

1 在Gradle中配置签名

apply plugin: 'com.android.application'
android {
    compileSdkVersion 19
    buildToolsVersion "23.0.3"
    signingConfigs {
        config {
            keyAlias 'xxx'
            keyPassword 'xxx'
            storeFile file('d:\\mykey')
            storePassword 'xxxx'
        }
    }
   // ....
}

2 在gradle中建立多个发行版

因为每个市场,可能要求有不同的广告sdk。就需要有不同的发行版

    productFlavors {

        qq {
            buildConfigField "boolean", "isFree", "true"
            buildConfigField "boolean", "hasVip", "false"
        }
        baidu {
            buildConfigField "boolean", "isFree", "false"
            buildConfigField "boolean", "hasVip", "true"
        }

        anzhi{
            buildConfigField "boolean", "isFree", "true"
            buildConfigField "boolean", "hasVip", "true"

        }

    }

在这里可以加变量,gradle会在BuildConfig.java中建立isFree和hasVip变量。可以在程序中直接使用这些量。

不同市场不同代码

我想在不同的发行版中使用不同的代码怎么办?比如有的版本中包含A这个类,有的版本包含B这个类。
首先在src下main的同一层建立一个qq目录,qq下建立java目录,其中放入代码

    sourceSets {
        main {
            java.srcDirs = ['src/main/java']
        }
        debug{
            java.srcDirs = ['src/main/java','src/qq/java']
        }
        baidu{
            java.srcDirs = ['src/main/java']
        }
    }

这里我在debug中,加入了qq\java下的东西,方便调试。 在baidu和main中均不包含这些代码。
qq的sourceset没有配置,因为会自动包含。

不同市场不同的lib

在dependence中可以根据不同的配置进行不同的引入

dependencies {
    compile files('libs/open_sdk_r5756.jar')
    compile files('libs/Sunflower.jar')
    debugCompile files('libs/YoumiSdk_v7.0.1_2017-01-06.jar')
    qqCompile files('libs/YoumiSdk_v7.0.1_2017-01-06.jar')

}

其中,debugComile是在debug模式下的时候,加入youmisdk。qqCompile是在qq的debug和release下都加入这个库。而其他的编译版本则没这个库。

不同的市场不同的Androidmanifest

在main下建立一个较为全面的基础xml文件。
在main同一级的其他市场文件夹下,如qq下下,建立Androidmanifest,去掉
xml
android:versionCode="10"
android:versionName="2.03"

去掉
“`xml

  

“`
只放增量内容。
gradle会自动对两个xml进行合并。

你可能感兴趣的:(android)