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。
Android 通过android.icu 软件包(而非 com.ibm.icu)显示 ICU4J API 的子集。由于种种原因,Android 框架可能选择不显示 ICU4J API;例如,Android 不显示一些已弃用的 API 或 ICU 团队尚未将其声明为“稳定”的 API。由于 ICU 团队将来会弃用这些 API,因此,Android 也会将其标记为已弃用,但将继续包含它们。
Android API 级别 ICU 版本 CLDR 版本 Android 7.0(API 级别 24) 56 28以下是几点注意事项:
ICU4J Android 框架 API 不包含所有的 ICU4J API。NDK 开发者应了解 Android ICU4C 不受支持。Android 框架中的 API 不会取代 Android 对使用资源进行本地化的支持。如果您已在应用中使用 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 中出现命名空间冲突。
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.RelativeDateTimeFormatterICU4J 按照 ICU 许可发布。如需了解详情,请参阅 ICU 用户指南。