有梦记上架 Google Play

先说个题外话，文章的描述是用https://copilot.github.com/自动生成的，这个工具的确很好用，大家可以尝试一下.(看到图中灰色的是它自己生成的，按下Tab键即可使用它的提示)

前言

国内应用商店，除了华为应用市场，其它市场一律不允许个人开发者上传应用.

所以就想上传到Google Play, 一开始开发有梦记的时候，没有想过国际化，所以就在界面上硬编码了文字

经过一段时间的努力，在修复各种bug同时，增加了国际化 (包括服务端), 可以让用户自己选择语言.

上架流程

有一台可以访问https://play.google.com/的电脑

申请Google Play账号的时候需要支付25美元，可以去淘宝搜一下代付

上架应用需要aab格式 https://developer.android.com/guide/app-bundle/faq?hl=zh-cn

Google Play的上架流程还是很人性化的，跟着提示一步一步走即可

第一次提交审核的时候可能需要比较久的时间，我这边等了三天左右

打包

Flutter打包aab格式相对来说也很简单，只要运行flutter build appbundle即可

打包的时候写了一个脚本动态传递渠道，如:flutter build appbundle --dart-define=channel=google

由于第打包aab格式，不是很熟悉，导致很多分包之后运行不了，所以在build.gradle增加以下代码

Copy
/// 获取渠道参数使用,这里设置一下默认值
def dartEnvironmentVariables = [
// 这里尽量不使用默认值,确保总是拿到命令行参数
channel: '_channel',
]
if (project.hasProperty('dart-defines')) {
dartEnvironmentVariables = dartEnvironmentVariables + project.property('dart-defines')
.split(',')
.collectEntries { entry ->
def pair = new String(entry.decodeBase64(), 'UTF-8').split('=')
[(pair.first()): pair.last()]
}
}

android {
if (dartEnvironmentVariables.channel == "google") {
// Instead, use the bundle block to control which types of configuration APKs
// you want your app bundle to support.
bundle {
language {
// Specifies that the app bundle should not support
// configuration APKs for language resources. These
// resources are instead packaged with each base and
// feature APK.
enableSplit = false
}
density {
// This property is set to true by default.
enableSplit = false
}
abi {
// This property is set to true by default.
enableSplit = false
}
}
}
}

图