这取决于你到底想要什么。根据文档 http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#max对于已弃用的 maxSdkVersion:
Android 的未来版本(Android 2.0.1 之外)将不再在安装或重新验证期间检查或强制执行 maxSdkVersion 属性。不过,在向用户提供可供下载的应用程序时,Google Play 将继续使用该属性作为过滤器。
因此,用户仍然可以旁加载该应用程序,但对于高于该级别的用户,它不会出现在 Google Play 中。这听起来像你想要的。没有办法(自 2.0.1 起)完全禁用旁加载。
关于此事关于编译的注意事项 http://developer.android.com/google/play/filters.html#manifest-filters:
...and the SDK will not compile if maxSdkVersion is set in an app's manifest.
我有疑问。刚刚测试后,我的 Eclipse/ADT 在 maxSdkVersion=15 设置下编译得很好。所以我不会担心这个。
关于 targetSdkVersion 的答案对于某些事情来说是很好的,但是如果您使用的是在较新的 API 中故意破坏/更改的内容,那么它们根本无法工作。例如,任何兼容模式都不允许 4.2+ 在非 root 应用程序中以编程方式打开/关闭飞行模式。它也不会改变 SecureRandom 的新实现。
如果该应用程序确实在 4.4 中完全无用,因为删除了一个关键功能,请尝试使用 maxSdkVersion。使用已弃用的方法总是让我感觉不好,但如果他们不提供任何类型的功能替代,有时这是唯一的选择。
就像它说的那样http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#max http://developer.android.com/guide/topics/manifest/uses-sdk-element.html#max,设置 maxSdkVersion 会在 Google Play 中过滤它,因此高于该级别的设备不会看到它。不过,这是唯一检查它的地方。侧面装载仍然是可能的。
您将遇到的唯一真正问题是人们升级操作系统。如果他们从 Play with 4.3 下载该应用程序,然后升级到 4.2,则该应用程序将无法正常运行。
对于这些用户(和侧面加载程序),您可能需要在启动时进行版本检查。如果他们检查失败,请优雅地通过对话等方式告诉他们发生了什么。这比看不见的“它不再工作了!”要好得多。
但是,如果您可以通过改变完成方式来解决这个问题,那么这是迄今为止最好的解决方案。
Thanks.