Ответ 1
Термин разделяемая библиотека не подходит для Android NDK, потому что во многих случаях библиотеки .so фактически не разделяются между приложениями. Лучше классифицировать библиотеки, которые NDK создает как статические и динамические.
Каждое приложение для Android представляет собой приложение Java, и единственная точка входа для кода NDK загружает его как динамическую библиотеку и вызывает ее через JNI.
Статические библиотеки - это архивы скомпилированных объектных файлов. Они собираются в другие библиотеки во время сборки. Неиспользуемые части кода из статических библиотек разделяются NDK, чтобы уменьшить общий размер.
Динамические библиотеки загружаются во время выполнения из отдельных файлов. Они могут содержать статические библиотеки, которые зависят от них или загружают более динамические библиотеки.
Итак, что вам действительно нужно для разработки Android, это, по крайней мере, одна общая библиотека, которая будет вызываться из кода Java и связана с ней зависимостями как предпочтительными статическими библиотеками.