Google Play 上传问题:“Your Android App Bundle need to have the package name com.x.x.base”

问题描述 投票:0回答:7

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

包的名称是com.something.something。上传失败,并显示消息“您的 APK 或 Android 应用程序包需要具有包名称 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
7个回答
6
投票

感谢大家对答案的尝试。这是我对这个问题的了解以及我如何“解决”它。

我的问题始于 Google Play Console (GPC) 坚持要求 应用程序名称与您上传的第一个包名称相关联。这是除了“一个应用程序 = 一个包名称”规则之外的补充。如果您仍处于草稿阶段,您可以从 GPC 的“所有应用程序”列表中删除该包,然后上传具有不同名称的包,但一旦发布 - 就没有这样的运气了。按照 GPC 的设计方式,如果这是我第一次上传的内容,我以后所有上传的内容都应该带有后缀“.base”。

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

因此,在我的第一次上传中,我有一种名为 base 的风味,但我没有意识到 AS 将其作为我的包名称的后缀。从那时起,GPC 将不会以任何其他名称为我的应用程序打包。

这里

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

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

您无需从 Google 控制台删除您的应用。只需在 Android Studio 中打开

Build.gradle(Module:app)

3
投票

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


1
投票

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


1
投票

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

良好的编码!!

1
投票

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 后缀如何更改 Google Play Console 条款中的 App.Id...

将 android/app/build.gradle 中的 applicationId 更改为与之前版本相同的 id。


0
投票

另外,请注意您正在构建的应用程序的风格,因为其中一些可能已经设置了

0
投票

© www.soinside.com 2019 - 2024. All rights reserved.