The Android Developer Challenge is back! Submit your idea before December 2.

APIs de estrutura do Android para ICU4J

O ICU4J é um conjunto de bibliotecas Java de código aberto e amplamente usadas que fornecem compatibilidade com Unicode e globalização para aplicativos de software. A partir do Android 7.0 (API de nível 24), o Android expõe um subconjunto das ICU4J APIs para os desenvolvedores de aplicativos usarem com o pacote android.icu. Essas APIs usam dados de localização presentes no dispositivo. Consequentemente, você pode reduzir o uso de APK ao não compilar as bibliotecas do ICU4J no seu APK. Em vez disso, pode simplesmente chamá-las na estrutura. (Neste caso, pode ser conveniente fornecer várias versões do seu APK para que os usuários que tenham versões inferiores ao Android 7.0 (API de nível 24) possam baixar uma versão do aplicativo que contenha as bibliotecas do ICU4J.)

Este documento começa fornecendo informações básicas sobre os níveis mínimos da Android API necessários para oferecer compatibilidade com essas bibliotecas. Em seguida, ele explica o que você deve saber sobre a implementação do ICU4J específica do Android. Por fim, ele informa como usar as APIs do ICU4J na estrutura do Android.

Relação com o ICU4J

O Android expõe um subconjunto de APIs do ICU4J por meio do pacote android.icu, não do com.ibm.icu. A estrutura do Android pode optar por não expor as APIs do ICU4J por diversos motivos. Por exemplo, o Android não expõe algumas APIs obsoletas ou que a equipe do ICU ainda não declarou como estáveis. Conforme a equipe do ICU torna APIs obsoletas, o Android também as marcará como obsoletas, mas continuará a incluí-las.

Tabela 1. Versões ICU e CLDR usadas no Android.

Nível da Android API Versão ICU Versão CLDR
Android 7.0 (nível de API 24) 56 28

Algumas observações importantes:

  • As APIs de estrutura do Android para ICU4J não contêm todas as APIs do ICU4J.
  • Desenvolvedores de NDK devem saber que o Android ICU4C não é compatível.
  • As APIs da estrutura do Android não substituem a compatibilidade do Android para a localização com recursos.

Migrar do pacote com.ibm.icu para o android.icu

Se você já estiver usando as APIs do ICU4J no seu aplicativo e as APIs android.icu atenderem aos seus requisitos, a migração para as APIs de estrutura exigirão que você altere as importações Java de com.ibm.icu para android.icu. Assim, você poderá remover sua cópia dos arquivos do ICU4J do APK.

Observação: As APIs de estrutura do ICU4J usam o namespace android.icu em vez de com.ibm.icu. Isso ocorre para evitar conflitos de namespace em APKs que contêm as próprias bibliotecas com.ibm.icu.

Migrar para APIs android.icu de outras APIs do Android SDK

Algumas classes dos pacotes java e android têm equivalentes às encontradas no ICU4J. No entanto, o ICU4J frequentemente fornece uma compatibilidade mais ampla para padrões e linguagens.

Alguns exemplos para você começar:

Classe Alternativas
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

Licenciamento

O ICU4J é liberado sob a licença do ICU. Para saber mais, consulte o Guia do usuário do ICU.