В Monodroid я пытаюсь получить доступ к пользовательскому классу Java через JNIEnv.Когда я добавляю класс в основной проект, я могу получить к нему доступ в основном проекте и в проекте библиотеки.
Например: если jniTest.java является файлом AndroidJavaSource в проекте A, тогда
IntPtr javaClass = JNIEnv.FindClass("com/company/application/jniTest");
работает как из Проекта A, так и из Библиотеки B. Однако если я изменю его так, чтобы я взял тот же файл и переименовал класс в jniText в Библиотеке B, то я не смогу получить к нему доступ в Библиотеке B с помощью
IntPtr javaClass = JNIEnv.FindClass("com/company/application/jniText");
Причина, по которой я говорю, что мне нужно переименовать файл, потому что, если я переместу файл в библиотеку B, чтобы он больше не находился в проекте A, вызов FindClass все равно найдет jniTest, даже если он находится в библиотеке.Я верю, что он все еще находит его в первоначальном месте.Это заставило меня поверить, что когда я переместил java-файл в свою библиотеку, он работал нормально.Лишь после изменения пространства имен он перестал работать, потому что теперь оригинал, который каким-то образом все еще был встроен в проект А, теперь не совпадает с тем, что был в библиотеке В, вызывая NoClassDefFoundError
.
, я надеюсьЯ просто пропустил атрибут проекта или метод JNIEnv, но не могу найти, что установить, чтобы эта работа работала.
Спасибо