Android Studio - 使用大写包名称的APK - INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

时间:2018-03-27 14:41:01

标签: android android-studio deployment package

我知道这里提出几乎相同的问题,但接受的答案对我不起作用。

Make apk with Capitalized package name in android studio

让我解释一下。

我们的Android应用程序是在 Xamarin.Android 中开发的,我们在程序包命名方面犯了一个错误 - Visual Studio和Xamarin使用大写的程序包名称配置了我们的应用程序清单(这是我现在支付的一个错误我的理智)。它适用于Xamarin版本,但我们决定在一些版本之后在Android Studio中重写该应用程序。现在问题开始......

我们无法在早于Android 8.0的设备上直接部署/安装apk,我们收到以下错误: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

有趣的是,在具有最新API的设备上不存在该问题。

这显然与我们的包名称有关,例如: YES_We_Failed_On_It.We_Failed_Very_Badly

如果我将它更改为小写的一切正常,但情况是我们无法发布另一个具有不同包名的应用程序。

有没有可能解决这个问题?

1 个答案:

答案 0 :(得分:0)

这将是自我回答的问题。

如果其他人都在我的位置,修复很简单。

如文档中所述:https://developer.android.com/studio/build/application-id.html

  

在Android Studio中创建新项目时,applicationId与您在安装过程中选择的Java样式包名称完全匹配。但是,除此之外,应用程序ID和程序包名称彼此独立。您可以更改代码的程序包名称(代码名称空间),它不会影响应用程序ID,反之亦然(但是,再次发布应用程序时不应更改应用程序ID)。

应用程序ID和Java包名称不一样。

所以为了解决这个问题,我将我的软件包重命名为小写,并使用大写的应用程序ID。问题消失了。

在构建结束时,构建工具会将我们的应用程序ID复制到最终APK的清单中,这就是为什么它仍然是我认为的相同包。

同样来自docs:

  

还有一件事需要了解:虽然清单包和Gradle applicationId可能有不同的名称,但构建工具会在构建结束时将应用程序ID复制到APK的最终清单文件中。 / p>