【问题标题】:Should Android libraries define targetSdkVersion?Android 库应该定义 targetSdkVersion 吗?
【发布时间】:2016-02-17 19:06:29
【问题描述】:

我理解为什么定义 minSdkVersion 对库很有用,但是定义了 targetSdkVersion 的库会增加任何价值吗?

我不确定如果库的 targetSdkVersions 低于和高于主项目,是否会有任何问题。如果主要项目定义了它们,它们会被忽略吗?或者,取较低/较高的? Android 应用可以在不同的 targetSdkVersion 下以不同的方式工作(例如,Marshmallow 运行时权限)。

【问题讨论】:

    标签: android android-library


    【解决方案1】:

    关于 targetSDKVersion 的文档:

    一个整数,指定应用程序所针对的 API 级别。如果未设置,则默认值等于提供给 minSdkVersion 的值。 此属性通知系统您已针对目标版本进行了测试,并且系统不应启用任何兼容性行为以保持您的应用程序与目标版本的前向兼容性。该应用程序仍然能够在旧版本上运行(低至 minSdkVersion)。

    Android 库 targetSdkVersion 将告诉主机应用程序您的库应该如何处理此事。清单合并有关于合并targetSdkVersion的具体规则:

    元素中的属性始终使用更高优先级清单中的值,但以下情况除外:

    • 当低优先级清单的 minSdkVersion 值为 更高,除非您应用 overrideLibrary 合并,否则会发生错误 规则。
    • 当低优先级清单的 targetSdkVersion 值为 较低,合并工具使用较高优先级的值 清单,但它还添加了任何必要的系统权限 确保导入的库继续正常运行 (适用于较高安卓版本增加的情况 权限限制)。有关此行为的更多信息, 请参阅有关隐式系统权限的部分。

    【讨论】:

    • targetSdkVersion 比高优先级清单(主)高的低优先级清单怎么样?
    【解决方案2】:

    Android 网页 @uses-sdk 说 targetSdkVersion

    指定应用程序设计运行的 API 级别。

    关于您的问题,该库指定了 targetSdkVersion 以声明对其进行测试的 Android API。如果 Android 设备上的实际 API 更高,则 Android 提供了前向兼容性。您可以在该网页上搜索文本“向前兼容性”以了解详细信息。

    希望这能回答您的所有问题。玩得开心...

    【讨论】:

      猜你喜欢
      • 2014-06-06
      • 2019-10-30
      • 2016-08-15
      • 1970-01-01
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      • 2016-03-01
      • 2016-02-23
      相关资源
      最近更新 更多