目前现已运用本方案成功上架了goole play和app 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图标
运用Android studio翻开android目录,运用自带的图标生成工具生成,选中 res-channelA的文件夹右键 new -> Image Asset,选中对应途径即可自动生成
装备发动图,假如遇到背景图不显示,删去途径下的mipmap-anydpi-v26即可
装备App称号和App图标
每个途径创立strings.xml文件,输入想要的App称号
以上装备在ChnnelB途径下也需求相同装备,文件名需求共同,可以在channelA复制曩昔后进行修正
最后装备AndroidManifest.xml清单文件即可。
此外还有依靠库分途径依靠,首要用来区别第三方依靠库。比方海外不需求推送sdk等需求
运用channelAImplementation到指定某依靠库只在某途径下导入。Implementation前是途径名。
至此Android多途径多资源装备现已完结。
接下来需求进行debug运转装备


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

装备图标,发动图,发动页面等资源,为了便利办理,非常主张按这种方式去寄存资源文件
新建文件夹channelA
在创立的Assets-ChannelA和Launch Screen-ChannelA 文件中自定义该途径的App图标和发动页
将Target与所创立的资源关联。
点击General,填写该Target的相关信息,点击Build Phases 挑选对应资源文件
channelB同理
增加scheme,为了我们能直接运转对应的Target
增加build scheme
挑选Runner info 依次为途径分发三个环境
增加target依靠库
翻开ios/Profile,增加对应target的依靠库。为防止flutter build时运转Pod install时导致target依靠库丢失
至此,ios多途径多资源装备结束。 挑选对应的channel运转试一下
ios打包flutter build ios --release切换至release环境。避免上传TestFlight失利flutter build ipa --flavor channelA 即可.\
目前为止,现已成功上架过几个项目到google play 和app store。
后期扩展,运用shell脚本+Jenkins打包。
新鲜出炉:
Flutter多途径多资源终极解决方案之自动化打包
极简的本钱完结Flutter静态资源多途径定制




















