主页 > 开发文档 > ICU4J Android 框架 API

推荐文章

ICU4J Android 框架 API

ICU4J 是一个广泛使用的开源 Java 库集合,为软件应用提供 Unicode 和全球化支持。从 Android 7.0(API 级别 24)开始,Android 在 android.icu 软件包下显示 ICU4J API 子集,供应用开发者使用。这些 API 使用设备上具有的本地化数据。因此,您可以通过不将 ICU4J 库编译到 APK 来减少 APK 占用空间;相反,您可以只在框架中调用它们。(在此情况下,您可能想要提供多个版本的 APK,这样,运行比 Android 7.0(API 级别 24)低的 Android 版本的用户可以下载包含 ICU4J 库的应用版本。)

本文档开头提供了有关支持这些库所需的最低 Android API 级别的一些基本信息。然后,介绍关于 Android 特定的 ICU4J 实现您需要了解的内容。最后,介绍如何在 Android 框架中使用 ICU4J API。

与 ICU4J 的关系


Android 通过android.icu 软件包(而非 com.ibm.icu)显示 ICU4J API 的子集。由于种种原因,Android 框架可能选择不显示 ICU4J API;例如,Android 不显示一些已弃用的 API 或 ICU 团队尚未将其声明为“稳定”的 API。由于 ICU 团队将来会弃用这些 API,因此,Android 也会将其标记为已弃用,但将继续包含它们。

表 1. Android 中使用的 ICU 和 CLDR 版本]。

Android API 级别 ICU 版本 CLDR 版本
Android 7.0(API 级别 24) 56 28

以下是几点注意事项:

  • ICU4J Android 框架 API 不包含所有的 ICU4J API。
  • NDK 开发者应了解 Android ICU4C 不受支持。
  • Android 框架中的 API 不会取代 Android 对使用资源进行本地化的支持。

从 com.ibm.icu 迁移至 android.icu 软件包


如果您已在应用中使用 ICU4J API,且android.icu API 符合您的要求,那么要迁移至框架 API,需要将 Java 导入从 com.ibm.icu 更改为 android.icu。然后,您可以从 APK 移除您自己的 ICU4J 文件的副本。

:ICU4J 框架 API 使用 android.icu命名空间,而不是 com.ibm.icu。这是为了避免在包含自己的 com.ibm.icu 库的 APK 中出现命名空间冲突。

从其他 Android SDK API 迁移至 android.icu API

java 和 android 软件包中的某些类与在 ICU4J 中找到的一些类等效。不过,ICU4J 通常为标准和语言提供更广泛的支持。

下面是一些入门示例:

替代项
java.lang.Character android.icu.lang.UCharacter
java.text.BreakIterator android.icu.text.BreakIterator
java.text.DecimalFormat android.icu.text.DecimalFormat
java.util.Calendar android.icu.util.Calendar
android.text.BidiFormatter android.icu.text.Bidi
android.text.format.DateFormat android.icu.text.DateFormat
android.text.format.DateUtils android.icu.text.DateFormat android.icu.text.RelativeDateTimeFormatter

授权


ICU4J 按照 ICU 许可发布。如需了解详情,请参阅 ICU 用户指南