【问题标题】:How do I ensure my published Android app works with new updates?如何确保我发布的 Android 应用程序适用于新的更新?
【发布时间】:2016-11-19 22:28:01
【问题描述】:

我最近在 Play Store 上发布了一个简单的警报应用程序,使用 Gradle,compileSdkVersion = 23、targetSdkVersion = 23 和 minSdkVersion = 15。

我曾根据 Android 设计原则认为,即使用户升级到 Android 7.0,我的应用仍然可以正常运行,而无需进行任何更新,但事实证明并非如此。相反,每当警报应该响起时,应用程序就会崩溃。我试图研究这个问题,包括查看 7.0 中的新行为变化,但我找不到任何具体的东西会导致这个问题。 我看到的唯一可能的解决方案是将 compileSdkVersion 更改为最新的(应该是 24),但我不确定应该是这样。

该应用程序非常简单,理想情况下我不想更新它,除非客户端请求特定更改或弹出错误。所以我的问题是:我如何确保我的应用程序的向前兼容性,这样我就不必为每个发布的新版本的 Android 发布更新,这甚至是可能的?在使用冰淇淋三明治到棉花糖的手机上很好,但当手机升级到牛轧糖时它不再起作用。值得庆幸的是,下载量足够小,我是目前使用 Nougat 的唯一用户,但我想在其他用户遇到问题之前解决这个问题。

如果需要,我很乐意分享代码/详细信息,但我暂时保留了它,希望我错过了一些简单的东西。

谢谢!

【问题讨论】:

    标签: android upgrade compatibility android-7.0-nougat


    【解决方案1】:

    我看到的唯一可能的解决方案是将 compileSdkVersion 更改为最新的

    这对运行时行为没有影响,除非您还更改 Java 代码以在较新的设备上执行不同的操作(例如,开始使用一些 API 级别 24 类和方法)。

    我如何确保我的应用向前兼容,这样我就不必为每个发布的新 Android 版本发布更新

    “确保”对于任何大型应用程序都是不可能的。变量太多了。

    通常,向前兼容“正常工作”。新版本 Android 上的许多行为更改只有在您提出 targetSdkVersion 时才会生效。例如,我在my book 中有several hundred sample apps,很少有应用程序在以前运行的新版本Android 上彻底崩溃。虽然这些示例应用程序中的每一个都相当简单,但它们结合起来使用了相当多的 Android SDK。

    我遇到问题的那些地方是因为我认为解决某些问题的正确方法是错误的。但是,在旧版本的 Android 上,这是错误的,但不会崩溃。以正确的方式修复应用程序以解决问题通常可以清除新旧版本 Android 上的问题。

    但是,Android 存在错误。回归——X 曾经工作并且应该工作但现在不再工作的地方——伴随着每个实质性的 Android 版本。当我发现它们时,我会在博客上介绍它们。而且,在这些情况下,如果回归影响到您,您只能更改代码。

    【讨论】:

    • 抱歉花了这么长时间才回复这个问题。原来问题在于如何在 Android 7.0 中处理 Parcelable 对象,我已将其修复为基于 DB 对象更耐用。您在其他问题中的帖子帮助我做到了这一点!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多