【问题标题】: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[最新的向前兼容性]。

提前致谢

【问题讨论】:

标签: android android-gradle-plugin build.gradle android-version


【解决方案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 。所以你的回答没有任何意义。
      猜你喜欢
      • 2016-03-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      • 2017-09-07
      • 1970-01-01
      • 2014-10-03
      • 1970-01-01
      相关资源
      最近更新 更多