Динамический загрузчик Android не может загрузить исполняемый код из файловой системы SDCard, поскольку он помечен как неисполняемый, и вы не можете отобразить страницы исполняемой памяти из неисполняемого хранилища. (Теоретически вы можете вручную скопировать содержимое на исполняемые анонимные сопоставленные страницы, но это ужасно. Версии приложений, поддерживающих Android на SD, монтируют исполняемые файловые системы, содержащиеся в файле на SD-карте, но стороннее приложение не может их записать)
Но вы можете записать библиотеку в доступное для записи место в внутреннем хранилище - не в каталог lib, к которому у вас нет прав на запись, а в другой, найденный из Context.getDir () или Context.getFilesDir () и затем загрузите его, используя полный путь и имя файла .so, используя System.load () вместо System.loadLibrary ().