Monodroid JNIEnv.FindClass из библиотеки - PullRequest
1 голос
/ 14 февраля 2012

В 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, но не могу найти, что установить, чтобы эта работа работала.

Спасибо

1 Ответ

1 голос
/ 14 февраля 2012

Только AndroidJavaSource, AndroidAsset, AndroidResource и т. Д., Которые находятся в вашем основном проекте, войдут в финальный пакет. Эти вещи не поддерживаются в библиотечных проектах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...