本帖最后由 lulu23260 于 2014-09-01 19:42:47 编辑

解决方案 »

  1.   

    首先,android调用ndk时,通过javah生成的h文件对包名,方法名也是有限制的,只有相同包名,方法名的方法才能够调用他。所以你得将你使用jni的类的包名改成同他的demo的包名,至于出现红叉的原因,现在我也不太清楚,你可以看看你的error列表,或者clean一下呢
      

  2.   

    看下problems里有没有显示error的原因,你之前运行stopped的时候看下console有没有什么信息。
    楼上说的正确,jni对调用者的包名类名有规定的。
      

  3.   

    在lib下建armeabi 并导入
    不应该是在libs目录下么?
      

  4.   


    包名一样的呢,详情:本来文件 
    在模拟器上可以运行后,新增jni文件夹,放置helloJNI 例子中的mk文件和C文件,将c文件改为
    编译生成.so,libs下的armeabi下出现该文件,
    新建Java类,修改原src下Java文件:
    运行APK,模拟器提示stooped,错误信息:
    求指导,哪里有问题啊!
      

  5.   


    在哪儿都不行,why?ps:这么喜感的头像
      

  6.   

    你真确定包名一样,你的实际类是JNI,而你的头文件的方法名中的类名是MainActivity,,,,,,肯定没有办法进行访问啊
      

  7.   

    用静态方法试试,你的jni应该不是这样初始化的
      

  8.   

    测试发现,即使我不调用那个本地化了的函数,只要有 System.loadLibrary("hello-jni");   这句,就运行不了!!
    郁闷!
      

  9.   


    昨天来了帮助的一个GG,adb 调试发现  提示的错误是什么  .so是无效的 ELF格式的文件,没解决,不明白怎么回事,也搞不了,
    偶然从他本子上重新拷了一个 eclipse 和SDK,也把so文件改成了下划线的名字,,OK啦!! 你相信吗?反正是真的!!自己查找错误,原来的eclipse上即使我把文件名和库名做同样的处理,还是不行,只要有loadLibrary ,程序就stopped!我表示很不解,原来的eclipse和ADT都是前几天从android.developer上下载的,应该没什么问题的。找到原因,来此通知。
      

  10.   

    从ndk / sample/ hello-jni里去看例子吧..
    就不会犯final Jni jni = new Jni()这种错误了