本博文为个人使用过程中遇到问题和解决方案的总结,并非系统的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进行合并。

更多相关文章

  1. Android锁屏API-DevicePolicyManager介绍
  2. Android(安卓)AIDL进程通信机制详解
  3. android上传图片到服务器,求服务器那边和android的Activity的完整
  4. android上传图片到服务器,求服务器那边和android的Activity的完整
  5. 自定义Android菜单背景
  6. android 单元测试 附源码
  7. Android(安卓)代码混淆 防止反编译
  8. Android(安卓)startActivityForResult的使用
  9. Android(安卓)AIDL进程通信机制详解

随机推荐

  1. C语言标识符有哪三类
  2. strcat函数的作用是什么
  3. c语言是高级语言吗?
  4. strcpy函数的作用是什么
  5. c++引用和指针的区别是什么?
  6. scanf在c语言中的作用是什么?
  7. c语言中数据结构是什么?常见数据结构有哪
  8. 虚函数和纯虚函数的区别是什么?
  9. c语言的输入输出语句有哪些?
  10. windows.h有哪些函数