首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AndroidManifest.xml中的安卓兼容性设置

AndroidManifest.xml中的安卓兼容性设置
EN

Stack Overflow用户
提问于 2011-02-01 13:36:19
回答 7查看 6.1K关注 0票数 4

我有一个应用程序发布,适用于所有android屏幕尺寸(除了较小的)和SDK版本2.0以上的密度。

它还将在超大屏幕上运行。目前,我添加了以下内容:

代码语言:javascript
复制
<supports-screens
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="false"
        android:anyDensity="true" 
    />

但我也需要添加android:xlargeScreens="true",以允许它在安卓市场的超大屏幕设备上可见,因为默认情况下它是假的。

但是要添加android:xlargeScreens,我需要将eclipse target设置更改为2.3,因为这个属性是从API9级添加的。

那么对于这个场景,我应该如何处理我的目标编译设置呢?编译的时候应该是2.3吗?如果是,那么该应用程序在2.0版本的设备上运行时是否不会出现任何问题?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-09-20 14:13:12

在阅读this博客文章时,我想我对我以前的问题有了答案。下面的摘录(这是从3.2开始引入的另一个清单属性"requiresSmallestWidthDp“):

“问题是,你必须在Android3.2或更高版本上编译你的应用程序才能使用requiresSmallestWidthDp属性。旧版本不理解这个属性,会引发编译时错误。最安全的做法是在与你为minSdkVersion设置的应用程序接口级别相匹配的平台上开发你的应用程序。当你为构建发布候选版本做最后的准备时,将构建目标更改为Android 3.2并添加requiresSmallestWidthDp属性。低于3.2的Android版本简单地忽略该XML属性,因此没有运行失败的风险。”

票数 0
EN

Stack Overflow用户

发布于 2011-02-01 13:44:59

是的,您需要将uses更改为2.3,但请确保您使用的不是2.0中的任何较新的apis,也不是您支持的最低sdk版本。或者,如果你想使用它们,你必须使用反射。

除了more about how to use the sdk versions is heremore about uses-sdk is here

我在我的应用程序中做了同样的事情,并确保在发布之前在所有版本中测试你的应用程序。

最好的,阿奇。

票数 2
EN

Stack Overflow用户

发布于 2011-02-01 14:54:34

我从评论中移出这一点,以便将来其他人更清楚地了解这个问题。

当同时支持Android的旧版本和新版本时,尽管在每个新版本的框架中发生了许多变化,但应用程序如何管理运行可能会令人困惑,我将在这里尝试澄清这一点。

为1.5 sdk编写的应用程序只能调用存在于该API级别的函数,因此,例如,多点触控api在1.5中不存在,并且永远不会存在。现在你说"Ok,但我不需要调用任何更新的API,我只希望我的应用程序能在2.3版本中工作并支持a2sd“,而我说"Ok,只需在清单中更改您的targetApi,设置minSDK并针对2.3进行编译,就可以了。”

现在,为什么这是可行的?如果在2.2中更改了ListView的onMeasure()方法,现在在onMeasure()中调用betterCalculateFunction()会怎么样?为什么我的应用程序仍然有效?

这就是Java中延迟绑定的优点。您知道,Java在到达设备并运行之前是不会编译的,您在Eclipse中所做的是将其转换为字节码,该字节码包含一堆字节码指令,稍后将由设备解释。字节码永远不会包含对betterCalculateFunction()的引用(除非您直接调用它。调用onMeasure()是间接的)。这是因为当您的代码在设备上运行时,它被链接到设备上的Android框架,并且您的代码直接调用onMeasure(),因为它是一个公共的、面向外部的API。然后,执行路径将进入框架并调用它需要调用的任何内容,然后在完成后返回到您的代码。

所以在1.5上你可能会看到

doStuff (您的代码) -> onMeasure (公共API) ->完成

和2.2

doStuff (您的代码) -> onMeasure (公共API) -> betterCalculateFunction (私有函数) ->done

现在,如果您需要调用可能存在也可能不存在的函数,这取决于API级别,那么我建议您在这里查看我的一个相关答案,stackoverflow: gracefully downgrade your app

希望这能澄清一些事情。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4859287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档