type
status
date
slug
summary
tags
category
icon
password

前言

记得之前做过一个电梯的项目,分为监管端和客户端。两端的数据基本相同,仅仅是页面的布局和文字信息不同。当初为了省事在代码里控制了不同角色使用不同的文字和布局,现在想来耦合度很高,很不利于以后的维护。今天在《巧用gradle构建Android应用》的书中看到了,使用gradle来构建不同的变种来解决一个项目不同的体现效果。

官方文档的讲解

开工

假如项目需要构建A,B,C这个不同风格的App。A端是监管端,B端是商家端,C端是用户端。使用gradle的DSL里的productFlavors来为三个不同的App进行配置
或者使用applicationIdSuffix来简化applicationId,这样最后生成的applicationId就是applicationId + applicationIdSuffix
 
有了App的ApplicaiotnId以后,设置每个端的布局和文字,甚至代码。首先按照下图新建文件夹。
notion image
当创建完以后会发现类似a和c文件夹的情况,都是灰色的,和main的目录文件夹图片不一样。好像只是普通的文件夹,怎么可能生成Apk呢。接下来看下图的操作。点击AS左侧的
Build Varinat
,然后在
Build Variant
的面板里选择。当选择a的时候,a的目录就变成了和main目录一样的文件夹图片了。
notion image
接下来就是让app变种的时候了。在a,b,c文件夹下的res下创建 values/string.xml的文件,(和main/res/values/string.xml一样),新建一个名叫title_name的string。
a/res/values/string.xml
b/res/values/string.xml
c/res/values/string.xml
然后在
main/res/layout/activity_main.xml中引用@string/title_name
,最后切换Build Variants中的a,b,c,当构建的时候,会发现布局文件里的文本已经发生了变化。
notion image
notion image
notion image
到这里基本的变种算是实现了,但是我们会开发版的经常碰到最低版本号多少合适的问题。试想一下,现在的手机更新换代这么快,如果是直播类的app那么使用的群体必然是80年以后的人了,手机的更新程度也应该是比较快的,所以直播类的app,一般都会把最低版本设置在5.0,或者4.4。而对于有些商家来说,只要手机能打电话,发短信,微信,日常的基本使用就行了,一般两到三年才会换手机,甚至需要更久的时间,那么,我们在设置最低版本的时候,设置在4.0,是比较合适。那么现在对a,b两个变种使用最低4.0的版本,c变种使用5.0的最低版本。
当gradle同步完以后,会发现在Build Variant里会发现变的更丰富了。
notion image
。那么现在可以在一个设备上安装不同类型的app了。
Android增量更新从入坑到成功使用Android Things开发简单的智(diǎo)能(sī)台灯