Использование собственных системных библиотек Android вне стабильного API NDK

Мне было интересно, можно ли использовать в нативном коде библиотеки системы Android, которые не представлены напрямую как API от NDK.
В частности, как включить их в мой собственный код приложения, чтобы они могли быть связаны с ним.
Я знаю, что это не рекомендуется, но совместимость моего проекта с различными версиями Android не является проблемой.

Я пытаюсь добиться того, чтобы пропустить некоторые сервисы, которые предоставляет Android, и попытаться подойти ближе к ядру.
Благодарю.

1

Решение

Я надеюсь, вы понимаете, что не рекомендуется иметь какие-либо зависимости от системных библиотек, кроме стабильный API. Но открытая природа Android позволяет (как технически, так и с точки зрения лицензирования) вводить такие зависимости. По сути, это означает плавание в не зафрахтованных водах и готовность к изменениям API не только в следующей версии платформы, но и в предоставляемых поставщиком (то есть не AOSP) установках того же уровня платформы.

Самый безопасный способ обеспечения прямой (и поставщика) совместимости — это использовать динамическое связывание для недокументированных функций системы, и выполнить тщательную проверку ошибок в пути.

Но во многих случаях системные недокументированные API-интерфейсы на самом деле довольно стабильны, и приятные люди из команды Google по Android не слишком часто вносят критические изменения. Поэтому, если вы ссылаетесь на версию 4.0 Skia ваш код, скорее всего, будет просто работать на 4.1.2 и выше.

Технически вам понадобятся заголовки для компиляции и .так файлы для ссылки. Последнее вы можете просто adb pull /system/lib/libбез разницы.so с вашего собственного устройства или из образа эмулятора. Заголовки, которые вы можете скачать с https://android.googlesource.com/ Git репозиторий. Убедитесь, что ваши заголовки соответствуют версии библиотеки.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector