Android开发——利用productFlavors实现一套代码打包多版本

一、需求背景

实际项目开发过程中,经常会遇到这样的场景:一个项目要根据需要打包成多个存在差异的版本,比如对外版本、对内版本,或者开发版本、测试版本、线上版本等等……那么如何通过维护一套代码的前提下实现打包多版本的需求呢?在Android Studio中我们可以使用productFlavors来实现这样的需求。

二、创建差异化版本目录结构

根据版本的差异化在src目录下创建对应的java文件夹,如下图:

创建external与internal版本,将版本差异化的代码文件放在这2个目录对应的文件夹下,具体的目录层次同main下面的一样即可;

三、配置gradle文件

在moudle的gradle配置文件中增加如下配置:

android {
  
  ……
  
    productFlavors {
        internal {
            manifestPlaceholders = [app_label:"对内app"]
            applicationId "com.ad.demo.internal"
        }
        external {
            manifestPlaceholders = [app_label:"对外app"]
            applicationId "com.ad.demo.external"
        }
    }
}

四、在代码中判断版本

如果有些逻辑需要在代码中判断版本,可以通过BuildConfig.FLAVOR去获取当前选择的是什么版本值:

if(BuildConfig.FLAVOR.equals("external")){
    textView.setText(getResources().getString(R.string.my_app_name) + "对外应用");
}

五、按版本打包

签名打包的时候,选择对应的版本即可

时间: 2024-08-22 21:16:11

Android开发——利用productFlavors实现一套代码打包多版本的相关文章

Android中利用ant进行多渠道循环批量打包

公司负责Android开发的小伙伴学习能力稍微偏弱,交代给他的自动化打包的任务,弄了好久依然没有成效.无奈只好亲自出手. 没有想到过程很顺利,我完全按照如下文章的步骤进行: 主要参考: Android中利用ant进行多渠道循环批量打包(一) Android中利用ant进行多渠道循环批量打包(二) 次要参考:?? Mac中用Ant实现Android的批量打包碰到的一些问题以及解决方法 Android Ant 批量多渠道打包实例.md [Android分享]?最新的Android Sdk 使用Ant

Android开发—利用FrameLayout实现图标中间显示文字

需求:实现日历功能中的天数,在一个图标中显示当前日期的天数 先上效果图: 关键xml布局文件: <FrameLayout         android:layout_width="wrap_content"         android:layout_height="fill_parent"         android:layout_margin="4dp" >            <ImageView        

Android开发--利用Matrix进行图片操作

今天和大家分享一下Android中Matrix的简单用法,Matrix其实就是一个3*3的矩阵,利用这个矩阵对图像操作.在Android中,为我们提供一些封装好的方法可以进行一些简单的图像操作,总共分为rotate(旋转),scale(缩放),translate(平移)和skew(倾斜)四种,每一种变换都提供了set, post和pre三种操作方式,除了translate,其他三种操作都可以指定中心点.其中post的方式是对原矩阵进行后乘,pre方式是对原矩阵进行前乘,另外,每一次通过set的方

Android开发笔记之《特斯拉-Tesla 代码分析》

反编译apk,查看目录结构: // Android库,不多解释android.support // HttpClient 4.1 repackaged for Android // http://www.findbestopensource.com/product/httpclientandroidlib ch.boye.httpclientandroidlib // 国内用百度地图 com.baidu.* vi.com.gdi.bgl.android.java // 谷歌的广告系统和移动服务系

Android开发技巧五-Mac下eclipse代码自动提示设置

网上找了一些设置的方法,但对于我的eclipse版本似乎都不太合适.终于自己找到了位置,在此记录一下,希望可以帮到有需要的朋友. 点击偏好设置: 在箭头所指输入框中输入键盘上所有字母或字符,点击Apply和OK即可! 喜欢的朋友可以关注我哦!多谢 欢迎转载.点赞! 版权声明:本文为博主原创文章,未经博主允许不得转载.

Android开发--仿景点通景区地图SurfaceView实现

最近在帮老师做一个项目,类似于景点通的App手机应用,我们是要精细化一些室内的地图,室内的地图采用的是自己的一套定位机制,所有室内地图也要自己来实现,参考了网上一些例子,考虑到效率的问题,最后决定使用SurfaceView来进行地图绘制,实现的功能有: 双击放大 多点触摸放大 地图拖拽 添加地图标记 效果图一张: 代码思路 1.处理缩放和拖拽事件 在这里我利用了Matrix类提供的图片操作方法去进行图片的缩放和平移处理,关于该方面的知识可以参考 Android开发–利用Matrix进行图片操作

【转】Android开发笔记(序)写在前面的目录

原文:http://blog.csdn.net/aqi00/article/details/50012511 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经验教训,与网友互相切磋,从而去芜存菁进一步提升自己的水平.因此博主就想,入门的东西咱就不写了,人不能老停留在入门上:其次是想拾缺补漏,写写虽然小众却又用得着的东西:另外就是想以实用为主,不求大而全,但求小而精:还有就是有的知识点是java的,只是Android开发也会经常遇上,所以蛮记下来.个人的经

Android开发环境搭建详细图解

所谓Android的开发环境,主要是以下两个组件,Android Software Developer Kit(Android软件开发工具包)和Eclipse(编辑器,提供很多方便功能)两大块,下面分别介绍他们的安装方法. 安装Eclipse 要安装Eclipse,首先要安装Java Developer Kit(JDK,Java开发者工具包)和Java Runtime Environment(JRE,Java运行时环境). 用ArchLinux自带的pacman包管理器进行安装: Shell代码

wemall app商城源码android开发MD5加密工具类

wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享android开发MD5加密工具类主要代码,供技术员参考学习. package com.gzcivil.utils; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgori