ICU 是开源项目, 提供了最新的unicode标准,字符集转换, 以及超过300个国家的本地数据, 比如数字,时间和信息显示格式等,以及不同语言下的文本排序,日历相关的日期时间操作等。
详细内容可以访问:
http://userguide.icu-project.org/
在android 中, ICU 源码位于 external/icu/下。
本文介绍在android下, 对icu data做了修改后,如何生成.dat文件。
如何在icu/icu4c/source/data下修改/增加了文件,那么就需要重新build .dat文件。 这个.dat的原始文件在icu4c/source/stubdata下,名字为icudt<version><flag>.dat, 其中<version>是两个数字,表明icu版本数, <flag>是一个字符,表明该.dat文件的内部格式。例如android M上.dat文件名为icudt55l.dat.
具体编译步骤:
1.修改icu4c/souce/data下文件
2.在终端中进入目录icu4c/source,:
cd icu4c/source
3. config 编译选项, 其中Linux代表linux, 终端中输入:
./runConfigureICU Linux --with-data-packaging=archive
注:如果仅仅希望生成包含icu data的icudtxxx.dat 文件,可以使用编译选项:--with-data-packaging=archive, 即终端中输入:
./runConfigureICU Linux --with-data-packaging=archive
4. 终端中输入,:
make INCLUDE_UNI_CORE_DATA=1
然后就可以在icu4c/source/data/out/tmp下看到新生成的icudtxxx.dat 文件
注:必须添加INCLUDE_UNI_CORE_DATA=1, 这样相应的一些资源文件才能被加入.dat文件内, 比如uprops.icu,否则可能导致开机时找不到相应资源死机。跟着各编译选项相关的文件可参看icu4c/source/data/Makefile.in。
5. push icudtxxx.dat到手机/system/usr/icu
在android l and android M 上,新加入了icu4j, 如果修改了icu4c下的data文件,那么也要重新生成icu4j/main/shared下的两个jar文件icudata.jar 和icutzdata.jar.
下面介绍如何生成icudata.jar 和icutzdata.jar,在以上五步的基础上:
6. cd data (external/icu/icu4c/source/data)
7. make ICU4J_ROOT=../../../icu4j icu4j-data-install
就可以看到在icu4j/main/shared重新生成了两个jar文件icudata.jar 和icutzdata.jar
关于详细内容也可以参看
android源码中的external/icu/icu4c/readme.html
android源码中的external/icu/icu4c/source/data/icu4j-readme.txt
http://userguide.icu-project.org/icudata