blob: 9a1dfa8312a3e43750ea63704006bc90e01bd24b [file] [log] [blame]
David Friedman8f1f66f2016-04-13 18:11:00 -07001page.title=ICU4J Android 框架 API
Dirk Dougherty9ae42db2016-05-15 18:52:24 -07002page.image=images/cards/card-nyc_2x.jpg
David Friedman8f1f66f2016-04-13 18:11:00 -07003
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 和全球化支持。
31Android 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>