Skip to content

Commit 3b53a64

Browse files
committed
Update build opencv script, optimize lib size for android smaller that can help reduce app size
1 parent c28b287 commit 3b53a64

File tree

3 files changed

+39
-1
lines changed

3 files changed

+39
-1
lines changed
-13.8 MB
Binary file not shown.
-13.3 MB
Binary file not shown.

scripts/build_opencv.sh

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,14 @@ COMMON_CMAKE_OPTIONS="
128128
# ANDROID
129129
# =========================
130130
if [[ "$PLATFORM" == "android" ]]; then
131+
if [[ -z "$ANDROID_SDK_ROOT" ]]; then
132+
echo "Error: ANDROID_SDK_ROOT environment variable must be set for Android builds"
133+
exit 1
134+
elif [[ ! -d "$ANDROID_SDK_ROOT" ]]; then
135+
echo "Error: Android SDK not found at $ANDROID_SDK_ROOT"
136+
exit 1
137+
fi
138+
131139
if [[ -z "$ANDROID_NDK_HOME" ]]; then
132140
echo "Error: ANDROID_NDK_HOME environment variable must be set for Android builds"
133141
exit 1
@@ -136,6 +144,7 @@ if [[ "$PLATFORM" == "android" ]]; then
136144
exit 1
137145
fi
138146

147+
echo "Using Android SDK: $ANDROID_SDK_ROOT"
139148
echo "Using NDK: $ANDROID_NDK_HOME"
140149
echo "Building for ABI: $ARCH"
141150

@@ -144,12 +153,41 @@ if [[ "$PLATFORM" == "android" ]]; then
144153
-DANDROID_ABI=$ARCH \
145154
-DANDROID_PLATFORM=android-24 \
146155
-DANDROID_STL=c++_shared \
156+
-DCPU_BASELINE=NEON \
157+
-DCPU_DISPATCH= \
158+
-DWITH_PNG=ON \
159+
-DWITH_JPEG=ON \
160+
-DWITH_TIFF=OFF \
161+
-DOPENCV_ENABLE_ALLOCATOR_STATS=OFF \
147162
-DBUILD_ANDROID_PROJECTS=OFF \
148163
-DBUILD_ANDROID_EXAMPLES=OFF \
149164
-DBUILD_JAVA=OFF \
150-
$COMMON_CMAKE_OPTIONS
165+
-DWITH_PROTOBUF=OFF \
166+
-DWITH_FFMPEG=OFF \
167+
-DWITH_GSTREAMER=OFF \
168+
-DWITH_OPENGL=OFF \
169+
-DBUILD_TIFF=OFF \
170+
-DBUILD_WEBP=OFF \
171+
-DBUILD_OPENEXR=OFF \
172+
-DBUILD_JASPER=OFF \
173+
-DBUILD_OPENJPEG=OFF \
174+
$COMMON_CMAKE_OPTIONS # Common minimal options
151175

152176
cmake --build . --target install -j$(sysctl -n hw.ncpu)
177+
178+
# =========================
179+
# Strip unneeded symbols to reduce size
180+
# =========================
181+
echo "Stripping OpenCV shared libraries to reduce size..."
182+
INSTALL_LIB_DIR="$INSTALL_DIR/sdk/native/libs/$ARCH"
183+
for lib in libopencv_core.so libopencv_imgproc.so libopencv_imgcodecs.so; do
184+
if [[ -f "$INSTALL_LIB_DIR/$lib" ]]; then
185+
"$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-strip" --strip-unneeded "$INSTALL_LIB_DIR/$lib"
186+
echo " Stripped $lib"
187+
fi
188+
done
189+
190+
echo "✅ Android OpenCV build completed for $ARCH"
153191
fi
154192

155193
# =========================

0 commit comments

Comments
 (0)