在开发中碰到的一些问题,记录下来,希望能对各位朋友有些帮助
主要是android多渠道相关的问题当做记录
普通打包命令
flutter build apk (默认是打release)
也可以指定
flutter build apk --debug
flutter build apk --release
在android原生中打包也是一样,区别就是android原生打出来的包体积会稍微小一点,因为x86里面没有存放.so文件
配置过多渠道之后的打包命令
debug包
flutter build apk --flavor oppo --debug
release包
flutter build apk --flavor oppo
然后就是自定义apk名字的相关问题
在flutter 1.9.1+hotfix6的时候自定义apk名字还会报错,具体哪一个版本修复了这个问题也没太注意,我项目现在的配置是
Flutter (Channel stable, v1.12.13+hotfix.8, on Microsoft Windows [Version 10.0.17763.1158], locale zh-CN)
• Flutter version 1.12.13+hotfix.8 at D:\flutter
• Framework revision 0b8abb4724 (3 months ago), 2020-02-11 11:44:36 -0800
• Engine revision e1e6ced81d
• Dart version 2.7.0
[√] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
• Android SDK at D:\android_sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-29, build-tools 29.0.2
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b04)
• All Android licenses accepted.
[√] Android Studio (version 3.6)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin version 45.1.1
• Dart plugin version 192.7761
• Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b04)
主要是基于以上配置所出现的问题进行记录
自定义apk包名的方法自行百度,这里只是记录问题
debug版本的apk不建议进行自定义apk包名,不然的话运行app会得到
Gradle build failed to produce an .apk file. It's likely that this file was generated under E:\android_svn\flutter_xxx\build, but the tool couldn't find it.
Gradle构建无法生成.apk文件。 该文件可能是在E:\ android_svn \ flutter_xxx \ build下生成的,但是该工具找不到它。
虽然运行成功输出路径下也有apk文件,但是因为自定义包名了,工具找不到app-debug.apk所以运行不起来,所以建议判断一下variant.buildType.name 为release的时候在自定义包名。
接下来是android配置多渠道相关,
如果配置完多渠道构建失败报下面的错误,
ERROR: All flavors must now belong to a named flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html
Affected Modules: app
需要在app\build.gradle下面的android里面或者defaultConfig里面添加
flavorDimensions "(你定义的维度)"
如果你只是想不让他们报错,而并没有用到这个属性,可以给一个默认的,如下面
flavorDimensions "default"
在你应用商店的配置里面添加上这个维度属性
如:
xiaomi {
dimension "default"
manifestPlaceholders = [MTA_CHANNEL_VALUE: "小米应用商店"]
}
huawei {
dimension "default"
manifestPlaceholders = [MTA_CHANNEL_VALUE: "华为应用市场"]
}

配置完多渠道之后的问题
如果运行不做处理,虽然能生成apk文件,但是会运行失败,而且每次运行都会运行你所有的渠道,
如:
我的产品渠道如下
productFlavors {
baidu {
dimension "default"
manifestPlaceholders = [MTA_CHANNEL_VALUE: "百度手机助手"]
}
xiaomi {
dimension "default"
manifestPlaceholders = [MTA_CHANNEL_VALUE: "小米应用商店"]
}
huawei {
dimension "default"
manifestPlaceholders = [MTA_CHANNEL_VALUE: "华为应用市场"]
}
yingyongbao {
dimension "default"
manifestPlaceholders = [MTA_CHANNEL_VALUE: "腾讯应用宝"]
}
_360 {
dimension "default"
manifestPlaceholders = [MTA_CHANNEL_VALUE: "360手机助手"]
}
oppo {
dimension "default"
manifestPlaceholders = [MTA_CHANNEL_VALUE: "OPPO软件商店"]
}
vivo {
dimension "default"
manifestPlaceholders = [MTA_CHANNEL_VALUE: "VIVO应用商店"]
}
}
运行之后会把所有的渠道包都运行出来,生成的apk输出就是app-xiaomi-debug.apk,类似这种,这样会报

Finished with error: Gradle build failed to produce an .apk file. It's likely that this file was generated under E:\android_svn\flutter_xxx\build, but the tool couldn't find it.
找不到可以运行的apk,
解决办法
在命令行指定你所要运行的渠道包
方法1:
flutter run --flavor xiaomi -t lib/main.dart
方法2:
去修改一下运行配置,然后选中你自己的配置



