David Friedman | 8f1f66f | 2016-04-13 18:11:00 -0700 | [diff] [blame] | 1 | page.title=ICU4J Android 框架 API |
Dirk Dougherty | 9ae42db | 2016-05-15 18:52:24 -0700 | [diff] [blame] | 2 | page.image=images/cards/card-nyc_2x.jpg |
David Friedman | 8f1f66f | 2016-04-13 18:11:00 -0700 | [diff] [blame] | 3 | |
| 4 | @jd:body |
| 5 | |
| 6 | <div id="qv-wrapper"> |
| 7 | <div id="qv"> |
| 8 | <h2>本文内容:</h2> |
| 9 | <ol> |
| 10 | <li><a href="#relation">与 ICU4J 的关系</a></li> |
| 11 | <li><a href="#migration">从 ICU4J 迁移至 android.icu API </a></li> |
| 12 | <li><a href="#licence">授权</a></li> |
| 13 | </ol> |
| 14 | |
| 15 | <h2>另请参阅</h2> |
| 16 | <ol> |
| 17 | <li> |
| 18 | <a class="external-link" href="http://userguide.icu-project.org">ICU4J 的文档</a> |
| 19 | </li> |
| 20 | |
| 21 | <li> |
| 22 | <a class="external-link" href="http://site.icu-project.org/#TOC-What-is-ICU-">ICU4J 支持的最新标准</a> |
| 23 | |
| 24 | </li> |
| 25 | </ol> |
| 26 | </div> |
| 27 | </div> |
| 28 | |
| 29 | <p> |
| 30 | ICU4J 是一个广泛使用的开源 Java 库集合,为软件应用提供 Unicode 和全球化支持。 |
| 31 | Android N 在 {@code android.icu} 软件包下显示 Android 框架中的 ICU4J API 子集,供应用开发者使用。 |
| 32 | |
| 33 | 这些 API 使用设备上具有的本地化数据。 |
| 34 | 因此,您可以通过不将 ICU4J 库编译到 APK 来减少 APK 占用空间;相反,您可以只在框架中调用它们。 |
| 35 | |
| 36 | (在此情况下,您可能想要提供<a href="{@docRoot}google/play/publishing/multiple-apks.html">多个版本的 APK</a>,这样,运行比 Android N 低的 Android 版本的用户可以下载包含 ICU4J 库的应用版本。) |
| 37 | |
| 38 | |
| 39 | |
| 40 | </p> |
| 41 | |
| 42 | <p> |
| 43 | 本文档开头提供了有关支持这些库所需的最低 Android API 级别的一些基本信息。 |
| 44 | 然后,介绍关于 Android 特定的 ICU4J 实现您需要了解的内容。 |
| 45 | 最后,介绍如何在 Android 框架中使用 ICU4J API。 |
| 46 | |
| 47 | </p> |
| 48 | |
| 49 | <h2 id="relation">与 ICU4J 的关系</h2> |
| 50 | |
| 51 | <p> |
| 52 | Android N 通过 |
| 53 | <code>android.icu</code> 软件包(而非 <code>com.ibm.icu</code>)显示 ICU4J API 的子集。由于种种原因,Android 框架可能选择不显示 ICU4J API;例如,Android N 不显示一些已弃用的 API 或 ICU 团队尚未将其声明为“稳定”的 API。 |
| 54 | |
| 55 | |
| 56 | |
| 57 | 由于 ICU 团队将来会弃用这些 API,因此,Android 也会将其标记为已弃用,但将继续包含它们。 |
| 58 | |
| 59 | </p> |
| 60 | |
| 61 | <p class="table-caption"><strong>表 1.</strong> Android N 中使用的 ICU 和 CLDR 版本。 |
| 62 | </p> |
| 63 | <table> |
| 64 | <tr> |
| 65 | <th>Android API 级别</th> |
| 66 | <th>ICU 版本</th> |
| 67 | <th>CLDR 版本</th> |
| 68 | </tr> |
| 69 | <tr> |
| 70 | <td>Android N</td> |
| 71 | <td>56</td> |
| 72 | <td>28</td> |
| 73 | </tr> |
| 74 | </table> |
| 75 | |
| 76 | <p>以下是几点注意事项:</p> |
| 77 | |
| 78 | <ul> |
| 79 | <li>ICU4J Android 框架 API 不包含所有的 ICU4J API。</li> |
| 80 | <li>NDK 开发者应了解 Android ICU4C 不受支持。</li> |
| 81 | <li>Android 框架中的 API 不会取代 Android 对<a href="{@docRoot}guide/topics/resources/localization.html">使用资源进行本地化</a>的支持。 |
| 82 | |
| 83 | </li> |
| 84 | </ul> |
| 85 | |
| 86 | <h2 id="migration">从 com.ibm.icu 迁移至 android.icu 软件包</h2> |
| 87 | |
| 88 | <p> |
| 89 | 如果您已在应用中使用 ICU4J API,且 |
| 90 | <code>android.icu</code> API 符合您的要求,那么要迁移至框架 API,需要将 Java 导入从 <code>com.ibm.icu</code> 更改为 <code>android.icu</code>。 |
| 91 | |
| 92 | 然后,您可以从 APK 移除您自己的 ICU4J 文件的副本。 |
| 93 | |
| 94 | </p> |
| 95 | |
| 96 | <p class="note"> |
| 97 | <b>注</b>:ICU4J 框架 API 使用 {@code android.icu} |
| 98 | 命名空间,而不是 {@code com.ibm.icu}。这是为了避免在包含自己的 {@code com.ibm.icu} 库的 APK 中出现命名空间冲突。 |
| 99 | |
| 100 | </p> |
| 101 | |
| 102 | <h3 id="migrate-from-android"> |
| 103 | 从其他 Android SDK API 迁移至 android.icu API |
| 104 | </h3> |
| 105 | |
| 106 | <p> |
| 107 | <code>java</code> 和 <code>android</code> 软件包中的某些类与在 ICU4J 中找到的一些类等效。 |
| 108 | 不过,ICU4J 通常为标准和语言提供更广泛的支持。 |
| 109 | |
| 110 | </p> |
| 111 | <p>下面是一些入门示例:</p> |
| 112 | <table> |
| 113 | <tr> |
| 114 | <th>类</th> |
| 115 | <th>替代项</th> |
| 116 | </tr> |
| 117 | <tr> |
| 118 | <td><code>java.lang.Character</code> </td> |
| 119 | <td><code>android.icu.lang.UCharacter</code> </td> |
| 120 | </tr> |
| 121 | <tr> |
| 122 | <td><code>java.text.BreakIterator</code> </td> |
| 123 | <td><code>android.icu.text.BreakIterator</code> </td> |
| 124 | </tr> |
| 125 | <tr> |
| 126 | <td><code>java.text.DecimalFormat</code> </td> |
| 127 | <td><code>android.icu.text.DecimalFormat</code> </td> |
| 128 | </tr> |
| 129 | <tr> |
| 130 | <td><code>java.util.Calendar</code></td> |
| 131 | <td> |
| 132 | <code>android.icu.util.Calendar</code></td> |
| 133 | </tr> |
| 134 | <tr> |
| 135 | <td><code>android.text.BidiFormatter</code> |
| 136 | </td> |
| 137 | <td><code>android.icu.text.Bidi</code> |
| 138 | </td> |
| 139 | </tr> |
| 140 | <tr> |
| 141 | <td><code>android.text.format.DateFormat</code> |
| 142 | </td> |
| 143 | <td><code>android.icu.text.DateFormat</code> |
| 144 | </td> |
| 145 | </tr> |
| 146 | <tr> |
| 147 | <td><code>android.text.format.DateUtils</code> </td> |
| 148 | <td><code>android.icu.text.DateFormat</code> |
| 149 | <code>android.icu.text.RelativeDateTimeFormatter</code> |
| 150 | </td> |
| 151 | </tr> |
| 152 | </table> |
| 153 | |
| 154 | <h2 id="licence">授权</h2> |
| 155 | |
| 156 | <p> |
| 157 | ICU4J 按照 ICU 许可发布。如需了解详情,请参阅 <a class="external-link" href="http://userguide.icu-project.org/icufaq#TOC-How-is-the-ICU-licensed-">ICU 用户指南</a>。 |
| 158 | |
| 159 | </p> |