热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android使用gradle不同配置多项目打包

build.gradle该配置文件里路径均是相对路径applyplugin:com.android.applicationandroid{defsuffixsuffix后缀新

//build.gradle该配置文件里路径均是相对路径
apply plugin: 'com.android.application'android {def suffix = "suffix"//后缀//新增一个配置须要加入一个新的变量,命名规则operator_xxxxxxdef operator_Z = "Z"Map operatorMap = new HashMap();Map versionMap = new HashMap();Map versionCodeMap = new HashMap();Map versionNameMap = new HashMap();//设置是否使用独立的versionCode和versionNamesetVersionCN(versionMap, versionCodeMap, versionNameMap, "projectName001", true, 10, "1.0.0.10test")setVersionCN(versionMap, versionCodeMap, versionNameMap, "projectName002", true, 10, "1.0.0.10test")//编译sdk版本号compileSdkVersion 21//编译工具版本号buildToolsVersion "23.0.0 rc2"//是否强制唯一包名enforceUniquePackageName = falselintOptions {//运行lint检查,不会终止编译abortOnError false}dexOptions {preDexLibraries = false}signingConfigs {commonConfig {storeFile file("wasu.keystore")storePassword "wasu1234"keyAlias "android.keystore"keyPassword "wasu1234"}}defaultConfig {applicationId "cn.com.wasu.backplay"minSdkVersion 11targetSdkVersion 15versionCode 11versionName "1.0.0.11"}buildTypes {release {//是否优化zipAlignEnabled true//是否混淆minifyEnabled trueproguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-project.txt'//这里的proguard-project.txt要改动成混淆配置文件名称}}productFlavors {def flavorSign = signingConfigs.commonConfigprojectName001 {sourceSets."$name".java.srcDirs += "build-types/projectName001"signingConfig flavorSignoperatorMap.put("$name", operator_Z)if (versionMap.get(name)) {//这里传入name參数时直接用nameversionCode versionCodeMap.get(name)versionName versionNameMap.get(name)} else {versionCode defaultConfig.versionCodeversionName defaultConfig.versionName}}projectName002 {sourceSets."$name".java.srcDirs += "build-types/projectName002"signingConfig flavorSignoperatorMap.put("$name", operator_Z)if (versionMap.get(name)) {versionCode versionCodeMap.get(name)versionName versionNameMap.get(name)} else {versionCode defaultConfig.versionCodeversionName defaultConfig.versionName}}}sourceSets {main {assets.srcDirs = ['src/main/assets']res.srcDirs = ['src/main/res']aidl.srcDirs = ['src/main/java']resources.srcDirs = ['src/main/java']renderscript.srcDirs = ['src/main/java']jniLibs.srcDirs = ['libs']//同一时候包括*.so,*.jar文件manifest.srcFile 'src/main/AndroidManifest.xml'java {srcDirs = ['src/main/java']exclude 'cn/com/a/b/c/Common.java'//排除项目中的该类}}}packagingOptions {exclude 'META-INF/DEPENDENCIES.txt'exclude 'META-INF/LICENSE.txt'exclude 'META-INF/NOTICE.txt'exclude 'META-INF/NOTICE'exclude 'META-INF/LICENSE'exclude 'META-INF/DEPENDENCIES'exclude 'META-INF/notice.txt'exclude 'META-INF/license.txt'exclude 'META-INF/dependencies.txt'exclude 'META-INF/LGPL2.1'exclude 'META-INF/ASL2.0'}println "共" + operatorMap.size() + "个项目须要编译"setup(operatorMap, suffix)clean {delete += "output"}
}dependencies {
//在混淆文件里须要凝视相关jar包。例如以下
//#-libraryjars libs/dom4j-1.6.1.jar
//#-libraryjars libs/jackson-core-asl-1.8.0.jar
//#-libraryjars libs/jackson-mapper-asl-1.8.0.jar
//#-libraryjars libs/junit4.4.jar
//#-libraryjars libs/spring-android-rest-template-1.0.0.M2.jar
//#-libraryjars libs/Log.jar
//#-libraryjars libs/gson-2.2.4.jarcompile 'com.android.support:support-v4:21.0.3'compile 'com.google.code.gson:gson:2.2.4'compile files('libs/Log.jar')compile files('libs/dom4j-1.6.1.jar')compile files('libs/jackson-core-asl-1.8.0.jar')compile files('libs/jackson-mapper-asl-1.8.0.jar')compile files('libs/junit4.4.jar')compile files('libs/spring-android-rest-template-1.0.0.M2.jar')
}build.doLast {def today = new Date().format('yyyyMMdd');def dir_debug = 'output/' + today + '/debug'def dir_release = 'output/' + today + '/release'copy {//复制release版本号apk到单独目录from('build/outputs/apk')into(dir_debug)include('*_debug.apk')exclude("*-unaligned.apk");exclude("*-unsigned.apk");}copy {//复制debug版本号apk到单独目录from('build/outputs/apk')into(dir_release)include('*.apk')exclude('*_debug.apk')exclude("*-unaligned.apk");exclude("*-unsigned.apk");}
}def setup(Map operatorMap, suffix) {def name = "xxxx_";def today = new Date().format('yyyyMMddHHmm');def today1 = new Date().format('yyyyMMdd');android.applicationVariants.all { variant ->variant.outputs.each { output ->
// def version = android.defaultConfig.versionName;def version = variant.productFlavors[0].versionName;def file = output.outputFiledef buildTypeOfApp = variant.buildType.namedef operator = operatorMap.get("${variant.productFlavors[0].name}")//这里传入參数时须要使用“ "${variant.productFlavors[0].name}" ”
// def outputName = name + operator + variant.productFlavors[0].name + "_" + suffix + "_" + versiondef test = "%s%s%s_%s_%s"def outputName = String.format(test, name, operator, variant.productFlavors[0].name, suffix, version)if (!variant.buildType.name.equalsIgnoreCase("debug")) {output.outputFile = new File(file.parent, outputName + "_" + today + ".apk")} else {output.outputFile = new File(file.parent, outputName + "_" + today1 + "_debug.apk");}println output.outputFile;}}
}/*** 设置是否使用自己定义versionCode和versionName* @param versionMap 是否自己定义map* @param versionCodeMap 自己定义versionCode map* @param versionNameMap 自己定义versionName map* @param name 项目名* @param isSingle 是否使用自己定义* @param code 自己定义versionCode* @param vname 自己定义versionName* @return*/
def setVersionCN(versionMap, versionCodeMap, versionNameMap, String name, boolean isSingle, int code, String vname) {versionMap.put(name, isSingle);versionCodeMap.put(name, code);versionNameMap.put(name, vname);
}

升级版Android使用gradle不同配置多项目打包(升级版)




推荐阅读
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • (三)多表代码生成的实现方法
    本文介绍了一种实现多表代码生成的方法,使用了java代码和org.jeecg框架中的相关类和接口。通过设置主表配置,可以生成父子表的数据模型。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • Java程序设计第4周学习总结及注释应用的开发笔记
    本文由编程笔记#小编为大家整理,主要介绍了201521123087《Java程序设计》第4周学习总结相关的知识,包括注释的应用和使用类的注释与方法的注释进行注释的方法,并在Eclipse中查看。摘要内容大约为150字,提供了一定的参考价值。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
author-avatar
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有