Использование поддержки Android Studio С++ для создания несвободных модулей OpenCV

Фон

Хотя более старые версии OpenCV (т.е. 2.4) позволяют проектам Android использовать функциональность SIFT, разделение этих функций на opencv_contrib усложняет задачу; интеграция модуля OpenCV-3.x.x-android-sdk в проект лишает вас возможности использовать функциональность SIFT.

FeatureDetector.create(FeatureDetector.DYNAMIC_SIFT); // Fails
//OpenCV Error: Bad argument (Specified feature detector type is not supported.)

Использование внешних инструментов

Хотя существуют такие методы, как Гоуи Ван, которые описывают, как встроить несвободную часть OpenCV в проект Android, этот процесс требует внешних инструментов. Этот вопрос о том, как получить тот же результат, но вместо этого использовать мощь и удобство Android Studio/InteliJ.

Использование CMake в Android Studio

Современные версии Android Studio имеют полезную функциональность:

Используя Android Studio 2.2 и выше, вы можете использовать NDK для компиляции кода C и C++ в собственную библиотеку и упаковки его в ваш APK с помощью Gradle, интегрированной системы сборки IDE. Ваш код Java может затем вызывать функции в вашей собственной библиотеке через собственный интерфейс Java (JNI)

Как указано в этом вопросе и ответе qaru.site/info/55215/..., можно быстро интегрировать OpenCV 3.1 (и я подозреваю другие версии) opencv4android в структуру сборки C++, сгенерированную в Мастер новых приложений.

Я подозреваю, что кто-то, кто понимает детали строительных проектов, мог бы использовать Building_OpenCV4Android_from_trunk, чтобы ответить на этот вопрос. Мой опыт в этой области ограничен, таким образом, вопрос.

Какие конкретные шаги потребуются для того, чтобы заставить несвободную часть OpenCV полностью собираться в процессе сборки Android Studio?