Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JNI-如何为不同的类创建库_Java_Android_Java Native Interface_Android Ndk - Fatal编程技术网

Java JNI-如何为不同的类创建库

Java JNI-如何为不同的类创建库,java,android,java-native-interface,android-ndk,Java,Android,Java Native Interface,Android Ndk,我是JNI的新手,我正在为一个Android项目开发一个本机库。我读了一些关于JNI编程的文章,但我不明白是否有可能创建一个可以用不同包加载到不同项目类中的库。我了解到,要声明一个新的JNI方法,语法是: 前缀“Java_” 经过编码的完全限定类名 下划线(“\”分隔符 编码的方法名 根据这个定义,这是不可能的 假设我使用libfoo中包含的本机方法foo在包pkg1中定义了一个类a,然后在包pkg2中定义了一个类B。我可以在B中使用libfoo和foo方法吗?我应该如何定义本机方法来实现结

我是JNI的新手,我正在为一个Android项目开发一个本机库。我读了一些关于JNI编程的文章,但我不明白是否有可能创建一个可以用不同包加载到不同项目类中的库。我了解到,要声明一个新的JNI方法,语法是:

  • 前缀“Java_”
  • 经过编码的完全限定类名
  • 下划线(“\”分隔符
  • 编码的方法名
根据这个定义,这是不可能的

假设我使用libfoo中包含的本机方法foo在包pkg1中定义了一个类a,然后在包pkg2中定义了一个类B。我可以在B中使用libfoo和foo方法吗?我应该如何定义本机方法来实现结果


谢谢

查看JNI头存根生成器:

在Android上,最重要的是使用JNI的RegisterNatives(),因为它比Java_*查找机制更快


这样,如果您愿意,您应该能够将相同的本机方法注册到多个类/包中。

我不明白您为什么认为这不可能。你认为这有什么不起作用的?你为什么认为这会失败?