Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: jb

This branch is 58 commits behind jb-mr2

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.


This directory is used for building our Android ICU data file.

1. To generate ICU data files:run the script.
   The command is:
     ./ [-v] [-h]

2. To add a resource to Android ICU data file: insert an entry to
   icudtxx-<tag name>.txt under external/icu4c/stubdata directory then
   run the
   For example, to add French sort to icudt 48l-us.dat, you need to
   a. Add an entry, "coll/fr.res", into external/icu4c/stubdata/icudt 48l-us.txt
   b. run "./".

3. To add a new Android ICU data file: create the .txt file and run the script
   to generate the .dat file.
   For example, to add icudt 48l-latin.dat, you need to
   a. Make a new file icudt 48l-latin.txt to include the resource list.
   b. run "./".

4. Add a new resource or modify existing ICU resource definition:
   Note: This is a rare case. You should talk to ICU team first if it is a bug
   in ICU resource or a feature enhancement before making such changes.
   If you would like to add existing ICU resource to Android, please check #2.
   a. Create or change the text format resource files under external/icu4c/data.
   b. Make a temporary directory for ICU build.
      i.e. mkdir external/icu4c/icuBuild
   c. cd to ICU build directory.
      i.e. cd external/icu4c/icuBuild
   d. Run external/icu4c/runConfigureICU with "Linux" option to generate the
      i.e. $ANDROID_BUILD_TOP/external/icu4c/runConfigureICU Linux
   e. make -j2
   f. The new icudtxxl.dat is under data/out/tmp and the individual resources are
      under data/out/build/icudtxxl
      For example, you can find data/out/tmp/icudt 48l.dat and data/out/build/icudt 48l/*.res.
   g. Copy the new icudtxxl.dat over $ANDROID_BUILD_TOP/external/icu4c/stubdata/icudtxxl-all.dat.
      i.e. cp data/out/tmp/icudt 48l.dat $ANDROID_BUILD_TOP/external/icu4c/stubdata/icudt 48l-all.dat.
   h. Check #1 or #2 to replace or add resource to ICU.
   i. Clean up ICU build directory.
   j. Discuss with icu-team how to include the change to public ICU.

Locale Resource Files:
- icudt 48l-all.dat contains the resources in packed
  form. It includes everything that comes with
  a vanilla ICU  4.8. uses this file to generate
  custom build dat files.

- cnv/*.cnv are the additional encodings required by Android.
  These are
  - gsm-03.38-2000.cnv
  - iso-8859_16-2001.cnv
  - docomo-shift_jis-2007.cnv
  - kddi-jisx-208-2007.cnv
  - kddi-shift_jis-2007.cnv
  - softbank-jisx-208-2007.cnv
  - softbank-shift_jis-2007.cnv

- Text format ICU resource files are under external/icu4c/data directory.
  Binary resource files are packaged in external/icu4c/stubdata/icudtxxl-all.dat.
  If you have special need such as bug fxings or examining individual resource size,
  you can run icupkg utility to extract icudtxxl-all.dat into a temporary directory.
  For example:
  cd $ANDROID_BUILD_TOP/external/icu4c/stubdata
  cp icudt 48l-all.dat icudt 48l.dat
  mkdir tempDir
  $ANDROID_BUILD_TOP/prebuilt/linux-x86_64/icu-4.8/icupkg  icudt 48l.dat -x "*" -d tempDir

Run ICU tests:
ICU tests are not part of Android build. If you change the ICU code or data,
it is highly recommended to run ICU tests.
 1. Remove the flag "-R" in external/icu4c/data/
    "Reverse collation keys" tables are not included in ICU data on Android. To
    pass ICU collation tests, you need to delete the flag "-R" in
    Search for " -R" under "### collation res" section in external/icu4c/data/,
    delete all of them.
 2. Make a temporary directory for ICU build.
    i.e. mkdir external/icu4c/icuBuild
 3. cd to ICU build directory.
    i.e. cd external/icu4c/icuBuild
 4. Run external/icu4c/runConfigureICU with "Linux" option to generate the makefile.
    i.e. $ANDROID_BUILD_TOP/external/icu4c/runConfigureICU Linux
 5. make -j2 check
 6. Check the result. Ignore the errors from tsconv.

  1. The script assumes you have done and choosecombo before, because
  it relies on an environment variable pointing
  to the prebuilt tools.

Something went wrong with that request. Please try again.