我的项目使用本机库。当我更改包名称时,我收到了以下错误。
代码: 找不到本机方法:
com.nooshindroid.yastashir.controller.JNIServer.get_number_of_processors:()I
at com.nooshindroid.yastashir.controller.JNIServer.get_number_of_processors(Native Method)
at com.nooshindroid.yastashir.controller.JNIServer.runServer(JNIServer.java:27)
at com.nooshindroid.yastashir.game.FreebloksActivity.startNewGame(FreebloksActivity.java:520)
at com.nooshindroid.yastashir.game.FreebloksActivity$16.onClick(FreebloksActivity.java:774)
at com.nooshindroid.yastashir.game.ColorListDialog.onItemClick(ColorListDialog.java:79)
当我上网时,我明白我必须在命令行中重建我的JNI文件夹。 在命令行中,我不知道如何提供项目路径。 我读到某个地方,我必须这样写。
cd <project>
$ <ndk>/ndk-build
我不知道做这项工作的步骤。 它显示了我的项目路径,当我写Dir时,它会显示我文件夹中存在的所有内容。 但没有任何改变。
答案 0 :(得分:0)
除非另行指定,否则在使用JNI时,包名称是它在C代码中查找的函数名称的一部分。因此,如果您在Java中更改包名称,则还需要更改所有C代码JNI函数名称。
答案 1 :(得分:0)
正如@GabeSechan所说,您需要编辑C或C ++代码以匹配新的包名称。更改包名称时,目录结构会更改。如果您不编辑要匹配的C或C ++代码,则无法找到这些方法。
您需要从
更改JNI方法Java_com_old_package_name_methodName
到
Java_com_new_package_name_methodName
请参阅JNI文档了解example。
重命名方法后重建您的本机代码。