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输入法报错的主要内容,如果未能解决你的问题,请参考以下文章

android 编译PinyinIME输入法报错

android 编译PinyinIME输入法报错

错误记录Android Studio 编译信息输出乱码

导入项目运行报错:某些输入文件使用或覆盖了已过时的 API......

android编译环境用mmm编译,报错'string' does not name a type

Android编译时gradle报错乱码