我正在尝试将正在开发的应用程序上传到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 {
...
}
我不想用不相关的代码来增加问题的负担,但如果对问题可能出在哪里有一些直觉,我可以提供更多信息。
如果您提供有关如何进行调试的任何建议,我将不胜感激。 (上传速度非常慢,尝试和错误不是一个好的选择。)
感谢大家对答案的尝试。这是我对这个问题的了解以及我如何“解决”它。
我的问题始于 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)
由于您的问题与代码无关,请尝试将包名称更改为其他名称,更“独特”的名称。 com.myname.myappname 就是一个示例。在这种情况下,您需要更改与包名称相关的所有内容。尝试一下并报告回来
您需要在 Build.Gradle(Module: app) 中更改您的应用程序 ID
"client_info": {
"mobilesdk_app_id": "...",
"android_client_info": {
"package_name": "com.yourpackagename.yourpackagename"
}
良好的编码!!
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。
另外,请注意您正在构建的应用程序的风格,因为其中一些可能已经设置了