美文网首页
安卓多渠道配置之简易版

安卓多渠道配置之简易版

作者: 肥得流油 | 来源:发表于2023-08-16 11:26 被阅读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简介二者

    相关文章

      网友评论

          本文标题:安卓多渠道配置之简易版

          本文链接:https://www.haomeiwen.com/subject/plpkmdtx.html