libc fatal signal 11 sigsegv at 0x0000002c code=1
Google了一下, 发现 Fatal signal 11的人很多, 但是很少有0x0000002c这个问题的. 于是我并没有按照搜索结果里面的去做, 而是尝试找自己可能犯下的SB问题.
然后发现在InterfaceJNI.cpp中
...
JniHelper::getStaticMethodInfo(minfo, "app/testproj/conflux/MainActivity", "getInstance", "()Ljava/lang/Object;");
...
把包名写错了. 更正即可.
可能有帮助的链接
http://stackoverflow.com/questions/27702391/ndk-problems-with-vm-aborting-and-fatal-signal-11-sigsegv-at-0xdeadd00d-cod
http://discuss.cocos2d-x.org/t/cocos2d-x-3-2-issue-using-a-plugin-in-a-dedicated-thread/16966
使用javah生成Java头文件
Eclipse里面配置一个ExternalTools
配置如图
Location
你的javah.exe路径
Working Directory
点击Browse Workspace, 选择到你的工程的src下面.
Arguments
网上找到的结果, 很多人使用的参数都不一样, 有的使用很多参数, 这里讲解正常生成必要参数和Eclipse图方便所需参数.
首先在命令行直接javah, 或者Eclipse里面你不填Arguments, 得到如下
D:\Projects\TheConflux\TheConflux\src>javah
用法:
javah [options] <classes>
其中, [options] 包括:
-o <file> 输出文件 (只能使用 -d 或 -o 之一)
-d <dir> 输出目录
-v -verbose 启用详细输出
-h --help -? 输出此消息
-version 输出版本信息
-jni 生成 JNI 样式的标头文件 (默认值)
-force 始终写入输出文件
-classpath <path> 从中加载类的路径
-cp <path> 从中加载类的路径
-bootclasspath <path> 从中加载引导类的路径
<classes> 是使用其全限定名称指定的
(例如, java.lang.Object)。
- 必备参数:
<classes>
. 填写你的主Activity类全名, 如笔者的是 app.forgedfun.projectconflux.TheConflux - 方便Eclipse: 输出路径, 笔者的路径是是\jni. 于是 -d ${workspace_loc:/ProjectConflux/jni}
保存运行就好了, 然后你的jni目录下就能看到新的头文件了.
有的人可能遇到这个错误, 是因为你的类文件是utf-8编码的, 网上有很多方法.
错误: 编码GBK的不可映射字符
但是笔者比较懒, 要生成的时候用Notepad++转一下ANSI, 生成, 然后再用Notepad++转回UTF-8就好.