我应该为 compileSdkVersion、minSdkVersion 和 targetSdkVersion 设置啥以支持从 Marshmallow 到 Pie?

Posted

技术标签:

【中文标题】我应该为 compileSdkVersion、minSdkVersion 和 targetSdkVersion 设置啥以支持从 Marshmallow 到 Pie?【英文标题】:What should I set for compileSdkVersion, minSdkVersion, and targetSdkVersion to support from Marshmallow to Pie?我应该为 compileSdkVersion、minSdkVersion 和 targetSdkVersion 设置什么以支持从 Marshmallow 到 Pie? 【发布时间】:2019-07-30 02:12:27 【问题描述】:

我的 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[最新的向前兼容性]。

提前致谢

【问题讨论】:

请检查:techxoom.com/… 【参考方案1】:

根据您的构建等级,我认为您的 buildToolsVersion 不正确。

buildToolsVersion '28.0.3'

按照上述更改您的 buildToolsVersion。

【讨论】:

【参考方案2】:

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

我猜是发布 apk 有问题。请重新检查以下常见错误:

你是直接从SD卡安装release apk吗?(你不应该直接安装release apk,你需要在play console发布,然后只有你可以使用你的apk,否则你应该只使用debug apk) 版本号(是否已经没用过) 您是否重命名了您的发布 apk 文件? - 如果您这样做了,请重命名为旧名称。 更正清单文件中的 API 级别。 (与 build.gradle 文件交叉检查)

【讨论】:

【参考方案3】:

大家好,感谢您的建议和 cmets。最后我发现了 Nougat 7.0 版本的问题。

问题与 gradle 无关。由于我在项目文件夹中的包名(即活动、服务、实用程序、模型)导致问题,所有包名都以大写字母开头,因此它会引发错误,指出在 android 清单文件中 android:name 不是已定义[尝试在 Nougat 设备中安装时无法识别]。

通过在 API 级别 24 和 25 模拟器中安装发布 apk 发现问题,并在 LogCat 中发现错误。

一旦我用小写字母修改了项目中的所有包名称,即活动、服务、实用程序,现在我可以在 Nougat 版本设备中安装发布 apk。

现在无法在 Marshmallow 设备 6.0 中安装它。这次出现App is not installed错误

请告诉我 6.0 版设备缺少什么。

提前致谢

【讨论】:

已修复。在生成签名版本 apk 时选择 Signature Version v1 和 v2 为我解决了这个问题。现在我的应用程序从 Marshmallow 到 Pie 运行良好。谢谢【参考方案4】:

compileSdkVersiontargetSdkVersion 通常保持相似,通过定义它,您可以告诉应用程序您专门为哪些 Android 设备制作应用程序。因此,无论您的targetSdkVersion 是什么,应用程序都将在此运行最流畅。

minSdkVersion 是您要定位的最小 sdk。因此,如果您希望支持的最小设备为Marshmallow,那么该应用程序将不适用于 API 版本低于Marshmallow 的设备,实际上该应用程序甚至不会出现在 Playstore 上。

【讨论】:

Op 的问题不是关于定义,而是关于 ERROR There is error while parsing the package 。所以你的回答没有任何意义。

以上是关于我应该为 compileSdkVersion、minSdkVersion 和 targetSdkVersion 设置啥以支持从 Marshmallow 到 Pie?的主要内容,如果未能解决你的问题,请参考以下文章

迁移到 AndroidX 后已将 compileSdkVersion 更新为 28,但仍然收到有关 fontVariationSettings 和 ttcIndex 的 gradle 错误

compileSdkVersion 和 targetSdkVersion 有啥区别?

错误:compileSdkVersion android-21 需要使用 JDK 7 编译 - windows

Android compileSdkVersion 23 导致apache网络库HttpClient过期问题

两个包在颤振中使用两个不同的 compileSdkVersion

在 Jenkins 上构建 Android Studio 项目? android.compileSdkVersion 丢失