2011-03-07 74 views
0

一个问题我一个机器人产品设备上运行CTS(基码是机器人2.3),但以下情况下失败:约字符集编码和ICU4C

java.io.UnsupportedEncodingException: GB18030 at java.nio.charset.Charset.forNameUEE(Charset.java:317) 
at java.nio.charset.Charset.forNameUEE(Charset.java:317) 
at java.lang.String.getBytes(String.java:973) 
at org.apache.harmony.luni.tests.java.lang.StringBufferTest.test_toString(StringBufferTest.java:101) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) 
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529) 
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447) 
at java.nio.charset.Charset.forName(Charset.java:304) 
at java.nio.charset.Charset.forNameUEE(Charset.java:315) 
at java.nio.charset.Charset.forNameUEE(Charset.java:317) 
at java.lang.String.getBytes(String.java:973) 
at org.apache.harmony.luni.tests.java.lang.StringBufferTest.test_toString(StringBufferTest.java:101) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) 
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529) 
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447) 
at java.nio.charset.Charset.forName(Charset.java:304) 
at java.nio.charset.Charset.forNameUEE(Charset.java:315) 

虽然我运行Android上的相同的测试SDK 2.3.3模拟器,它通过。

然后我比较了Android 2.3.3和我的代码之间的源代码,没有什么不同。 但我认为必须有一些不同的东西,我没有注意到。 然后我发现这个问题与ICU4C有关,但ICU4C非常复杂,有谁能告诉我任何线索来跟踪这个问题? 或者我应该如何着手跟踪这个问题?

非常感谢。

回答

0

我已经解决了这个问题。实际上,这是一个构建问题,不是由ICU4C引起的。 在make文件中,必须设置PRODUCT_LOCALE。然后建成后,CTS可以通过。

0

这个问题还没有解决,我会提供更多的信息,希望有人能帮到。

  1. 通过一些调试运行,我发现GB18030不支持,因为GB18030 conventer不可用。

  2. 在 '/android_root/source/external/icu4c/stubdata/readme.txt',Android上的可用 转换器可以看出(无GB18030转换器):

    • CNV/* CNV是Android所需的附加编码。 这些是
    • GSM-03.38-2000.cnv
    • 异8859_16-2001.cnv
    • DoCoMo公司-shift_jis访问-2007.cnv
    • KDDI-jisx-208-2007.cnv
    • kddi- shift_jis访问-2007.cnv
    • 软银-jisx-208-2007.cnv
    • 软银-shift_jis访问-2007.cnv

所以这主要是一个构建问题,是否有人知道如何在Android上构建ICU4C以及如何添加gb18030转换器?

我正在尝试构建ICU4C,但尚未成功。

0

我已经用icu 4.6版做了这个。下载icu并绑定您的android.mk中的目录“common”.c和.cpp文件的所有代码。制作一个静态库并使用application.mk中的以下标志进行编译。

APP_CPPFLAGS:= -DU_COMMON_IMPLEMENTATION -DU_STATIC_IMPLEMENTATION -DU_PALMOS APP_CFLAGS:= -DU_COMMON_IMPLEMENTATION -DU_STATIC_IMPLEMENTATION -DU_PALMOS

我发现平台头文件 “ppalmos.h” 正在工作,因此,上述预处理器指令 “U_PALMOS” 。

Makusi