美文网首页
Android多渠道打包

Android多渠道打包

作者: GameProgramer | 来源:发表于2023-08-28 11:38 被阅读0次

    什么是多渠道打包

    在不同的应用市场可能有不同的统计需求,需要为每个应用市场发布一个安装包,这里就引出了Android的多渠道打包。在安装包中添加不同的标识、资源、图标等,以此区分各个渠道,方便统计app在市场的各种数据。

    多渠道打包大体可分为以下步骤:

    • 配置gradle文件
    • 配置AndroidManifest.xml
    • 更新资源文件
    • 生成APK

    配置gradle文件

    编辑rootProject/app/build.gradle

    android {
      defaultConfig {
        flavorDimensions "versionCode"
      }
      // 多应用打包
      productFlavors {
          // 默认
          main {
              manifestPlaceholders = [app_name:"默认名称",app_icon:"@mipmap/ic_launcher"]
              applicationId "com.example.test.main"
              // 设置 resValue 环境变量
              resValue("string","product_value","main")
          }
    
          app1 {
              manifestPlaceholders = [app_name:"名称1",app_icon:"@mipmap/ic_launcher1"]
              applicationId "com.example.test.app1"
              resValue("string","product_value","app1");
          }
    
          app2 {
              manifestPlaceholders = [app_name:"名称2",app_icon:"@mipmap/ic_launcher2"]
              applicationId "com.example.test.app2"
              resValue("string","product_value","app2")
          }
      }
    

    配置AndroidManifest.xml

    配置AndroidManifest.xml部分元素为可替换,如icon、label、包名相关

    <application
      android:icon="${app_icon}"
      android:label="${app_name}">
      <provider
          android:name="androidx.core.content.FileProvider"
          android:authorities="${applicationId}.fileProvider"
          android:exported="false"
          android:grantUriPermissions="true">
          <meta-data
              android:name="android.support.FILE_PROVIDER_PATHS"
              android:resource="@xml/file_paths"/>
      </provider>
    </application>
    

    更新资源文件

    导入gradle配置所需资源文件如图片等,即上述mipmap/ic_launcher1mipmap/ic_launcher2

    生成APK

    Build -> Generate Signed Bundle or APK -> APK -> 选择多个多渠道包 -> Finish

    至此多渠道打包完成,代码中可轻松获取资源、版本数据等

    // 获取 resValue
    String productValue = getResources().getString(R.string.product_value);
    
    // 判断版本渠道
    if(BuildConfig.FLAVOR.equals("main")) {
      // ...
    }
    

    相关文章

      网友评论

          本文标题:Android多渠道打包

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