在Monodroid中,我试图通过JNIEnv访问自定义Java类。当我在主项目中添加类时,可以在主项目和库项目中访问它。

例如:
如果jniTest.java是Project A中的AndroidJavaSource文件,则

IntPtr javaClass = JNIEnv.FindClass("com/company/application/jniTest");


从Project A和Library B都可以正常工作。但是,如果我更改它以使我使用相同的文件并将类B重命名为jniText,则无法使用

IntPtr javaClass = JNIEnv.FindClass("com/company/application/jniText");


我说我必须重命名文件的原因是,如果将文件移到库B中,使得它不在项目A中,则即使在库中,调用FindClass仍会找到jniTest。我相信它仍然可以在原始位置找到它。这使我相信,当我将Java文件移动到库中时,它运行良好。只是在更改命名空间后,它才停止工作,因为现在以某种方式仍内置在项目A中的原始文件与库B中导致NoClassDefFoundError的文件不相同。

我希望我只是错过了一个项目属性或JNIEnv方法,但是我找不到要进行这项工作的设置。

谢谢

最佳答案

只有主项目中的AndroidJavaSource,AndroidAsset,AndroidResource等才会将其放入最终包中。库项目不支持这些内容。

10-05 21:49