mirror of
https://github.com/opencv/opencv.git
synced 2024-12-11 22:59:16 +08:00
915e677866
Added kotlin classes to AAR #24884 The resulting maven repo doesn't have kotlin-plugin dependency, and it works fine out of the box: Android Kotlin projects already have kotlin-plugin dependency, Android Java projects ignore kotlin classes. Details on KGP versions: https://kotlinlang.org/docs/gradle-configure-project.html#apply-the-plugin ### Pull Request Readiness Checklist See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request - [x] I agree to contribute to the project under Apache 2 License. - [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV - [x] The PR is proposed to the proper branch - [ ] There is a reference to the original bug report and related work - [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable Patch to opencv_extra has the same branch name. - [x] The feature is well documented and sample code can be built with the project CMake Co-authored-by: Alexander Lyulkov <alexander.lyulkov@opencv.ai> Co-authored-by: Alexander Smorkalov <alexander.smorkalov@xperience.ai> |
||
---|---|---|
.. | ||
gradle/wrapper | ||
OpenCV | ||
build.gradle | ||
gradle.properties | ||
gradlew | ||
gradlew.bat | ||
README.md | ||
settings.gradle |
Scripts for creating an AAR package and a local Maven repository with OpenCV libraries for Android
How to run the scripts
- Set JAVA_HOME and ANDROID_HOME enviroment variables. For example:
export JAVA_HOME=~/Android Studio/jbr
export ANDROID_HOME=~/Android/SDK
- Download OpenCV SDK for Android
- Run build script for version with Java and a shared C++ library:
python build_java_shared_aar.py "~/opencv-4.7.0-android-sdk/OpenCV-android-sdk"
- Run build script for version with static C++ libraries:
python build_static_aar.py "~/opencv-4.7.0-android-sdk/OpenCV-android-sdk"
The AAR libraries and the local Maven repository will be created in the outputs directory
Technical details
The scripts consist of 5 steps:
- Preparing Android AAR library project template
- Adding Java code to the project. Adding C++ public headers for shared version to the project.
- Compiling the project to build an AAR package
- Adding C++ binary libraries to the AAR package. Adding C++ public headers for static version to the AAR package.
- Creating Maven repository with the AAR package
There are a few minor limitations:
- Due to the AAR design the Java + shared C++ AAR package contains duplicates of C++ binary libraries, but the final user's Android application contains only one library instance.
- The compile definitions from cmake configs are skipped, but it shouldn't affect the library because the script uses precompiled C++ binaries from SDK.