Mam obiekt współdzielony, który nazwać "libFoo.so", skompilowany przeciwko NDK. Mam projektu Java (nazwijmy go „jarlib”), która korzysta z tego obiektu udostępnionego przez wywołanieJak załadować macierzysty obiekt udostępniony w słoiku z aplikacji na Androida?
System.loadLibrary("Foo");
To projekt Java, I eksportować jako słoik i używać w aplikacji Android. Jeśli skomentuję wszystkie bity dotyczące współużytkowanego obiektu, słoik działa dobrze i mogę z nim doskonale współdziałać.
Mogę używać jarlib, wraz z udostępnionym obiektem z aplikacji Android Unity z udostępnionym obiektem w ./lib/armeabi/libFoo.so, i ładuje to wszystko dookoła.
Próbuję użyć jarlib i libFoo.so w mojej aplikacji Android na Androida, a loadLibrary absolutnie nie chce znaleźć libFoo.so. Próbowałem umieścić go tak, aby był zawarty w moim apk w ./lib, a także ./lib/armeabi, i nic nie sprawia, że wywołanie load go zobaczy.
Próbowałem tym libfoo.so w ./lib lub ./lib/armeabi z jarlib, ale gdy próbuję zbudować/uruchomić mój Android App, jak mi powiedziano:
The library 'jarlib.jar' contains native libraries that will not run on the device.
The following libraries were found:
- libFoo.so
z tym, jeśli jest to w ./lib (nie ./lib/armeabi)
Additionally some of those libraries will interfer with the installation of the application because of their location in lib/
lib/ is reserved for NDK libraries.
nie jestem pewien, co kombinacja mi brakuje, ale jestem pewien, że można to zrobić, po prostu nie potrafię wymyślić, jak to zrobić!