flutter 多渠道打包 不同环境不同包名 product flavors flavorDimensions

本文介绍了在Flutter中如何进行多渠道打包,解决在不同环境中使用不同包名的问题。针对遇到的'All flavors must now belong to a named flavor dimension.'错误,提供了解决方案,并详细讲解了在android/app/build.gradle文件中配置product flavors和flavorDimensions的方法。通过加入特定代码,成功实现了根据--flavor选项选择打包渠道,并完成了包名的修改。
摘要由CSDN通过智能技术生成

问题:

All flavors must now belong to a named flavor dimension.

所有口味现在必须属于一个命名的风味维度。

解决参考 如下:

    flavorDimensions('flavorDimensions1', 'flavorDimensions2')
    productFlavors  {
        version1 {
            dimension 'flavorDimensions1'
            applicationId "com.company.version1"
            resValue "string", "app_name", "version1"
            manifestPlaceholders = [CHANNEL_VALUE: "version1"
                                    ,app_icon   : "@mipmap/ic_launcher"]
        }
        version2 {
            dimension 'flavorDimensions2'
            applicationId "com.company.version2"
            resValue "string", "app_name", "version2"
            manifestPlaceholders = [CHANNEL_VALUE: "version2",
                                    app_icon   : "@mipmap/ic_launcher
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Flutter支持在不同的渠道上进行打包,可以根据不同的渠道配置不同的应用包。下面是实现Flutter多渠道打包的步骤: 1. 在Flutter项目根目录下的`android/app`目录下创建一个名为`channel`的文件夹,用于存放不同渠道的配置文件。 2. 在`channel`文件夹下创建不同渠道的配置文件,例如`channel/dev.properties`、`channel/prod.properties`等。配置文件的内容可以包括应用包名、应用名称、应用图标、应用版本号等信息。例如: ``` # dev.properties # 应用包名 package_name=com.example.dev # 应用名称 app_name=dev_app # 应用图标 app_icon=dev_icon # 应用版本号 app_version=1.0.0 ``` 3. 在`android/app/build.gradle`文件中添加如下配置: ``` android { // ... defaultConfig { // ... //应用包名 applicationId "com.example.app" //应用名称 manifestPlaceholders = [ appName: "My App" ] //应用版本号 versionCode 1 versionName "1.0.0" // ... } // ... buildTypes { release { // ... //在release模式下,根据不同渠道打包 applicationVariants.all { variant -> variant.outputs.all { def outputFile = outputFileName if (outputFile.endsWith('.apk') || outputFile.endsWith('.aab')) { def fileName = outputFile.replace(".${outputFile.split("\\.").last()}", "") def channelPropertiesFile = file("channel/${variant.flavorName}.properties") if (channelPropertiesFile.exists()) { def channelProperties = new Properties() channelProperties.load(new FileInputStream(channelPropertiesFile)) outputFileName = "${fileName}_${channelProperties.getProperty("app_version")}_${channelProperties.getProperty("app_name")}.apk" output.outputFileName = outputFileName manifestPlaceholders = [ appName: channelProperties.getProperty("app_name"), appIcon: channelProperties.getProperty("app_icon") ] } } } } } } } ``` 4. 在Flutter项目根目录下运行以下命令,生成不同渠道的应用包: ``` flutter build apk --flavor dev flutter build apk --flavor prod ``` 其中,`--flavor`参数指定了打包时所使用的渠道配置文件。 5. 打包完成后,在`build\app\outputs\flutter-apk`目录下可以看到生成的不同渠道的应用包。 注意事项: - 渠道名称需要与`buildTypes`中的名称一致。 - 配置文件中的属性名需要与`build.gradle`文件中指定的属性名一致。 - 打包时需要分别运行不同渠道的打包命令。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yue31313

感谢打赏,继续分享,给您帮忙。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值