Android项目如何将同一套代码应用于多个项目(变种打包)

news2024/11/23 15:43:02

如果你的公司开发了一个项目,但是这个项目应用于不同的客户,根据客户的不同要求,会改动一些东西,之前我们的做法是直接将这套代码复制出来,替换logo,applicationId,以及一些基本配置(如baseurl,等配置),简单是不是,换换图片一个app就开发完了,然而问题还在后面,

测试姐姐提出项目A有一个bug,完了我改了这个项目的bug,那其他项目改不改呢,答案还是得改,浪费青春从现在开始,,,,,你得把复制出来的项目一一手动改掉,然后再一一重新上架。妈的。这么复杂,直接吐血。其实之前我们也试过svn也有在一定程度上减少了工作量,但是还是不尽人意,其实,AS本身就给我们提供了一种简单的方法,废话少说,看下面

一、配置app.gradle区分不同项目

我们打开一个项目,查看app.gradle文件在android节点添加

//区分不同项目的
    productFlavors{
        //攀枝花项目
        coupon_pzh{
            applicationId "com.daqsoft.android.pzhcoupon"
        }

        //乌鲁木齐项目
        coupon_wlmq{
            applicationId "com.daqsoft.android.wlmqcoupon"
        }
    }

上面作用就是在当你选择不同类型项目的资源配置文件的时候(怎么选看后面)app会自动去寻找相应的文件进行加载,附带完整版app.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.daqsoft.android.pzhcoupon"
        minSdkVersion 14
        targetSdkVersion 14
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }

    //区分不同项目的
    productFlavors{
        //攀枝花项目
        coupon_pzh{
            applicationId "com.daqsoft.android.pzhcoupon"
        }

        //乌鲁木齐项目
        coupon_wlmq{
            applicationId "com.daqsoft.android.wlmqcoupon"
        }
    }

}

dependencies {
    compile project(':zskuangjia')
    ...
}

你如果还要做成其他项目请在上面productFlavors节点添加就是。

注意如果你的项目有如下请删除,(不知道为什么,反正就是要删除)

signingConfigs {
        debug {
            storeFile file("pzhcoupon.jks")
            storePassword "daqsoft"
            keyAlias "daqsoft"
            keyPassword "daqsoft"
        }
        release {
            storeFile file("pzhcoupon.jks")
            storePassword "daqsoft"
            keyAlias "daqsoft"
            keyPassword "daqsoft"
        }
    }

好上面已经完成了大部分工作了,接下来我们开始提需求了哈,将这个项目改成另外一个项目,要求替换项目的根地址,logo,及一些配置,步骤如下

二、替换步骤

1、建立项目文件夹

首先我们得建立app的src目录下与main同级的项目如下,然后分别建立java和res文件

修改改文字

我们建立了不同项目的文件夹,要想让app_name不同,需要在对应的项目res的strings下如图添加名称

三个文件都叫app_name,当选择不同项目时会自动加载不同的app_name,图片类似

 <string name="app_name">优惠奖励申报 </string>

怎么创建常量

在项目中我们会存在不同项目用不同的请求地址,那这个配置文件写在哪里呢 ,我们建立了三个文件夹,请看结构

我们就创建了config类,在不同的项目文件写不同的配置文件,注意名字都要一样,

选择运行

当一切配置好后,我们开始选择运行如图选择运行的项目

打包

当我们选择了具体的项目后就是打包了

如图

后续需求待续。。。。

转自:https://blog.csdn.net/Tomasyb/article/details/78871456

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/360802.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue3.2中使用swiper缩略图轮播教程

介绍 在vue3 中使用 swiper 实现缩略图的轮播图效果,具体如下图所示: 使用 切换到项目终端 ,输入命令 npm install swiper --save , 进行安装在 main.js里,引入 swiper.css并使用,具体代码如下;import {createApp } from vue import App from ./App.vue import router…

微信公众号抽奖怎么做_分享微信抽奖小程序制作的好处

在H5游戏中&#xff0c;抽奖是最受消费者喜爱的模式之一。将H5微信抽奖活动结合到营销中&#xff0c;可以带来意想不到的效果&#xff0c;带流量和曝光率&#xff0c;所以许多企业也会在做活动时添加上不同类型的H5微信抽奖活动。编辑那么&#xff0c;新手怎么搭建微信抽奖活动…

前端二面react面试题集锦

react diff 算法 我们知道React会维护两个虚拟DOM&#xff0c;那么是如何来比较&#xff0c;如何来判断&#xff0c;做出最优的解呢&#xff1f;这就用到了diff算法 diff算法的作用 计算出Virtual DOM中真正变化的部分&#xff0c;并只针对该部分进行原生DOM操作&#xff0c;而…

学成在线项目笔记

业务层开发 DAO开发示例 生成实体类对应的mapper和xml文件 定义MybatisPlusConfig&#xff0c;用于扫描mapper和配置分页拦截器 MapperScan("com.xuecheng.content.mapper") Configuration public class MybatisPlusConfig {Beanpublic MybatisPlusInterceptor myb…

Datawhale团队第九期录取名单!

Datawhale团队 公示&#xff1a;Datawhale团队成员Datawhale成立四年了&#xff0c;从一开始的12个人&#xff0c;学习互助&#xff0c;到提议成立开源组织&#xff0c;做更多开源的事情&#xff0c;帮助更多学习者&#xff0c;也促使我们更好地成长。于是有了我们的使命&#…

【Spring Boot 原理分析】- 自动配置

【Spring Boot 原理分析】- 自动配置 Condition 注解 Condition 是 Spring 4.0 增加的条件判断功能&#xff0c;通过这个功能可以实现选择的创建 Bean 操作 &#x1f451; 我们在使用 Spring 的时候&#xff0c;只需导入某个依赖的坐标&#xff0c;就可以直接通过 Autwired 注…

