Cocos2d-x引入中文支持库并移植到android平台

时间:2022-11-02 08:41:54

先说下版本:
Cocos2d-x v3.4
ndk_r10d

在cocos2d-x中直接使用中文会显示乱码,什么从xml文件读取中文,将文件格式保存为utf-8,都不是解决方法,会出现一些其它的问题。Cocos2d-x提供了iconv库,解决中文显示问题。

在win32平台可以直接引入iconv库,这里就不多赘述。
我这里在win32平台是把iconv相关文件直接和源码放在一起的,并加以封装方便使用,这里给出源码下载链接可在win32 平台直接使用的iconv库

android下就不能直接使用cocos2d-x提供的iconv库,需要下载一个已经在linux环境下编译好的iconv库。下载地址:编译好的iconv库

将编译好的源码解压放在 你的项目/cocos2d文件夹下,改名字为iconv。
注:这里需确保下载的库里面包含Android.mk文件,文件内容为

LOCAL_PATH:= $(call my-dir)
#libiconv.so
include $(CLEAR_VARS)
LOCAL_MODULE := iconv_static

LOCAL_MODULE_FILENAME := libiconv
LOCAL_CFLAGS := \
-Wno-multichar \
-DAndroid \
-DLIBDIR="c" \
-DBUILDING_LIBICONV \
-DIN_LIBRARY
LOCAL_SRC_FILES := \
libcharset/lib/localcharset.c \
lib/iconv.c \
lib/relocatable.c
LOCAL_C_INCLUDES += \
$(LOCAL_PATH)/include \
$(LOCAL_PATH)/libcharset \
$(LOCAL_PATH)/lib \
$(LOCAL_PATH)/libcharset/include \
$(LOCAL_PATH)/srclib
include $(BUILD_STATIC_LIBRARY)

同时,在你的项目的Android.mk文件中,需添加以下内容:
这里的路径根据自己的实际路径设置。

$(LOCAL_PATH)/../../cocos2d/iconv/include \
$(LOCAL_PATH)/../../cocos2d/iconv/libcharset \
$(LOCAL_PATH)/../../cocos2d/iconv/lib \
$(LOCAL_PATH)/../../cocos2d/iconv/libcharset/include \
$(LOCAL_PATH)/../../cocos2d/iconv/srclib \
$(LOCAL_PATH)/../../cocos2d/iconv \

LOCAL_WHOLE_STATIC_LIBRARIES += iconv_static

$(call import-module,iconv)

Ps:
1、如果编译好的库中不包含Android.mk文件,会报错如下:
Cocos2d-x引入中文支持库并移植到android平台
2、如果出现以下问题
Cocos2d-x引入中文支持库并移植到android平台
可参考这个方法:
修改libiconv\libcharset\lib下localcharset.c文件,将int c声明提前。

113 get_charset_aliases (void)
114 {
115 int c;//
116 const char *cp;

157 for (;;)
158 {
159 //int c;
160 char buf1[50+1];

这里给出可能会出现的一些问题的参考解决方案 解决办法