Gradle productFlavors功能初体验

最近项目有个需求,项目分2个端,一个医生端,一个病人端,功能大概是医生端基本能覆盖病人端的功能,病人端会包含部分功能。

需满足能同时安装、且医生端横屏、病人端竖屏。

前一段时间复习了一下Gradle,所以想了下,Gradle可以轻松实现该需求。

最初想到的是 buildTypes,实际也可以实现,但后面看到 productFlavors更合适(ci/cd编译打包命令不需要修改)。

于是加了两个flavors

productFlavors{
    doctor{
          applicationId "com.lerous.test" //这个可不配置,默认同AndroidManifest.xml中app
    }

    patient{
          applicationId "com.lerous.test.patient"
    }
}

最开始是在代码中判断是哪一个flavors,然后动态设置横竖屏,但是这样会有个切换动作,体验不太好,

于是想到配置源集,在源文件src目录下,加一个跟main并列的patient文件夹,这样可以加一个AndroidManifest.xml

可以选择替换你想替换的属性,比如应用名称,横竖屏配置,实例如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.lerous.test">

    <application
        android:name=".app.MainApplication"
        android:label="@string/patient_app_name"
        tools:replace="android:label"
        tools:ignore="AllowBackup">
        <activity
            android:name=".app.main.MainActivity"
            android:screenOrientation="portrait"
            tools:replace="android:screenOrientation" />
        <activity
            android:name=".app.auth.LoginActivity"
            android:screenOrientation="portrait"
            tools:replace="android:screenOrientation" />

        <activity
            android:name=".app.splash.SplashActivity"
            android:screenOrientation="portrait"
            tools:replace="android:screenOrientation" />
    </application>

</manifest>

然后测试运行的时候,可以打开BuildVariants,可以选择要运行哪个版本。

另外ci/cd持续集成里面,assembleRelease指令会自动打2个release包。

运行效果不错!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值