为所有版本开发Android应用

Posted

技术标签:

【中文标题】为所有版本开发Android应用【英文标题】:Develop Android's application for all the versions 【发布时间】:2011-11-23 11:20:07 【问题描述】:

我正在开发一个 android 应用程序,但我不知道如何使它与所有版本兼容。在 Eclipse 中,我只选择了一个 API 级别,而在 androidManifest 中,我尝试让 minSdk 和 MaxSdk 覆盖所有版本,但它在某些具有不同版本的操作系统上崩溃。 我怎样才能使它与所有版本兼容?你能帮帮我吗?

【问题讨论】:

【参考方案1】:

您真的需要支持所有版本吗?查看 Android 团队每月更新的此图表,并告诉您运行哪些 Android 版本的设备百分比。如您所见,97% 的设备运行 Android 2.1+

如果可以,我建议仅支持 Android 2.1+(API 级别 7)。

Android Platform Versions

【讨论】:

如果我使用 API 级别 7 ( 2.1 ) 它也可以在更高版本上运行? 据我所知:是的。关于这个主题的文章:developer.android.com/resources/articles/future-proofing.html 问题是在这些 api 级别中找不到包 android.media.audiofx :( @JacopoTurchi,你自己解决了这个问题。如果你需要那个包,你说的是 Android 2.3+,它只占安装基数的 30%。你可以改用第 3 方库吗? 为什么不呢,但我不知道在哪里可以找到它! :) 我在 java 中开发了很多,但在 android 中是第一个应用程序! :)【参考方案2】:

我想说,如果你试图让你的应用程序在过时的 Android 版本(我的意思是 1.5 和 1.6)上运行,你会让自己的生活变得非常艰难。正如 Sky 所说,仅针对 Android 2.1 及更高版本。

您能否指定当您尝试在不同版本的操作系统上运行应用程序时引发了什么异常?

这是清单中我的应用程序的定义。

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="10">

以这种方式定义它并不能保证您的应用程序可以在 Froyo、Gingerbread 和 Gingerbread_MR1 上运行。这是一个示例,我不能在我的应用程序中使用来自 LocationManager 类的 requestSingleUpdate(),因为它只是在 API 级别 9 中添加的(我希望我的应用程序在 API 级别 8 中工作!)。

您需要确保使用 API 级别 8 及以下的功能。这有意义吗?

【讨论】:

好的,明白了!但我不知道如何在所有版本中做同样的事情。示例:如果我想使用 android.media.audiofx,在 api 7 和更高级别它不起作用.. 正如 Sky 所说,第三方库是显而易见的解决方案。但是,我快速浏览了一下,发现没有真正的 android.media.audiofx 替代品。 我能做什么?可以动态检查版本吗? 可以,看看Build.Version 和this question 你知道我的问题的解决方案吗?我能做些什么?我想使用仅从 api 级别 9 开始定义的可视化器类:(

以上是关于为所有版本开发Android应用的主要内容,如果未能解决你的问题,请参考以下文章

android开发应用版本升级怎么实现

带有策略的 Android 应用程序拒绝:Android 版本 R 或更高版本中的所有文件访问权限违规

android的sdk啥意思

android应用版本更新策略

Android - 更改所有 Android 版本的应用程序语言

Flutter:用于部署的Android版本