对于android库项目,<uses-sdk>在manifest中有意义吗?

And*_*nie 23 android android-manifest android-library

这一切都在标题中.虽然我看到<uses-sdk>在我见过的所有示例库项目中都有指定AndroidManifest.xml,但我觉得它是无关紧要的.

事实上,我怀疑<uses-permission>也是无关紧要的,因为都是的属性<manifest>,比其他package.

谁能确认一下?

And*_*nie 22

截至ADT r20预览版3

库清单可以与主应用程序清单合并.通过指定属性在ant构建中启用此功能

manifestmerger.enabled=true  
Run Code Online (Sandbox Code Playgroud)

[我不确定如何在其他(例如maven)版本中启用它; 如果你搞清楚了,请在这里发表评论.我猜它转化为aapt命令行参数.]

各种规则管理冲突和压倒一切的行为.

相对于此处提出的具体问题(合并<uses-sdk>和<uses-permission>),<uses-sdk>的规则是:

  • minSdkVersion:如果目标清单包含的值小于lib值,则会出错; 保留目标值它等于或大于lib值,只有在没有指定目的地时才将lib值存储在目标中(如果未指定则默认为1).
  • targetSdkVersion:如果目标清单包含的值小于lib值,则发出警告; 保留目标值它与lib值相同或大于目的值,只有在没有指定目标值的情况下才将lib值存储在目标中(如果未在任何一个中指定,则默认为合并的minSdkVersion值).

<uses-permission>的规则是:如果目标尚未存在,则将库权限添加到目标.如果同时具有相同的权限,则可以.

如果您使用的是ADT r20预览版2或更早版本,则以下内容适用:

我创建了一个小测试库项目和一个使用它的测试应用程序,以便自己了解它.我在库项目的清单中提供了<uses-sdk>和<uses-permission>,并从应用程序的清单中省略了它们.

结果是库项目的<uses-sdk>和<uses-permission>值未在构建时合并到应用程序中,如使用AppXplore工具检查设备上已安装的应用程序所证明的那样.

我的测试代码可以在https://github.com/adennie/android-library-project-manifest-test上找到.

我的结论是在Android Library Project的清单中指定<uses-sdk>和<uses-permission>对消费应用程序的合并清单没有影响.

  • 正确,它什么都不做.Android平台开发人员Xav Ducrochet在此新闻组帖子中说明了这一点:https://groups.google.com/group/android-developers/msg/9db36f18521fca7d (3认同)