我正在使用 Xamarin 构建一个 Android 应用程序。Visual Studio 允许您为 Android 指定目标和最低 SDK 级别,这似乎可以正常工作,因为反编译 APK 会在以下manifest
标记上显示以下属性AndroidManifest.xml
:
platformBuildVersionCode="25" platformBuildVersionName="7.1.1"
请注意,这不是项目中的清单文件,而是捆绑在最终应用程序中的清单文件。后者没有uses-sdk
价值。
但是,我似乎没有在运行时获得针对此版本的预期功能。具体来说,该应用程序从不要求运行时权限(在 API 23 IIRC 中引入),并且当您尝试撤销该应用程序的权限时,您会收到以下消息:
此应用程序专为旧版 Android 设计。拒绝许可可能会导致它不再按预期运行。
这已经在运行 API 23 以上的几个设备上注意到了,包括 Pixel,它应该运行 Android 并且在检测 SDK 版本时没有问题。
如果不使用清单值,Android 如何决定我的目标 SDK 版本?如何确保我的应用程序在运行时可以访问 API 23 功能?
我相信这些信息被编码在 APK 的签名中,因为最低 SDK 版本是一个参数给apksigner
:
--min-sdk-version Lowest API Level on which this APK's signatures will be
verified. By default, the value from AndroidManifest.xml
is used. The higher the value, the stronger security
parameters are used when signing.
我对此不是 100% 确定,但似乎这是 Android 在不直接使用清单的情况下可以知道的唯一方法,它可以解释为什么清单值可能与运行时看到的值不匹配。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句