对于android库项目,is<;使用sdk>;在舱单上有意义吗?
几乎都在标题里。虽然我看到了所有示例库项目的对于android库项目,is<;使用sdk>;在舱单上有意义吗?,android,android-manifest,android-library,Android,Android Manifest,Android Library,几乎都在标题里。虽然我看到了所有示例库项目的AndroidManifest.xml中指定的,但我感觉它与此无关 事实上,我怀疑也是不相关的,因为的所有属性都是不相关的,除了包 有人可以确认吗?如果您的库项目不依赖于特定的android版本,那么您可以省略此标记 因为uses sdk将根据定义sdk版本等,所以它表示for 属性android:minSdkVersion肯定是必需的,如果您没有通过任何测试,则需要1表示-应用程序将支持android的所有api版本,如果您没有通过任何静态测试,则必
AndroidManifest.xml
中指定的
,但我感觉它与此无关
事实上,我怀疑
也是不相关的,因为
的所有属性都是不相关的,除了包
有人可以确认吗?如果您的库项目不依赖于特定的android版本,那么您可以省略此标记 因为uses sdk将根据定义sdk版本等,所以它表示for
属性android:minSdkVersion
肯定是必需的,如果您没有通过任何测试,则需要1表示-应用程序将支持android的所有api版本,如果您没有通过任何静态测试,则必须使您的应用程序支持所有api版本
警告:如果不声明此属性,系统将假定
默认值为“1”,表示您的应用程序
兼容所有版本的Android。如果你的申请没有通过
与所有版本兼容(例如,它使用
API级别3),并且您尚未声明正确的版本,那么
当安装在API级别低于3的系统上时
当尝试访问应用程序时,应用程序将在运行时崩溃
不可用的API。因此,请务必声明
minSdkVersion属性中的适当API级别
这个属性android:maxSdkVersion
有点难以理解..doc说
警告:不建议声明此属性。首先,有
无需将该属性设置为阻止部署
应用程序安装到新版本的Android平台上
释放。根据设计,该平台的新版本完全可以使用
向后兼容。您的应用程序应在新服务器上正常工作
版本,前提是它只使用标准API并遵循开发流程
最佳做法。其次,请注意,在某些情况下
属性可能导致您的应用程序从用户帐户中删除
系统更新到更高API级别后的设备。上的大多数设备
您可能安装的应用程序将定期收到
系统更新的空气,所以你应该考虑他们的影响
请在设置此属性之前启动应用程序
以及
Android的未来版本(超过Android 2.0.1)将不再检查
或在安装过程中强制执行maxSdkVersion属性,或
重新验证。Google Play将继续使用该属性作为
但是,在向用户展示可用于
下载
该警告表示,如果您声明属性,则可能会出现负面影响,但当您查看另一面时,如果您正在开发任何支持特定Android版本的产品,则该属性对您最有用。
删除该属性的步骤是鼓励开发人员使其应用程序支持所有不同(较新)版本
只有当您使用2.0.1^版本开发时,您才可以说不需要编写该版本,但如果您编写该版本,Google paly将使用该版本作为向用户演示的过滤器
因此,我的结论和建议
从ADT r20 preview 3开始,使用至少具有一个属性的元素
库清单可以与主应用程序清单合并。这是通过指定属性在ant构建中启用的
manifestmerger.enabled=true
[我不知道如何在其他(例如maven)版本中启用它;如果您理解了,请在此处进行评论。我猜它会转换为aapt命令行参数。]
各种规则管理冲突和凌驾行为
关于此处提出的具体问题(合并和),规则如下:
- minSdkVersion:如果目标清单包含小于lib值的值,则出错;保留目标值等于或大于lib值,仅当未在目标中指定任何值时才将lib值存储在目标中(如果未在其中任何一个中指定,则默认为1)
- targetSdkVersion:如果目标清单包含的值小于lib值,则发出警告;保留目标值等于或大于lib值,仅当未在目标中指定lib值时才在目标中存储lib值(如果未在其中任何一个中指定,则默认为合并的minSdkVersion值)
我的结论是,在Android库项目的清单中指定and对消费应用程序的合并清单没有影响 清单在库项目中的可能用途: