【问题标题】:Android app is supporting android 11 even when compile and target SDK Versions are set to 28(android 9)即使编译和目标 SDK 版本设置为 28(android 9),Android 应用程序也支持 android 11
【发布时间】:2022-01-08 16:36:25
【问题描述】:

谁能解释一下 android 应用如何支持高于该应用的 Compile 和 Target SDK 版本的 SDK 版本?

这里是应用级build.gradle

android {
    compileSdkVersion 28
    defaultConfig {
       minSdkVersion 21
       targetSdkVersion 28
    }
}

提前致谢!

【问题讨论】:

    标签: android sdk build.gradle android-sdk-tools


    【解决方案1】:

    来自official documentation

    android:minSdkVersion:

    一个整数,指定应用程序运行所需的最低 API 级别。如果系统的 API Level 低于此属性中指定的值,Android 系统将阻止用户安装应用程序。您应该始终声明此属性。

    android:targetSdkVersion

    一个整数,指定应用程序所针对的 API 级别。 […] 此属性通知系统您已针对目标版本进行了测试,并且系统不应启用任何兼容性行为来保持您的应用程序与目标版本的前向兼容性。该应用程序仍然能够在旧版本上运行(低至 minSdkVersion)。

    也就是说,如果应用安装在具有更高 SDK 的设备上,那么系统将尝试不启用兼容性功能,但应用仍会运行。

    否则,如果发布了新的 Android 版本,那么除非开发人员更新他们的应用程序,否则将无法使用任何应用程序。

    android:maxSdkVersion

    一个整数,指定应用程序设计运行的最高 API 级别。 […]。在任何一种情况下,如果应用程序的 maxSdkVersion 属性低于系统本身使用的 API 级别,那么系统将不允许安装应用程序。在系统更新后重新验证的情况下,这实际上会从设备中删除您的应用程序。

    minSdkVersionmaxSdkVersion 之间的每个版本中都将允许该应用程序。

    【讨论】:

    • The application is still able to run on older versions (down to minSdkVersion). 但问题是如果它针对 android 9 即 API 级别 28,为什么它在 android 11 中支持?
    • @ShailendraMadda 更新了我的答案。 maxSdkVersion 就是你所描述的。 targetSdkVersion 仅表示您特别要求 Android 和 Google Play 使用的版本。
    • 感谢maxSdkVersiontargetSdkVersion 的清晰说明。
    • @ShailendraMadda 很高兴你发现它有帮助!通常应用程序不使用maxSdkVersion,除非有严格的需要。考虑将我的答案标记为已接受,或者,如果问题未解决,请告知。
    • 由于这个问题是由NS Bhat 发布的,我无法接受。我已经通过投票完成了我的工作:)
    猜你喜欢
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    相关资源
    最近更新 更多