Android 多渠道打包

在Android开发中,多渠道打包是一种常见的需求,它可以帮助开发者追踪应用在不同渠道上的安装和使用情况。以下是一个使用Gradle的多渠道打包示例:

首先,在项目的build.gradle文件中配置flavors:


android {
  ...
  productFlavors {
      googleplay {}
      baidu {}
      xiaomi {}
      // 添加更多的 flavors 根据需要
  }
}

然后,在gradle.properties文件中添加多渠道配置:

# 默认渠道
CHANNEL=googleplay
 
# 或者在命令行中设置渠道
# CHANNEL=baidu
# CHANNEL=xiaomi

接下来,在build.gradle中使用CHANNEL属性来为每个flavor指定渠道名称:

def getTime() {
    return new Date().format("yyyyMMdd_HHmm", TimeZone.getDefault())
}

android {
    ...
    productFlavors {
        googleplay {
            manifestPlaceholders = [channelId: "googleplay"]
        }
        baidu {
            manifestPlaceholders = [channelId: "baidu"]
        }
        xiaomi {
            manifestPlaceholders = [channelId: "xiaomi"]
        }
    }


    applicationVariants.all { variant ->
        variant.outputs.all { output ->
            def outputFile = output.outputFile
            if (outputFile != null && outputFile.name.endsWith('.apk')) {
                // 输出apk名称为app_v1.0_20240805_1023_xiaomi.apk
                def fileName = "app_v${defaultConfig.versionName}_${getTime()}_${variant.productFlavors[0].name}.apk"
                outputFileName = fileName
            }
        }
    }
}

最后,在AndroidManifest.xml中使用${channelId}占位符来设置渠道特定的信息:

<meta-data android:name="CHANNEL" android:value="${channelId}" />

现在,你可以在终端或命令行使用以下命令来构建特定渠道的APK:(备注这部分我还没试,明天再试试执行一下)

./gradlew assembleGoogleplay
./gradlew assembleBaidu
./gradlew assembleXiaomi

或者,如果你在gradle.properties中设置了CHANNEL属性,只需运行以下命令即可:

./gradlew assemble

这将根据CHANNEL属性中定义的渠道来构建APK。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容