安卓多渠道配置之简易版

2023-08-16  本文已影响0人  肥得流油

以前很少使用到多渠道,因为做的APP也不会发布到应用市场(太乐色了)因此也没遇到需要多渠道的场景。
现在是因为有个APP需要分为两个不同的功能,但是彼此之间有存在很强的相似度。因此没有必要维护两个应用。才想起来可以试试多渠道。
先简单的梳理一下:
多渠道也就是多环境,大部分时候一般我们可以使用debug、或者release包来区分不同的环境,其中不同环境指的是不同的网络请求地址,不同的混淆策略,不同的签名等。
但是很多时候我们需要更多不同的信息,比如不同的包名、不同的版本、不同的应用图标、应用名称、不同的资源文件等。

1.配置多渠道

android {
    productFlavors{
        newVersion{//新版本
            applicationId rootProject.ext.appConfig.newAppId
            resValue "string", "monitor_app_name", "新版抓包助手"
            manifestPlaceholders=[APP_NAME:"新版测试软件"]
            versionName "1.0.2"
        }

        oldVersion {//旧版本
            applicationId rootProject.ext.appConfig.oldAppId
            resValue "string", "monitor_app_name", "旧版抓包助手"
            manifestPlaceholders=[APP_NAME:"旧版测试软件"]
            versionName "1.0.0"
        }

    }
    defaultConfig {
        applicationId "${applicationId}"
          //必须写一个共同的flavorDimensions ,gradle 3.0以后,否则会报错
        flavorDimensions "versionCode==1.0.0"
    }
  //不同渠道不同资源文件配置
  sourceSets{
      newVersion.res.srcDirs 'src/main/res-new'
      newVersion.res.srcDirs 'src/main/res-old'
  }
|

在gradle配置文件中增加了上述配置之后,就让应用拥有了两个不同的环境。在打包的时候,可以直接去选择打哪种包。
也可以通过 右侧的gradle ->Tasks->build->assemble 命令来一件同时生成两个环境下的debug和release的apk安装包。


assemeble

2.设置多环境资源

在配置完多环境之后,根据不同的环境,需要动态的使用不同的资源,比如app的名字动态的变化
需要获取manifestPlaceholders 中已经配置好的字段名称,这里我们使用的是APP_NAME;
在AndroidManifest 中 新增资源的引用:

<meta-data android:name="APP_NAME" android:value="${APP_NAME}"/>
 <application
        android:allowBackup="false"
        android:icon="@mipmap/icon_1"
        android:label="${APP_NAME}" 
        android:supportsRtl="true"
        tools:replace="android:label,android:allowBackup"
        android:theme="@style/activityTransTheme">
        <activity
            android:name=".SplashActivity"
            android:theme="@style/activityTheme"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

此时再重新构建应用时,就会更具你所选择的构建环境动态的变化资源了。

3.多环境构建的简单使用

在完成上述的操作之后,我们再调试中,需要将软件安装到设备中,就不能直接使用 绿色三角直接运行了


运行

而是应该在右侧的gradle ->Tasks->install->installxxDebug(installxxRelease)


install

4.根据多环境配置,动态的使用不同代码

在第一步骤配置中,我们使用了 newVersion、oldVersion 来表示不同环境的名称。
那么在代码中,可以通过BuildConfig.FLAVOR 来获取当前环境的名称。

if(BuildConfig.FLAVOR=="newVersion"){
  //TODO 做新版本的变更
}
if(BuildConfig.FLAVOR=="oldVersion"){
  //TODO 维持旧版本操作
}

上述只是使用了一些简单的多渠道多环境的配置操作,实际在使用中应该会使用一些比较成熟的多渠道打包方案,例如美团的 Walle、腾讯的 VasDolly简介二者

上一篇下一篇

猜你喜欢

热点阅读