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 商店后无效。为啥?
Google Play 应用签名证书和上传证书都在 Google Play 控制台中创建了相同的 SHA1 密钥