Featured image of post 有梦记上架 Google Play

有梦记上架 Google Play

经过一个月的努力,我们的梦想成为了一个可以被推广的应用。

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

前言

  • 国内应用商店, 除了华为应用市场, 其它市场一律不允许个人开发者上传应用.
  • 所以就想上传到Google Play,一开始开发有梦记的时候, 没有想过国际化, 所以就在界面上硬编码了文字
  • 经过一段时间的努力, 在修复各种bug同时, 增加了国际化(包括服务端), 可以让用户自己选择语言.

上架流程

打包

  • Flutter打包aab格式相对来说也很简单, 只要运行flutter build appbundle即可
  • 打包的时候写了一个脚本动态传递渠道, 如:flutter build appbundle --dart-define=channel=google
  • 由于第打包aab格式, 不是很熟悉, 导致很多分包之后运行不了, 所以在build.gradle增加以下代码
/// 获取渠道参数使用,这里设置一下默认值
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
            }
        }
    }
}