这一切都在标题中。虽然我在所见的所有示例库项目<uses-sdk>
中都看到了AndroidManifest.xml
,但我觉得这是无关紧要的。
事实上,我怀疑<uses-permission>
与<manifest>
的{{1}}的所有属性一样无关紧要。
任何人都可以确认吗?
答案 0 :(得分:22)
库清单可以与主应用程序清单合并。通过指定属性
在ant构建中启用此功能manifestmerger.enabled=true
[我不确定如何在其他(例如maven)版本中启用它;如果你搞清楚了,请在这里发表评论。我猜它转化为aapt命令行参数。]
各种规则管理冲突和重写行为。
相对于此处提出的具体问题(合并&lt; uses-sdk&gt;和&lt; uses-permission&gt;),&lt; uses-sdk&gt;的规则是:
&lt; uses-permission&gt;的规则是:如果目标尚未存在,则将库权限添加到目标。如果两者都有相同的权限,那就没关系。
我创建了一个小测试库项目和一个使用它的测试应用程序,以便自己了解这个问题。我提供了&lt; uses-sdk&gt;和&lt; uses-permission&gt;在库项目的清单中,并从应用程序的清单中省略了它们。
结果是图书馆项目的&lt; uses-sdk&gt;和&lt; uses-permission&gt;在构建时未将值合并到应用程序中,可以通过使用AppXplore工具检查设备上已安装的应用程序来证明。
我的测试代码位于https://github.com/adennie/android-library-project-manifest-test。
我的结论是指定&lt; uses-sdk&gt;和&lt; uses-permission&gt;在Android库项目中,清单对消费应用程序的合并清单没有影响。
答案 1 :(得分:1)
库项目中清单的可能用途:
你试过lint吗?它可以警告你,如果你的项目使用了太新的类/方法,这些类/方法不能用于你在清单上设置的min-sdk。 想看看吗?只需按下sdk管理器附近的V-checkbox按钮,如下所示: http://tools.android.com/tips/lint/lint-toolbar.png?attredirects=0
清单可以为其他人提供项目使用所需的线索。
您还可以在其中添加一些测试活动,这些活动可以让您快速将项目从库项目切换到正常项目,并对其进行一些测试。
正如Google过去所建议的那样,通过与所有使用该库项目的人合并,图书馆项目将来可能会使用该清单。
答案 2 :(得分:0)
如果您的库项目不依赖于特定的Android版本,那么您可以省略此标记。
因为uses-sdk将定义sdk版本等。
答案 3 :(得分:-1)
根据 the documentation ,它代表<uses-sdk>
属性 android:minSdkVersion
肯定是必需的,如果你没有通过,那么它将需要 1含义 - 应用程序将支持所有api版本的android 然后你必须让你的应用程序支持所有这些如果你没有静态传递。
警告:如果您未声明此属性,系统将假定为 默认值“1”,表示您的应用程序是 兼容所有Android版本。如果您的申请没有 与所有版本兼容(例如,它使用在中引入的API) API Level 3)然后你还没有声明正确的minSdkVersion 当安装在API级别小于3的系统上时, 尝试访问时,应用程序将在运行时崩溃 不可用的API。因此,请务必申报 minSdkVersion属性中的相应API级别。
属性 android:maxSdkVersion
理解起来有点棘手..doc说,
警告:不建议声明此属性。首先,有 无需将属性设置为阻止部署的方法 按原样应用到Android平台的新版本 释放。通过设计,该平台的新版本是完全的 向下兼容。您的应用程序应该适用于新的 版本,只要它只使用标准API并遵循开发 最佳做法。其次,请注意在某些情况下,声明 属性可能导致您的应用程序被用户删除 系统更新到更高API级别后的设备。大多数设备上 您的应用程序可能会安装将定期收到 系统通过空中更新,所以你应该考虑它们的影响 您的应用程序在设置此属性之前。
和
Android的未来版本(超越Android 2.0.1)将不再检查 或在安装期间强制执行maxSdkVersion属性 重新验证。 Google Play会继续将该属性用作 但是,当向用户提供可用的应用程序时,过滤器 下载。
该警告是指示如果您声明属性可能会发生的负面点但是当您查看另一方时如果您正在开发支持某些特定Android版本的任何内容,那么ATTRIBUTE是对你最有用。
删除该属性的步骤是鼓励开发人员使他们的应用程序支持所有不同(较新)的版本。
只有使用版本2.0.1进行开发^然后你可以说它不需要写但如果你写 Google paly将使用它作为过滤器来呈现用户< / em>的
所以我的结论和建议
将元素<uses-sdk>
与至少一个属性android:minSdkVersion