Android 如何支持不同的手机版本和屏幕尺寸?

Posted

技术标签:

【中文标题】Android 如何支持不同的手机版本和屏幕尺寸?【英文标题】:Android how do I support different phone version and screen sizes? 【发布时间】:2010-12-19 14:14:21 【问题描述】:

我的应用程序的一些用户使用 android 1.5,一些使用 1.6,还有一些 2.0。

那么我如何为所有客户发布我的应用程序?如果我发布 1.5 版本,那么 1.5 手机可以使用它 - 但不是屏幕较小的新手机(又名 Tatoo),它们需要 1.6 或更高版本?对吗?

谢谢

【问题讨论】:

【参考方案1】:

我所做的是将我的应用程序设置为针对 Android 1.6 构建,然后我将清单中的 minSdkVersion 设置为 3(告诉市场让 Android 1.5 手机安装它,并将 targetSdkVersion 设置为 4(告诉手机使用 Android 1.6 及更高版本,我已经在 1.6 上对其进行了测试,并且不给它任何前向兼容性帮助)。通过针对 1.6 构建,Eclipse 不会让我使用任何 2.0 API,但我知道它仍然可以在 1.6和 2.0. 它也不会让你自动将它安装在 1.5 模拟器上,所以我导出一个签名的 APK,然后使用 SDK 附带的“adb”工具通过命令行将它安装到模拟器上,然后手动- 测试它以确保它也没有踩到任何特定于 1.6 的 API。

我不针对 1.5 构建的原因是,我需要使用 1.6 及更高版本的内容,1.5 可以安全地忽略,并且支持多种屏幕尺寸。我可以在 res/drawable-hdpi 中包含用于 Droid 屏幕的较大资源,并让 Droids 自动加载这些资源,但如果我是针对 1.5 构建的,Eclipse 不知道我要做什么。

我希望我没有让这听起来太复杂,因为实际上并非如此 - Android SDK 和资源框架让处理多种屏幕尺寸和平台版本变得异常容易。只需了解您在做什么,并在布局 XML 中使用与屏幕无关的像素单元,就可以了。

【讨论】:

您确定新的 1.6 特定 API 在 1.5 设备上总是被忽略吗?如果没有找到某个方法,一定会抛出异常。【参考方案2】:

较新的手机应该可以正常运行旧应用,具体取决于它们的编码方式。如果您使用 AbsoluteLayout 和对像素尺寸的硬编码引用,您将遇到问题。如果你只是让android为你做计算,应该没问题。该 API 明确向后兼容,因此运行 1.6 或 2.0 的手机将能够正常运行 1.5 应用程序。

【讨论】:

我不同意。我不得不更改我的应用程序以使它们与新手机兼容,在一种情况下我无法做到。问候,阿里 抱歉,您需要提供详细信息才能提出此类声明。所有较旧的应用程序都应该在新手机上运行良好,除非您使用特别不推荐使用的功能,其中很少。 AbsoluteLayout,正如上面提到的@Eric,就是其中之一。【参考方案3】:

我的目标是 1.5,并在 1.5 模拟器、2.0 模拟器和 2.0 设备上进行测试。这让我可以确保它可以与尽可能多的不同设备一起使用。

【讨论】:

以上是关于Android 如何支持不同的手机版本和屏幕尺寸?的主要内容,如果未能解决你的问题,请参考以下文章

Android适配难题全面总结

Android 屏幕适配

Android学习路线(十八)支持不同设备——支持不同的屏幕

Android - 支持不同的设备 - 支持不同的屏幕

我想为不同的屏幕尺寸制作 Android 应用响应式布局

Android应用程序支持不同屏幕(尺寸密度)