android 编译PinyinIME输入法报错
Posted mmsx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 编译PinyinIME输入法报错相关的知识,希望对你有一定的参考价值。
1、错误提示
C:\\SVN\\CustomPinyinIME\\app\\src\\main\\cpp\\android\\com_android_inputmethod_pinyin_PinyinDecoderService.cpp:217:65: error: cannot initialize a parameter of type 'jboolean *' (aka 'unsigned char *') with an rvalue of type 'bool'
2、找到这行编译错误的代码
JNIEXPORT jint JNICALL nativeImGetPredictsNum(JNIEnv *env, jclass clazz,
jstring fixed_str)
char16 *fixed_ptr = (char16*)(*env).GetStringChars(fixed_str, false);
size_t fixed_len = (size_t)(*env).GetStringLength(fixed_str);
char16 fixed_buf[kMaxPredictSize + 1];
if (fixed_len > kMaxPredictSize)
fixed_ptr += fixed_len - kMaxPredictSize;
fixed_len = kMaxPredictSize;
utf16_strncpy(fixed_buf, fixed_ptr, fixed_len);
fixed_buf[fixed_len] = (char16)'\\0';
predict_len = im_get_predicts(fixed_buf, predict_buf);
(*env).ReleaseStringChars(fixed_str, fixed_ptr);
return predict_len;
3、解决办法
里面函数第一行里面的false 改成 JNI_FALSE
char16 *fixed_ptr = (char16*)(*env).GetStringChars(fixed_str, false);
改成
char16 *fixed_ptr = (char16*)(*env).GetStringChars(fixed_str, JNI_FALSE);
4、编译注意事项
编译这个开源的输入法。熟悉ndk配置和cmake配置就可以了。
cmake配置如下
build设置
local.properties文件编译的ndk路径配置ndk.dir=C\\:\\\\Users\\\\AppData\\\\Local\\\\Android\\\\Sdk\\\\ndk\\\\21.3.6528147
以上是关于android 编译PinyinIME输入法报错的主要内容,如果未能解决你的问题,请参考以下文章
导入项目运行报错:某些输入文件使用或覆盖了已过时的 API......