来自图书馆的Monodroid JNIEnv.FindClass

时间:2012-02-14 14:25:01

标签: java android xamarin.android

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

例如: 如果jniTest.java是项目A中的AndroidJavaSource文件,那么

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

同时适用于项目A和库B.但是,如果我更改它以便我将相同的文件重命名为库B中的jniText,那么我无法使用

在库B中访问它
IntPtr javaClass = JNIEnv.FindClass("com/company/application/jniText");

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

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

谢谢

1 个答案:

答案 0 :(得分:1)

只有主项目中的AndroidJavaSource,AndroidAsset,AndroidResource等才能进入最终版本。图书馆项目不支持这些内容。