【问题标题】:Google Play upload problem: "Your Android App Bundle needs to have the package name com.x.x.base"Google Play 上传问题:“Your Android App Bundle need to have the package name com.x.x.base”
【发布时间】:2019-12-30 01:42:47
【问题描述】:

我正在尝试将正在开发的应用程序上传到 Google Play 控制台,内部测试轨道。该应用程序有两个风味维度和两个动态特性,最后两个仅是资源(无代码)。我依靠 Android Studio 来生成目录结构和签名包。

包的名称是 com.something.something。上传失败并显示消息“您的 APK 或 Android App Bundle 需要具有包名称 com.something.something.base。”

我无法找到问题的根源,但它看起来应该与风味维度有关。另一方面,我上传单个 apk 没有问题,没有动态功能。

我不确定代码的哪一部分与此处相关,这可能是我的问题的一部分,但我的主要构建 gradle 看起来像这样

apply plugin: 'com.android.application'

android {

    compileSdkVersion 27
    defaultConfig {
        applicationId 'com.something.something'
        ....
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            //testCoverageEnabled false
        }
    }

    flavorDimensions "version"
    productFlavors {
        small {
            dimension "version"
        }
        full {
            dimension "version"
        }
    }

    dynamicFeatures = [":feat1", ":feat2"]

}

dependencies {
    ...
}

我不想用不相关的代码来增加问题的负担,但如果对问题可能出在哪里有一些直觉,我可以提供更多。

如果您有任何关于如何在此处进行调试的建议,我将不胜感激。 (上传速度非常慢,反复试验不是一个很好的选择。)

【问题讨论】:

    标签: android android-studio google-play-console


    【解决方案1】:

    感谢大家踊跃回答。以下是我对这个问题的了解以及我是如何“解决”它的。

    我的问题始于 Google Play Console (GPC) 坚持 an app name be associated with the very first package name you have uploaded。这是对one app = one package name rule 的补充。如果您仍处于草稿阶段,您可以从 GPC 中的“所有应用程序”列表中删除该包,然后上传一个不同名称的包,但一旦发布 - 就没有这样的运气了。按照 GPC 的设计方式,我以后所有的上传都应该有后缀“.base”,如果这是我第一次上传的话。

    接下来,Android Studio (AS) 执行名为 manifest file merging 的操作。 (@Fantômas,您的听众可能不像您那样无所不知——AS 的行为在这里是相关的,并且在您允许的情况下,我会返回标签。)当您为捆绑包选择风味时,风味的名称是后缀的在合并的 AndroidManifest 文件中创建包名称,无论您在主 AndroidManifest.xml 中指定的名称如何,因为您可以检查是否选择“分析”(生成包后的链接名称)新创建的包:

    因此,在我第一次上传时,我有一个名为 base 的风格,我没有意识到 AS 将它作为我的包名称的后缀。从那时起,GPC 将不再为我的应用使用任何其他名称的包。

    这里与 无关的一件事是动态功能 - 它们恰好是我第二次上传尝试的一部分。

    我已要求 Google 删除我的应用,以便从头开始。

    【讨论】:

      【解决方案2】:

      您无需从 Google 控制台中删除您的应用。只需在您的 android studio 中打开 Build.gradle(Module:app) 并将 Application Id 更改为 google 向您请求的名称。

      【讨论】:

        【解决方案3】:

        由于您的问题与代码无关,请尝试将您的包名称更改为其他名称,更“独特”的名称。 com.myname.myappname 就是一个例子。在这种情况下,您需要更改与您的包名称相关的所有内容。尝试并报告

        【讨论】:

        • “上传速度非常慢,试错也不是什么好选择。”
        • 他说谷歌告诉他这是一个包问题。我无法发表评论。所以基本上,将包名更改为 com.myname.android.myappname 是一种可能的解决方案
        【解决方案4】:

        您需要在 Build.Gradle(Module: app) 中更改您的应用程序 ID

        您可能还需要在此部分下更改 google-services.json 文件中的名称:

        "client_info": {
            "mobilesdk_app_id": "...",
            "android_client_info": {
              "package_name": "com.yourpackagename.yourpackagename"
            }
        

        【讨论】:

          【解决方案5】:

          编码好!!

          您可以通过在构建类型中排除 applicationIdSuffix 定义或在build.gradle(应用程序:模块),就像我下面的例子一样,我想避免在我的“发布”和/或“完整”版本中添加相应的包名称后缀“.release”和“.full”我的应用:

          buildTypes {
                  release {
                      minifyEnabled false
                      proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
                      // applicationIdSuffix ".release"
                      versionNameSuffix "-release"
                  }
                  debug {
                      proguardFiles 'proguard-project.txt'
                      applicationIdSuffix ".debug"
                      versionNameSuffix "-debug"
                  }
              }
          
              // Specifies one flavor dimension.
              flavorDimensions "version"
              productFlavors {
                  free {
                      dimension "version"
                      applicationIdSuffix ".free"
                      versionNameSuffix "-free"
                  }
                  full {
                      dimension "version"
                      // applicationIdSuffix ".full"
                      versionNameSuffix "-full"
                  }
              }
          

          问候,

          PD: 非常感谢所有其他答案,这有助于我在这一刻做出上述决定......谢谢,特别是@celaeno,它解释了Android Studio中“清单合并”的工作原理,并且总而言之,宣传了 App Id SUFFIXES 如何在 Google Play 控制台条款中更改 App.Id...

          【讨论】:

            猜你喜欢
            • 2021-02-03
            • 2021-11-06
            • 2019-06-20
            • 1970-01-01
            • 2021-11-16
            • 2019-08-03
            • 2021-06-02
            • 2021-01-08
            • 2019-06-15
            相关资源
            最近更新 更多