我正在尝试从此处找到的 pocketmagic.net 获取 Eventinjector 项目。
这意味着使用用 C 编写的预编码 jni 库。我的问题是,当我尝试编译本机代码时会遇到一些构建错误。错误日志很长,我相信所有错误都是相同的,因此我只会发布其中的一部分。
jni/EventInjector.h:718:9: error: (near initialization for 'mt_tool_labels[0].value')
jni/EventInjector.h:719:9: error: 'MT_TOOL_PEN' undeclared here (not in a function)
jni/EventInjector.h:719:9: error: initializer element is not constant
jni/EventInjector.h:719:9: error: (near initialization for 'mt_tool_labels[1].value')
jni/EventInjector.h:720:9: error: 'MT_TOOL_MAX' undeclared here (not in a function)
jni/EventInjector.h:720:9: error: initializer element is not constant
jni/EventInjector.h:720:9: error: (near initialization for 'mt_tool_labels[2].value')
jni/EventInjector.c: In function 'debug':
jni/EventInjector.c:82:2: error: format not a string literal and no format arguments [- Werror=format-security]
cc1.exe: some warnings being treated as errors
make: *** [obj/local/armeabi/objs/EventInjector/EventInjector.o] Error 1
浏览博文下的评论后,我发现“Alessandro”也有同样的问题,但找到了解决方案。(post 51)“我遇到了同样的问题并导入了我自己的 input.h 版本,其中包含所有缺失的声明。”
这是 .c 文件中产生大部分错误的部分:
static struct label key_labels[] = {
LABEL(KEY_RESERVED),
LABEL(KEY_ESC),
LABEL(KEY_1),
LABEL(KEY_2),
LABEL(KEY_3),
LABEL(KEY_4),
LABEL(KEY_5),
LABEL(KEY_6),
LABEL(KEY_7),
LABEL(KEY_8),
LABEL(KEY_9),
LABEL(KEY_0),
LABEL(KEY_MINUS),
LABEL(KEY_EQUAL),
LABEL(KEY_BACKSPACE),
...
我没有C的经验,也不知道他的意思。所以我的问题是:我该怎么做?
我已经使用 NDK v9 和 cygwin 成功编译了其他 JNI 库,所以我的设置和环境应该没有问题。