gpt4 book ai didi

java - 向后兼容的 Android/Java 代码

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:14:50 25 4
gpt4 key购买 nike

我正在编写一些代码,供一些维护 SDK 的合作伙伴使用。这些 SDK 由 Android 1.5 到 2.3.7 的开发人员使用。我的代码使用了仅适用于 2.2 及更高版本的功能。我如何编写代码,以便使用合作伙伴 SDK 的开发人员不会在 Android < 2.2 上遇到编译错误?

我尝试使用反射并避免使用 2.2 之前不可用的类的导入/声明,但是由于无法分派(dispatch)到我已将所需类类型更改为 Object 的方法,代码在 2.2 之后无法工作。

最佳答案

您可以尝试将代码拆分为基线 (Android 1.5) 并为更高的 API 级别提供额外的 JAR,类似于 Android compat librabry 的方式。有兼容 Android 1.6 的“v4”风格和适用于 Android 3.2 及更高版本的“v11”。

在某些时候,您还可以从 AOSP 中获取代码并向后移植选定的 2.2 功能。我这样做了,例如能够在 API 级别 7 上使用 getExternalCacheDir():

private static File getExternalCacheDir(final Context context) {
// return context.getExternalCacheDir(); API level 8

// e.g. "<sdcard>/Android/data/<package_name>/cache/"
final File extCacheDir = new File(Environment.getExternalStorageDirectory(),
"/Android/data/" + context.getApplicationInfo().packageName + "/cache/");
extCacheDir.mkdirs();
return extCacheDir;
}

反射繁重的代码将是维护的噩梦——尽管您想为您的客户/合作伙伴避免那些红色的编译器错误加密狗,希望看到它们而不是一些模糊的运行时异常通过反射代码中过时的常量。

关于java - 向后兼容的 Android/Java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7613177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com