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

Posted

技术标签:

【中文标题】Google Play 上传问题:“Your Android App Bundle need to have the package name com.x.x.base”【英文标题】:Google Play upload problem: "Your Android App Bundle needs 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 
    ...

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

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

【问题讨论】:

【参考方案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...

【讨论】:

以上是关于Google Play 上传问题:“Your Android App Bundle need to have the package name com.x.x.base”的主要内容,如果未能解决你的问题,请参考以下文章

语言更改在上传到 Google Play 商店之前有效,但在上传到 Play 商店后无效。为啥?

无法将 APK 上传到 google play

Google Play 应用签名证书和上传证书都在 Google Play 控制台中创建了相同的 SHA1 密钥

Google Play 控制台:丢失了上传 APK 所需的上传密钥

无法在 Google Play 商店中上传 64 位版本

如何为 Google Play 游戏上传您自己的个人资料图片