Я разрабатываю проект эмулятора с открытым исходным кодом, и он имеет несколько настраиваемых собственных подключаемых модулей. Эти подключаемые модули построены как собственные библиотеки общих объектов (файлы .so) и имеют различные интерфейсы между собственным интерфейсом и Java через JNI. Вместо того, чтобы распространять APK с каждым когда-либо созданным подключаемым модулем и чтобы люди могли создавать свои собственные настраиваемые подключаемые модули, мне нужен способ импорта этих файлов .so в любое время после установки приложения.
Я обнаружил, что могу копировать файлы в папку / data / data / [package_name], но не в подпапку lib / (потому что она принадлежит группе "system"). Чтобы использовать интерфейсы JNI в Java, я должен вызвать System.loadLibrary (libname); Однако, похоже, для этого требуется, чтобы файл .so находился в подпапке lib /. Единственный способ обойти это, что я могу придумать, - это потребовать от пользователя иметь рутированное устройство. Есть ли другой способ добиться этого?