flutter 多渠道打包
时间: 2023-07-09 14:18:03 浏览: 179
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`文件中指定的属性名一致。
- 打包时需要分别运行不同渠道的打包命令。
阅读全文