android 4.4.系统 添加一门新的语言

来源:互联网 发布:小田切让演技知乎 编辑:程序博客网 时间:2024/06/16 14:11
备注:此例是在4.4系统的基础上添加孟加拉语,具体添加什么语言 其语言代码都各不一样(bn_BD)




1.在external/icu4c/data/locales/底下新增文件 bn_BD.txt内容如下(不过一般这个文件是有的,有的话就不要加了,这步忽略)


bn_BD{
    Version{"2.0.82.45"}
}


2.在external/icu4c 底下mkdir icuBuild 然后cd external/icu4c/icuBuild  执行命令 ../runConfigureICU Linux


3.进入external/icu4c/icuBuild下make -j8


4.把新生成的icu4c/icuBuild/data/out/tmp/icudt51l.dat 复制到 icu4c/stubdata/下面, 替换icudt51l-all.dat
由于icu版本的差异性  这里的icudt51l.dat只供参考  一般是这样的icudt*.dat






5.把icu4c/icuBuild/bin/底下的gencnval  genrb  icupkg  makeconv 复制到 prebuilts/misc/linux-x86_64/icu-51/底下,替换原来的文件


注:prebuilts/misc/linux-x86_64/icu-51这个路径可能平台不一样 路径会改变 
这里可以在prebuilts下搜索gencnval文件找到路径   find ./prebuilts -name gencnval




6.在icu4c/stubdata/下执行./icu_dat_generator.py


如果提示:
$ANDROID_BUILD_TOP not set! Run 'env_setup.sh'.


解决方法:
手动为ANDROID_BUILD_TOP赋值  export ANDROID_BUILD_TOP = 源码的绝对路径


如果提示:
/home/luwl/share/work/rk3126_kk444/prebuilts/misc/linux-x86_64/icu-51/icupkg: error while loading shared libraries: libicutu.so.51: cannot open shared object file: No such file or directory
['/home/luwl/share/work/rk3126_kk444/prebuilts/misc/linux-x86_64/icu-51/icupkg', '/home/luwl/share/work/rk3126_kk444/external/icu4c/stubdata/icudt51l.dat', '-x', '*', '-d', '/home/luwl/share/work/rk3126_kk444/external/icu4c/tmp']




解决方法:
find /usr/ -name libicutu.so.51 -->得到库的位置
export LD_LIBRARY_PATH=/usr/lib64/libicutu.so.51:$LD_LIBRARY_PATH --》把库所在的目录加载到环境变量中
再次执行 ./icu_dat_generator.py


如果提示
------ Processing '/home/luwl/share/work/rk3126_kk444/external/icu4c/stubdata/icu-data-default.txt'...
Generated ICU data: /home/luwl/share/work/rk3126_kk444/external/icu4c/stubdata/icudt51l-default.dat
则成功


7.在framework/base/core/res/res/ 和 package/app/Setting/res/底下添加values-bn-rBD/文件夹
这个语言包文件夹 可以找客户要 或者找RK要 其他平台的代码上有的话  也可以拷贝过来直接用


8,在build/target/product/language-full.mk里添加了的PRODUCT-LOCALES:=bn_BD


9,make -j8 


10, 打包,烧录  即可看到效果








附:
文件icu_dat_generator.py 371行:
source_dat = os.path.basename(glob.glob(os.path.join(stubdata_dir, "icudt*.dat"))[0])


os.path.basename(path)   查询路径中包含的文件名
path = os.path.join('/', 'home', 'work', '123.txt')  #使用目录名和文件名构成一个路径字符串


print(os.path.exists(path))    # 查询文件是否存在
print(os.path.getsize(path))   # 查询文件大小
print(os.path.getatime(path))  # 查询文件上一次读取的时间
print(os.path.getmtime(path))  # 查询文件上一次修改的时间
print(os.path.isfile(path))    # 路径是否指向常规文件
print(os.path.isdir(path))     # 路径是否指向目录文件


glob.glob(r'c:\*.txt')
我这里就是获得C盘下的所有txt文件


glob.glob(r'E:\pic\*\*.jpg')
获得指定目录下的所有jpg文件









0 0
原创粉丝点击