Android库应该定义targetSdkVersion吗?

问题描述 投票:12回答:2

我理解为什么一个库定义minSdkVersion是有用的,但是一个具有定义的targetSdkVersion的库是否会添加任何值?

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

android android-library
2个回答
2
投票

有关targetSDKVersion的文档:

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

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

enter image description here

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

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

1
投票

Android网页@ uses-sdk说targetSdkVersion

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.