我应该将compileSdkVersion,minSdkVersion和targetSdkVersion设置为什么来支持从Marshmallow到Pie的版本?

3

我的Android应用程序可以在Oreo和Pie上安装,没有任何问题。但是如果我尝试在Marshmallow和Nougat版本的手机上安装发布版本,则会出现错误提示“解析包时出错”。请查找我的Gradle中的SDK版本。

compileSdkVersion 28
  minSdkVersion 21
  targetSdkVersion 28
  implementation com.android.support:appcompat-v7:28.0.0
  implementation com.android.support:support-v4:28.0.0
  implementation com.android.support:design:28.0.0

假设我将编译和目标SDK版本更改为26,它是否可以在Marshmallow和Nougat设备上运行?如果我将SDK版本更改为26并将支持库更改为26.0.0,则会出现构建错误,例如Android资源链接失败。
请帮助我解决此问题,并为我的Android应用程序提供解决方案,以支持从Marshmallow到最新的Pie(向前兼容)。
提前感谢您。

请查看此链接:https://techxoom.com/fix-parse-error-in-android-there-is-a-problem-parsing-the-package/ - Faysal Ahmed
4个回答

2
根据你的构建gradle文件,我认为你的buildToolsVersion不正确。"Original Answer"翻译成"最初的回答"。
buildToolsVersion '28.0.3'

将你的buildToolsVersion更改为上述版本。"最初的回答"。

1

您的 build.gradle 文件没有变化。请继续使用相同的配置 "compileSdkVersion 28 minSdkVersion 21 targetSdkVersion 28"。看起来很好。

我猜发布版 APK 存在问题。请重新检查以下常见错误:

  • 您是否直接从 SD 卡安装发布版 APK(您不应该直接安装发布版 APK,您需要在 Play 控制台中发布,然后才能使用您的 APK,否则只能使用调试版 APK)
  • 版本号(是否已经被使用)
  • 您是否重命名了发布版 APK 文件?如果是,请将其重命名回旧名称。
  • 在清单文件中更正 API 级别(与 build.gradle 文件交叉检查)

0

大家好,感谢提供的建议和评论。最终我找到了Nougat 7.0版本中的问题所在。

问题不是出在Gradle上,而是由于我的项目文件夹中包名的问题,例如Activities、Services、Utilities、Models等所有包名都以大写字母开头,因此会在Android Manifest文件中抛出错误,指出android:name未定义(在尝试在Nougat设备上安装时无法识别)。

通过在API Level 24和25模拟器中安装发布APK并在LogCat中找到错误,我发现了这个问题。

一旦我用小写字母修改了项目中的所有包名,即activities、services、utilities,现在我就可以在Nougat版本设备上安装发布APK了。

现在无法在Marshmallow 6.0设备上安装。这次我遇到了应用程序未安装错误。

请告诉我我错过了哪些适用于6.0设备的东西。

提前感谢!


问题已解决。在生成签名版本v1和v2的已签名发布apk时,我的应用程序现在可以在从Marshmallow到Pie的所有设备上正常工作。 - DineshKumar Rajasekar

-1

compileSdkVersiontargetSdkVersion 通常保持相似,通过定义它们,您可以告诉应用程序您特别为哪些 Android 设备创建应用程序。因此,无论您的 targetSdkVersion 是什么,应用程序在该版本上运行最流畅。

minSdkVersion 是您想要针对的最低 sdk 版本。因此,如果您希望支持的最低设备是 Marshmallow,则该应用程序将不会出现在 api 版本低于Marshmallow 的设备上,实际上该应用程序甚至也不会显示在 Play 商店中。


Op的问题不是关于定义,而是关于错误“解析包时出错”。因此,你的回答没有任何意义。 - ADM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接