linuxbuild
① android 怎麼使用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
可能是環境變數沒有配置好,請使用絕對路徑,而不是相對路徑。