1page.title=API-интерфейсы ICU4J в платформе Android
2page.tags=androidn
3page.image=images/cards/card-nyc_2x.jpg
4
5@jd:body
6
7<div id="qv-wrapper">
8<div id="qv">
9<h2>Содержание документа:</h2>
10<ol>
11    <li><a href="#relation">Связь с ICU4J</a></li>
12    <li><a href="#migration">Переход на API-интерфейсы android.icu с ICU4J</a></li>
13    <li><a href="#licence">Лицензирование</a></li>
14</ol>
15
16<h2>См. также:</h2>
17<ol>
18  <li>
19    <a class="external-link" href="http://userguide.icu-project.org">Документация по ICU4J</a>
20  </li>
21
22  <li>
23    <a class="external-link" href="http://site.icu-project.org/#TOC-What-is-ICU-">Последние стандарты, поддерживаемые
24ICU4J</a>
25  </li>
26</ol>
27</div>
28</div>
29
30<p>
31  ICU4J — широко используемый набор библиотек Java с открытым кодом, обеспечивающий для приложений поддержку формата Unicode
32и глобализации. Android N
33открывает в платформе Android частичный набор API-интерфейсов ICU4J, который разработчики приложений
34могут использовать в составе пакета {@code android.icu}. Эти API используют
35данные локализации, присутствующие на устройстве. Это позволяет уменьшить размеры APK
36, не компилируя библиотеки ICU4J в APK, а
37просто вызывая их в платформе. (В этом случае может оказаться удобно предоставлять
38<a href="{@docRoot}google/play/publishing/multiple-apks.html">несколько версий
39вашего APK</a>, чтобы пользователи с версиями Android ниже Android N
40могли загружать версию приложения, содержащую библиотеки ICU4J.)
41</p>
42
43<p>
44  В начале этого документа предоставляется базовая информация по минимальным уровням
45Android API, которые требуются для поддержки этих библиотек. Далее приводятся необходимые пояснения
46о реализации ICU4J в Android. В заключение
47в нем рассказывается, как использовать API-интерфейсы ICU4J в платформе Android.
48</p>
49
50<h2 id="relation">Связь с ICU4J</h2>
51
52<p>
53  В Android N частичный набор API-интерфейсов ICU4J открывается через пакет
54  <code>android.icu</code>, а не через <code>com.ibm.icu</code>. Для платформы
55Android может быть принято решение не
56открывать API-интерфейсы ICU4J по различным причинам. Например, Android N не открывает
57некоторые устаревшие API-интерфейсы, а также те, которые рабочая группа ICU еще не объявила
58стабильными. По мере того, как рабочая группа ICU будет объявлять API-интерфейсы устаревшими, они будут так же помечаться и в Android,
59но при этом будут и дальше входить в состав платформы.
60</p>
61
62<p class="table-caption"><strong>Таблица 1.</strong> Версии ICU и CLDR, используемые
63в Android N.</p>
64<table>
65<tr>
66<th>Уровень Android API</th>
67<th>Версия ICU</th>
68<th>Версия CLDR</th>
69</tr>
70<tr>
71<td>Android N</td>
72<td>56</td>
73<td>28</td>
74</tr>
75</table>
76
77<p>Следует отметить несколько важных моментов:</p>
78
79<ul>
80<li>В состав API-интерфейсов ICU4J платформы Android входят не все API-интерфейсы ICU4J.</li>
81<li>Разработчикам NDK следует помнить, что Android ICU4C не поддерживается.</li>
82<li>API-интерфейсы в платформе Android не заменяют поддержку
83<a href="{@docRoot}guide/topics/resources/localization.html">локализации с
84ресурсами</a> в Android.</li>
85</ul>
86
87<h2 id="migration">Переход на пакет android.icu с com.ibm.icu</h2>
88
89<p>
90  Если вы уже используете в своем приложении API-интерфейсы ICU4J, и если API
91  <code>android.icu</code> соответствуют вашим требованиям, то для перехода на
92API-интерфейсы платформы вам нужно будет изменить импорт Java
93с <code>com.ibm.icu</code> на <code>android.icu</code>. После этого вы сможете
94удалить свои копии файлов ICU4J из APK.
95</p>
96
97<p class="note">
98  <b>Примечание</b>. API-интерфейсы ICU4J в платформе используют пространство имен {@code android.icu}
99вместо {@code com.ibm.icu}. Это позволяет избежать конфликтов пространств имен
100в пакетах APK, содержащих собственные библиотеки {@code com.ibm.icu}.
101</p>
102
103<h3 id="migrate-from-android">
104  Переход на API-интерфейсы android.icu с других API Android SDK
105</h3>
106
107<p>
108  Некоторые классы в пакетах <code>java</code> и <code>android</code> имеют
109эквиваленты в ICU4J. Однако ICU4J обычно обеспечивает более широкую
110поддержку стандартов и языков.
111</p>
112<p>Ниже приведены несколько примеров для начала работы:</p>
113<table>
114<tr>
115<th>Класс</th>
116<th>Альтернативы</th>
117</tr>
118<tr>
119<td><code>java.lang.Character</code> </td>
120<td><code>android.icu.lang.UCharacter</code> </td>
121</tr>
122<tr>
123<td><code>java.text.BreakIterator</code> </td>
124<td><code>android.icu.text.BreakIterator</code> </td>
125</tr>
126<tr>
127<td><code>java.text.DecimalFormat</code> </td>
128<td><code>android.icu.text.DecimalFormat</code> </td>
129</tr>
130<tr>
131<td><code>java.util.Calendar</code></td>
132<td>
133<code>android.icu.util.Calendar</code></td>
134</tr>
135<tr>
136<td><code>android.text.BidiFormatter</code>
137 </td>
138<td><code>android.icu.text.Bidi</code>
139 </td>
140</tr>
141<tr>
142<td><code>android.text.format.DateFormat</code>
143 </td>
144<td><code>android.icu.text.DateFormat</code>
145 </td>
146</tr>
147<tr>
148<td><code>android.text.format.DateUtils</code> </td>
149<td><code>android.icu.text.DateFormat</code>
150<code>android.icu.text.RelativeDateTimeFormatter</code>
151</td>
152</tr>
153</table>
154
155<h2 id="licence">Лицензирование</h2>
156
157<p>
158  ICU4J выпускается по лицензии ICU. Более подробную информацию можно найти в <a class="external-link" href="http://userguide.icu-project.org/icufaq#TOC-How-is-the-ICU-licensed-">Руководстве пользователя
159ICU.</a>
160</p>
161