2011-03-07 70 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