目前现已运用本方案成功上架了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静态资源多途径定制