【ProductFlavors】Android差异化打包productFlavors ( 一套代码生成两个APK)

有些时候,因为业务扩展,需要两个相同的app,通过分支管理,两套代码当然ok,但是这样后期维护,BUG修复总不能两套代码同时修改吧,这里推荐使用productFlavors差异化打包,一套代码生成两个APK

一、Flavor创建

在APP中build.gradle文件中的一段代码:
这里写图片描述

android {
    ...
    }


    //差异化打包
    productFlavors {
        project1 {
            applicationId "com.android.app1"
            versionCode 120
            versionName "1.2.0"
            manifestPlaceholders = [label: "APP1", icon: "@mipmap/icon_1",key:"11111"]

        }
        project2 {
            applicationId "com.android.app2"
            versionCode 100
            versionName "1.0.0"
            manifestPlaceholders = [label: "APP2", icon: "@mipmap/icon_2",push_key:"22222"]
        }
    }


    buildTypes {
    ...
    }

二、添加相应目录

这里写图片描述

三、Manifest中的操作(主要是引用的一些第三方操作)

1、图标、APP命更换

  <application
        android:name=".base.ElephantApplication"
        android:allowBackup="true"
        android:icon="${icon}"  //引用前面定义好的icon
        android:label="${label}"//引用前面定义好的APP名字
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

2、对于一些第三方工具如推送,包名 key的更换

 <service
            android:name="cn.jpush.android.service.DaemonService"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="cn.jpush.android.intent.DaemonService" />

                <category android:name="${applicationId}" />//引用前面定好的包名
            </intent-filter>
        </service>
 <meta-data
            android:name="JPUSH_CHANNEL"
            android:value="developer-default" />
        <meta-data
            android:name="JPUSH_APPKEY"
            android:value="${key}" /> //引用前面定好的key

四、一些资源的更换

在对应的目录下,放置相同名字的资源文件,打包的时候,会自动匹配该目录下的资源文件,对于一些公用的图片不用处理

这里写图片描述

这里写图片描述

对于一些颜色的修改、布局的修改,都可以用同一种方法(不同包下的同名文件)

五、代码动态控制展示

if (BuildConfig.FLAVOR.equals("project1")) {
       //当flavors是project1 的时候,需要做的处理,比如设置某个布局的隐藏之类的    
    } else if (BuildConfig.FLAVOR.equals("project2")) {
	 //当flavors是project2 的时候,需要做的处理
    }

六、打包或者AS调试

1、as调试
这里写图片描述
在这里可以选择,你要调试的包,然后进行运行测试

2、打包

这里写图片描述

七、大功告成

如果错误或者不对的地方,多多指教纠正

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值