Android 如何編譯ICU資源

 

正文

 

 

如何編譯ICU資源

如果隻是測試修改後效果,執行步驟A即可;如果需要build後生效,則需要執行全部步驟

A. 在臨時目錄中編譯ICU資源

1. 在external/icu4c下新建臨時目錄icubuild,進入icubuild目錄

$mkdir external/icu4c/icuBuild

$cd external/icu4c/icuBuild

2. 執行icuConfigureRun Linux命令,生成make文件

$.././runConfigureICU Linux

3. 執行make -j2命令,

$make -j2

對於GB版本,如果make -j2出錯,需要用mtk提供的文件(Android 2.3 make-j2 ERROE.rar)替換(需要備份原文件)。

4. 將生成的external/icu4c/icuBuild/data/out/tmp/icudt44l.dat push到手機測試

$adb remount

$adb push external/icu4c/icuBuild/data/out/tmp/icudt44l.dat system/usr/icu/

$adb reboot

ICS對應的是icudt46l.dat,

JB以及以後版本是icudt48l.dat

B. COPY所需文件

1、將第一步生成的externalicu4cicubuilddataout mpicudt44l.dat復制到externalicu4cstubdata下並改名為icudt44l-all.dat,覆蓋原來的同名文件。

2、對於GB版本,從ICS工程上拷貝路徑prebuildlinux-x86icu-4.4文件夾,放到相應的路徑下

ICS版本是icudt46l.dat和icudt46l-all.dat

JB及以上是icudt48l.dat和icudt48l-all.dat

C. 配置環境變量

重新配置環境變量(如果不配置正確會導致執行腳本出錯)。以我的系統為例,配置過程如下:

1. 在終端中進入/proj/mtk71491/Desktop/GB/alps目錄即:

$cd /proj/mtk71491/Desktop/GB/alps

2. 然後執行腳本(等價於./ build/envsetup.sh):

$source build/envsetup.sh

3. 配置環境變量(註意“=”前後不要有空格)。

$export ANDROID_EABI_TOOLCHAIN=/proj/mtk71491/Desktop/GB/alps/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/(JB2以及以上不執行此步驟)

$export LD_LIBRARY_PATH=/proj/mtk71491/Desktop/GB/alps/prebuilt/linux-x86/icu-4.4/(JB以及上以跳過這一步)

$export ANDROID_BUILD_TOP=/proj/mtk71491/Desktop/GB/alps/

執行完沒有任何提示說明配置成功。

D. 執行腳本,重新生成.dat文件

執行腳本,如果遇到文檔印尼語錯誤請用MTK提供的腳本(icu_dat_generator.rar)替換後再執行,如下所示:

1. 進入/proj/mtk71491/Desktop/GB/alps/external/icu4c/studdata目錄

$cd external/icu4c/studdata

2. 執行腳本

$./icu_dat_generator.py 4.4 (ICS及以後版本執行$./icu_dat_generator.py)

如果該腳本執行成功,則會更新一遍stubdata下的icudt44l-**.dat這些文件,如果看到這些文件的修改時間變成瞭最新的時間,就說明已經重新生成真正最後起 作用的是icudt44l-large.dat這個文件。

ICS版是icudt46l-default.dat

JB以及以上是icudt48l-default.dat

E. 重新編譯工程

一般修改後都是重新編譯工程來測試效果,使用remake android命令即可.

F. 如果執行./icu_dat_generator.py報以下錯誤

Traceback (most recent call last):

File ./icu_dat_generator.py, line 296, in

main()

File ./icu_dat_generator.py, line 261, in main

icu_version = re.sub(r([^0-9]), , os.path.basename(input_files[0]))

IndexError: list index out of range

可能是環境變量沒有配置好,請使用絕對路徑,而不是相對路徑。

發佈留言