Я хочу сделать что-то концептуально простое, но для которого я не могу найти никакой документации. У меня есть определенные библиотеки, для которых я скомпилировал SO-файлы для всех интересующих меня платформ.
Теперь я хотел бы просто создать файл AAR, содержащий эти файлы so.
Я знаю, что файл AAR должен иметь такую структуру: /jni//mylib.so
Теперь я знаю, какие манифесты/другие метаданные я должен создавать.
В идеале было бы здорово сгенерировать это с помощью Gradle, но мне просто нужно, чтобы это было сделано, поэтому имеет смысл также написать простой скрипт, создающий zip, а затем переименовать его.
Ответ 1 · рейтинг 5 · Stan Kurdziel
Публикация AAR, содержащего собственные библиотеки, довольно проста. Среди обнаруженных мной преимуществ:
- При использовании для нескольких проектов, конечно, есть преимущество в том, чтобы не дублировать собственный код.
- Сборка приложения выполняется намного быстрее, так как вам не нужно выполнять компиляцию NDK в приложении. Итак, если нативный код меняется реже
- В моем случае была несовместимость с некоторыми комбинациями NDK и SDK. Возможность собрать библиотеку с более старым SDK и приложением с более новой версией работает очень хорошо. (предотвращает зависание моего приложения в более старой версии SDK из-за проблемы с NDK)
- могут иметь модульные тесты для кода библиотеки, которые полностью независимы от любого приложения. (Модульные тесты приложений также могут тестировать библиотеку)
Компромисс заключается в том, что есть несколько дополнительных шагов для обновления c-кода, но если он меняется реже, чем приложение, то это хороший компромисс.
Стоит отметить, что я получаю предупреждение: Current NDK support is deprecated. Alternative will be provided in the future. при каждой сборке. Насколько я знаю, альтернатива еще недоступна - мое определение устаревшего будет заключаться в том, что оно не устарело, пока это не произойдет.
Вот ключевые моменты того, как это работает у меня: