文档章节

Android-Gradle 构建修改[applicationId]和[packageName]

土渣渣
 土渣渣
发布于 2017/02/08 15:02
字数 271
阅读 42
收藏 0

需求

利用gradle打包时,不止要动态替换配置文件的package,希望生产的 资源文件(R.Strings,R.values)R文件的包名也发生变化,android的gradle 插件默认是不支持的

一,代码目录结构

输入图片说明

二,修改 Top-level build.gradle

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.0'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

task clean(type: Delete) {
    description 'Clean the build files'
    delete rootProject.buildDir
}



tasks.getByPath("app:pre[Flavors_baidu]ReleaseBuild").dependsOn ":app:flavors_baidu_release"
tasks.getByPath("app:pre[Flavors_baidu]DebugBuild").dependsOn ":app:flavors_baidu_debug"
tasks.getByPath("app:pre[Flavors_360]ReleaseBuild").dependsOn ":app:flavors_360_release"
tasks.getByPath("app:pre[Flavors_360]DebugBuild").dependsOn ":app:flavors_360_debug"

  • 直接在构建不同变体时调用自定义的任务,任务定义在 app/build.gradle

三,修改 Second-level build.gradle

配置 flavors

android{
    productFlavors {

        flavors_baidu{
            applicationId 'com.baidu.demo'
            versionNameSuffix '.baidu'
        }

        flavors_360{
            applicationId = "com.360.demo"
            versionNameSuffix '.360'
        }
    }
}

自定义任务

android{
task flavors_baidu_release() {
        doFirst {
            println "----------------------------flavors_baidu_release--------------------------------------"
             sourceSets.main. manifest.srcFile 'src/baidu/AndroidManifest_baidu.xml'
            println sourceSets.main. manifest.srcFile

            println "----------------------------flavors_baidu_release--------------------------------------"
        }
    }

    task flavors_baidu_debug() {
        doFirst {
            println "----------------------------flavors_baidu_debug--------------------------------------" 
            sourceSets.main. manifest.srcFile 'src/main/AndroidManifest_baidu.xml'
            println sourceSets.main. manifest.srcFile

            println "----------------------------flavors_baidu_debug--------------------------------------"
        }
    }
    task flavors_360_release() {
        doFirst {
            println "----------------------------flavors_360_release--------------------------------------" 
            sourceSets.main. manifest.srcFile 'src/360/AndroidManifest_360.xml'

            println sourceSets.main. manifest.srcFile


            println "----------------------------flavors_360_release--------------------------------------"
        }
    }
    task flavors_360_debug() {
        doFirst {
            println "----------------------------flavors_360_debug--------------------------------------" 
            sourceSets.main. manifest.srcFile 'src/360/AndroidManifest_360.xml'

            println sourceSets.main. manifest.srcFile 
            println "----------------------------flavors_360_debug--------------------------------------"
        }
    }
}
  • OK 没了

© 著作权归作者所有

共有 人打赏支持
土渣渣
粉丝 1
博文 5
码字总数 4953
作品 0
深圳
程序员
私信 提问
两个项目功能高度相似,两份代码怎么同步?

1. 都是Android项目 2. 项目是公司产品,要长期维护 3. 包名不一样(因为有些第三方服务可能根据包名区分app,而不是applicationId) 先描述下情景: 项目A已做完,项目B启动跟进项目A,前期功能...

atearsan
2016/08/23
513
3
使用Gradle构建多版本app

资源文件个性化处理 res目录下的都算资源文件(layout、values、drawable、mipmap) 在build.gradle中定义productFlavors buildToolsVersion "24.0.2"defaultConfig {applicationId "com.atea......

atearsan
2016/09/19
24
2
Gradle实现Android多渠道定制化打包

最近在项目中遇到需要实现 Apk 多渠道、定制化打包, Google 、百度查找了一些资料,成功实现了上述功能,在此记录以备不时之需,温故而知新,可以为师矣~ 需求可以总结如下: 如何实现多个 ...

玄学酱
2017/08/03
0
0
使用gradle构建android项目(续)

在几个月之前,我已经写过一篇使用gradle构建android项目的博客了http://blog.isming.me/2014/05/20/android4gradle/,那篇文章已经介绍了如何使用gradle进行项目构建,以及为谷歌会推荐使用g...

码农明明
2014/11/21
0
12
Gradle - Manifest

Manifest DSL提供了配置以下Manifest条目的功能: minSdkVersion / targetSdkVersion / versionCode / versionName / applicationId / Instrumentation test runner android元素中的defaultCo......

老朱教授
2017/10/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jquery通过id显示隐藏

var $div3 = $('#div3'); 显示 $div3.show(); 隐藏 $div3.hide();

yan_liu
今天
3
0
《乱世佳人》读书笔记及相关感悟3900字

《乱世佳人》读书笔记及相关感悟3900字: 之前一直听「荔枝」,后来不知怎的转向了「喜马拉雅」,一听就是三年。上班的时候听房产,买房了以后听装修,兴之所至时听旅行,分手后听亲密关系,...

原创小博客
今天
3
0
大数据教程(9.6)map端join实现

上一篇文章讲了mapreduce配合实现join,本节博主将讲述在map端的join实现; 一、需求 实现两个“表”的join操作,其中一个表数据量小,一个表很大,这种场景在实际中非常常见,比如“订单日志...

em_aaron
今天
3
0
cookie与session详解

session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我们的会员卡才会获取优惠.这时...

士兵7
今天
3
0
十万个为什么之为什么大家都说dubbo

Dubbo是什么? 使用背景 dubbo为什么这么流行, 为什么大家都这么喜欢用dubbo; 通过了解分布式开发了解到, 为适应访问量暴增,业务拆分后, 子应用部署在多台服务器上,而多台服务器通过可以通过d...

尾生
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部