目前现已运用本方案成功上架了goole playapp store,流程较长,后面可以合作脚本运用。脚本的编写不在本篇文章翻开,以机械式实操为主。
新鲜出炉:
Flutter多途径多资源终极解决方案之自动化打包
极简的本钱完结Flutter静态资源多途径定制

1、Flutter内途径装备

Flutter中的途径装备一般用于埋点统计
运用--dart-define 进行途径区别
打包时指令 flutter build apk --dart-define=CHANNEL=channelA
代码里获取途径
String _channelName = const String.fromEnvironment('CHANNEL', defaultValue: 'develop');

2、多资源装备

Android

在项目根目录/android/app/build.gradle下进行途径装备

...
android{
    ...
      // 装备途径对应appid,还支撑装备其他途径参数
    productFlavors {
        channelA{
            applicationId "com.example.channelA"
        }
        channelB{
            applicationId "com.example.channelB"
        }
    }
    ...
    //装备途径对应的安卓资源目录
    sourceSets {
        channelA.res.srcDirs 'src/main/res-channelA'
        channelB.res.srcDirs 'src/main/res-channelB'
    }
    ...
}
...

productFlavors还有buildConfigField manifestPlaceholders signingConfig等等装备,首要用于区别第三方SDK,装备途径装备参数,途径包签名等功能,这里不翻开~

在项目根目录/android/app/main/目录下装备发动页,图片,App称号等资源

装备App图标

Flutter多渠道多资源配置终极解决方案,看这篇就够了

运用Android studio翻开android目录,运用自带的图标生成工具生成,选中 res-channelA的文件夹右键 new -> Image Asset,选中对应途径即可自动生成

Flutter多渠道多资源配置终极解决方案,看这篇就够了

装备发动图,假如遇到背景图不显示,删去途径下的mipmap-anydpi-v26即可

Flutter多渠道多资源配置终极解决方案,看这篇就够了

装备App称号App图标
每个途径创立strings.xml文件,输入想要的App称号

Flutter多渠道多资源配置终极解决方案,看这篇就够了

以上装备在ChnnelB途径下也需求相同装备,文件名需求共同,可以在channelA复制曩昔后进行修正

最后装备AndroidManifest.xml清单文件即可。

Flutter多渠道多资源配置终极解决方案,看这篇就够了

此外还有依靠库分途径依靠,首要用来区别第三方依靠库。比方海外不需求推送sdk等需求
运用channelAImplementation到指定某依靠库只在某途径下导入。Implementation前是途径名。

Flutter多渠道多资源配置终极解决方案,看这篇就够了

至此Android多途径多资源装备现已完结。

接下来需求进行debug运转装备

Flutter多渠道多资源配置终极解决方案,看这篇就够了
Flutter多渠道多资源配置终极解决方案,看这篇就够了
channelB同理。装备完结后挑选对应的channelA 点击运转即可。

打包指令

apk
flutter build apk --flavor channelA --dart-define=CHANNEL=channelA
flutter build apk --flavor channelB --dart-define=CHANNEL=channelB
aab
flutter build appbundle --flavor channelA --dart-define=CHANNEL=channelA
flutter build appbundle --flavor channelB --dart-define=CHANNEL=channelB

IOS

因为Flutter build指令与ios target的冲突,每次运转Flutter build ios 都会使得ios项目target资源被清除。因此装备过程比较艰苦。但实测按照以下步骤应该是没有问题的。

安装XCode环境,懂得都懂~

运用XCode翻开ios项目,确保项目可以正常运转。

分发target,选中Runner,在右侧的TARGETS右键选中Duplicate

Flutter多渠道多资源配置终极解决方案,看这篇就够了

此时会生成Runner copy-Info.plist文件,为便利办理,主张重新命名
修正target的plist文件

Flutter多渠道多资源配置终极解决方案,看这篇就够了

装备图标,发动图,发动页面等资源,为了便利办理,非常主张按这种方式去寄存资源文件
新建文件夹channelA

Flutter多渠道多资源配置终极解决方案,看这篇就够了

Flutter多渠道多资源配置终极解决方案,看这篇就够了

在创立的Assets-ChannelALaunch Screen-ChannelA 文件中自定义该途径的App图标和发动页

Flutter多渠道多资源配置终极解决方案,看这篇就够了

Flutter多渠道多资源配置终极解决方案,看这篇就够了

Target与所创立的资源关联。
点击General,填写该Target的相关信息,点击Build Phases 挑选对应资源文件

Flutter多渠道多资源配置终极解决方案,看这篇就够了

Flutter多渠道多资源配置终极解决方案,看这篇就够了

Flutter多渠道多资源配置终极解决方案,看这篇就够了

channelB同理

增加scheme,为了我们能直接运转对应的Target

Flutter多渠道多资源配置终极解决方案,看这篇就够了

Flutter多渠道多资源配置终极解决方案,看这篇就够了

增加build scheme 挑选Runner info 依次为途径分发三个环境

Flutter多渠道多资源配置终极解决方案,看这篇就够了

Flutter多渠道多资源配置终极解决方案,看这篇就够了

增加target依靠库

翻开ios/Profile,增加对应target的依靠库。为防止flutter build时运转Pod install时导致target依靠库丢失

Flutter多渠道多资源配置终极解决方案,看这篇就够了

至此,ios多途径多资源装备结束。 挑选对应的channel运转试一下

Flutter多渠道多资源配置终极解决方案,看这篇就够了

ios打包
flutter build ios --release切换至release环境。避免上传TestFlight失利
flutter build ipa --flavor channelA 即可.\

目前为止,现已成功上架过几个项目到google playapp store

后期扩展,运用shell脚本+Jenkins打包。

新鲜出炉:
Flutter多途径多资源终极解决方案之自动化打包
极简的本钱完结Flutter静态资源多途径定制