mirror of
https://github.com/opencv/opencv.git
synced 2025-06-19 00:46:39 +08:00
![]() Android builds update #26057 Fixes https://github.com/opencv/opencv/issues/26027 Should also address https://github.com/opencv/opencv/issues/26542 Changes: - Switched to Android build tools 34, NDK 26d, target API level 34 (required by Google Play). - Use flexible page size on Android by default to support Android 15+. - Dummy stub for R and BuildConfig classes for javadoc. - Java 17 everywhere. - Strict ndkVersion and ABI list in release package. Related: - Docker: https://github.com/opencv-infrastructure/opencv-gha-dockerfile/pull/41 - Pipeline: https://github.com/opencv/ci-gha-workflow/pull/183 Related IPP issue with NDK 27+: https://github.com/opencv/opencv/issues/26072 Google documentation for 16kb pages support : https://developer.android.com/guide/practices/page-sizes?hl=en ### 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 - [x] 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. - [ ] The feature is well documented and sample code can be built with the project CMake |
||
---|---|---|
.. | ||
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 environment 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.