零基础小白如何学会数据分析?

随着数字经济、大数据时代的发展&#xff0c;数据已然成为当下时代最重要的盈利资源&#xff0c;让企业在做决策和计划方案时更有针对性和依据&#xff0c;能提前预测市场发展方向&#xff0c;做好布局。由此而产生的数据分析岗位也逐渐被更多企业重视&#xff0c;特别是中大型…

社招中级前端笔试面试题总结

HTTP世界全览 互联网上绝大部分资源都使用 HTTP 协议传输&#xff1b;浏览器是 HTTP 协议里的请求方&#xff0c;即 User Agent&#xff1b;服务器是 HTTP 协议里的应答方&#xff0c;常用的有 Apache 和 Nginx&#xff1b;CDN 位于浏览器和服务器之间&#xff0c;主要起到缓存…

Notion AI是什么?和chatgpt比哪个好?

最近对于人工智能的热度可谓是前所未有的高涨&#xff0c;毕竟现在的人工智能发展是越来越快&#xff0c;能做的事情也是越来越多&#xff0c;不再是那种低等的假智能小爱同学和siri那种。今天我们主要来聊聊Notion AI和chatgpt吧&#xff0c;Notion AI是什么&#xff1f;和cha…

leaflet 删除所有的marker图层,保留其他图层(085)

第085个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet项目中清除所有的marker图层,保留其他图层,详情请参考源代码。这里面主要用到了(layer instanceof L.Marker ,注意 L.Marker中Marker首字母要大写。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行…

【5000左右电脑配置清单】预算不高于5000,不带显示器的电脑配置清单推荐

由于本人是学生党经济有限&#xff0c;预算不高于5000元配一套电脑主机&#xff0c;说实话5000左右的电脑配置已经很好了&#xff0c;今天站长整理了几款配置给大家参考参考&#xff0c;更多电脑配置还请继续关注西安SEO优化站点&#xff01; 配置1&#xff1a; <CPU> I5…

Kafka 介绍和使用

文章目录前言1、Kafka 系统架构1.1、Producer 生产者1.2、Consumer 消费者1.3、Consumer Group 消费者群组1.4、Topic 主题1.5、Partition 分区1.6、Log 日志存储1.7、Broker 服务器1.8、Offset 偏移量1.9、Replication 副本1.10、Zookeeper2、Kafka 环境搭建2.1、下载 Kafka2.…

Django使用jinja2模板

Django使用jinja2模板 jinja2介绍 Jinja2&#xff1a;是 Python 下一个被广泛应用的模板引擎&#xff0c;是由Python实现的模板语言&#xff0c;他的设计思想来源于 Django 的模板引擎&#xff0c;并扩展了其语法和一系列强大的功能&#xff0c;尤其是Flask框架内置的模板语言…

易基因|RRBS单碱基绘制580种动物的基因组规模DNA甲基化谱:Nature子刊

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。2023年01月16日&#xff0c;奥地利科学院分子医学研究中心(CeMM)研究团队在《Nat Commun》杂志发表了题为“Comparative analysis of genome-scale, base-resolution DNA methylation prof…

带你彻底了解浮点型数据的存储

&#x1f680;&#x1f680;&#x1f680;大家觉不错的话&#xff0c;就恳求大家点点关注&#xff0c;点点小爱心&#xff0c;指点指点&#x1f680;&#x1f680;&#x1f680; 目录 &#x1f430;浮点型在内存的存储 &#x1f914;提示&#xff1a;数据类型的存储范围 &a…

定位于企业数字化底座,开箱可用(spring cloud+Vue)基础框架,赶紧收藏!

项目介绍&#xff1a;JVS是什么&#xff1f;JVS是企业级应用构建的基础脚手架&#xff0c;提供开箱即用的基础功能集成&#xff0c;其中集成了账户管理、租户管理、用户权限体系、三方登录、环境配置、各种业务日志等功能&#xff0c;还提供了对接低代码、数据中台的能力。JVS能…

vs code 远程连接服务器并debug (python)

文章目录1. 正常官网下载vs code2. 使用remote SSH extension3. 连接远程服务器 &#xff08;launch.json&#xff09;launch.json、setting.json、task.json4、给调试传参数查看中间变量 VARIABLES1. 正常官网下载vs code 2. 使用remote SSH extension 3. 连接远程服务器 &am…

【Fastdfs】| 入门连续剧——安装

作者&#xff1a;狮子也疯狂 专栏&#xff1a;《spring开发》 坚持做好每一步&#xff0c;幸运之神自然会降临在你的身上 目录一. &#x1f981; 前言Ⅰ. &#x1f407; 为什么要使用分布式文件系统&#xff1f;1.1 单机系统 vs 独立文件服务器1.2 分布式文件系统1.3 FastDFS引…

06- OpenCV查找图像轮廓 (OpenCV基础) (机器视觉)

知识重点 灰度图转换: gray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)二值化: 返回两个东西&#xff0c;一个阈值&#xff0c; 一个是二值化的图: thresh, binary cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY)查找轮廓: 返回两个结果&#xff0c;分别是轮廓和层级: c…

微软应用商店错误代码0x80072EFD怎么办?(已解决)

有用户在使用Win11电脑系统的时候&#xff0c;想要在应用商店里面去进行软件的下载。但是在下载的过程中&#xff0c;开启应用商店却无法进行软件下载&#xff0c;出现了错误代码0x80072EFD。那么这个问题怎么去进行解决呢&#xff1f;一起来看看以下的解决方法分享吧。 微软应…