forked from RobertSasak/openalpr-android
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbuild_openalpr_android.sh
158 lines (133 loc) · 5.09 KB
/
build_openalpr_android.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#!/bin/bash
# You should tweak this section to adapt the paths to your need
export ANDROID_HOME=/usr/local/android-sdk
export NDK_ROOT=/usr/local/android-sdk/ndk/17.2.4988734
#echo ls /usr/local
#ls /usr/local
echo ls /usr/local/android-sdk
ls /usr/local/android-sdk
echo ls /usr/local/android-sdk/ndk/17.2.4988734
ls /usr/local/android-sdk/ndk/17.2.4988734
#echo ls /home/travis/build/leejoo71/openalpr-android/
#ls /home/travis/build/leejoo71/openalpr-android/
#echo ls /usr/local/android-sdk/ndk-bundle
#ls /usr/local/android-sdk/ndk-bundle
#echo head /usr/local/android-sdk/ndk-bundle/source.properties
#head /usr/local/android-sdk/ndk-bundle/source.properties
#ls /usr/local/android-sdk/ndk-bundle
export ANDROID_NDK_ROOT=$NDK_ROOT
#echo $HOME
#echo $ANDROID_HOME
#echo $NDK_ROOT
#echo $ANDROID_NDK_ROOT
export ANDROID_PLATFORM=28
# In my case, FindJNI.cmake does not find java, so i had to manually specify these
# You could try without it and remove the cmake variable specification at the bottom of this file
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export JAVA_AWT_LIBRARY=$JAVA_HOME/jre/lib/amd64
export JAVA_JVM_LIBRARY=$JAVA_HOME/jre/lib/amd64
export JAVA_INCLUDE_PATH=$JAVA_HOME/include
export JAVA_INCLUDE_PATH2=$JAVA_HOME/include/linux
export JAVA_AWT_INCLUDE_PATH=$JAVA_HOME/include
SCRIPTPATH=`pwd`
echo $SCRIPTPATH
####################################################################
# Prepare Tesseract and Leptonica, using rmtheis/tess-two repository
####################################################################
#git clone --recursive https://github.com/rmtheis/tess-two.git tess2
git clone --recursive https://github.com/alexcohn/tess-two.git tess2
cd tess2
echo "ndk.dir=$NDK_ROOT
sdk.dir=$ANDROID_HOME" > local.properties
head local.properties
./gradlew assemble
cd ..
####################################################################
# Download and extract OpenCV4Android
####################################################################
wget -O opencv-3.2.0-android-sdk.zip -- https://sourceforge.net/projects/opencvlibrary/files/opencv-android/3.2.0/opencv-3.2.0-android-sdk.zip/download
#https://sourceforge.net/projects/opencvlibrary/files/opencv-android/3.2.0/opencv-3.2.0-android-sdk.zip/download
unzip opencv-3.2.0-android-sdk.zip
rm opencv-3.2.0-android-sdk.zip
####################################################################
# Download and configure openalpr from jav974/openalpr forked repo
####################################################################
git clone https://github.com/jav974/openalpr.git openalpr
mkdir openalpr/android-build
TESSERACT_SRC_DIR=$SCRIPTPATH/tess2/tess-two/jni/com_googlecode_tesseract_android/src
rm -rf openalpr/src/openalpr/ocr/tesseract
mkdir openalpr/src/openalpr/ocr/tesseract
shopt -s globstar
cd $TESSERACT_SRC_DIR
cp **/*.h $SCRIPTPATH/openalpr/src/openalpr/ocr/tesseract
cd $SCRIPTPATH
#"armeabi-v7a with NEON"
declare -a ANDROID_ABIS=("armeabi-v7a"
"arm64-v8a"
"x86"
"x86_64"
)
cd openalpr/android-build
for i in "${ANDROID_ABIS[@]}"
do
if [ "$i" == "armeabi-v7a with NEON" ]; then abi="armeabi-v7a"; else abi="$i"; fi
TESSERACT_LIB_DIR=$SCRIPTPATH/tess2/tess-two/libs/$abi
if [[ "$i" == armeabi* ]];
then
arch="arm"
lib="lib"
elif [[ "$i" == arm64-v8a ]];
then
arch="arm64"
lib="lib"
elif [[ "$i" == mips ]] || [[ "$i" == x86 ]];
then
arch="$i"
lib="lib"
elif [[ "$i" == mips64 ]] || [[ "$i" == x86_64 ]];
then
arch="$i"
lib="lib64"
fi
echo "
######################################
Generating project for arch $i
######################################
"
rm -rf "$i" && mkdir "$i"
cd "$i"
#-DANDROID_STL=gnustl_static \
cmake \
-DCMAKE_TOOLCHAIN_FILE=$NDK_ROOT/build/cmake/android.toolchain.cmake \
-DANDROID_TOOLCHAIN=clang \
-DANDROID_NDK=$NDK_ROOT \
-DCMAKE_BUILD_TYPE=Release \
-DANDROID_PLATFORM=$ANDROID_PLATFORM \
-DANDROID_ABI="$i" \
-DANDROID_CPP_FEATURES="rtti exceptions" \
-DANDROID_STL=c++_static \
-DANDROID_COMPILER_FLAGS=-lopencv_core -lopencv_imgcodecs -lopencv_highgui -lopencv_shape -lopencv_videoio -lopencv_calib3d -Wconstant-conversion \
-DANDROID_LINKER_FLAGS=-lopencv_core
-DANDROID_ARM_MODE=arm \
-DANDROID_LD= -latomic \
-DTesseract_INCLUDE_BASEAPI_DIR=$TESSERACT_SRC_DIR/api \
-DTesseract_INCLUDE_CCSTRUCT_DIR=$TESSERACT_SRC_DIR/ccstruct \
-DTesseract_INCLUDE_CCMAIN_DIR=$TESSERACT_SRC_DIR/ccmain \
-DTesseract_INCLUDE_CCUTIL_DIR=$TESSERACT_SRC_DIR/ccutil \
-DTesseract_LIB=$TESSERACT_LIB_DIR/libtess.so \
-DLeptonica_LIB=$TESSERACT_LIB_DIR/liblept.so \
-DOpenCV_DIR=$SCRIPTPATH/OpenCV-android-sdk/sdk/native/jni \
-DJAVA_AWT_LIBRARY=$JAVA_AWT_LIBRARY \
-DJAVA_JVM_LIBRARY=$JAVA_JVM_LIBRARY \
-DJAVA_INCLUDE_PATH=$JAVA_INCLUDE_PATH \
-DJAVA_INCLUDE_PATH2=$JAVA_INCLUDE_PATH2 \
-DJAVA_AWT_INCLUDE_PATH=$JAVA_AWT_INCLUDE_PATH \
-DPngt_LIB=$TESSERACT_LIB_DIR/libpngt.so \
-DJpgt_LIB=$TESSERACT_LIB_DIR/libjpgt.so \
-DJnigraphics_LIB=$NDK_ROOT/platforms/$ANDROID_PLATFORM/arch-$arch/usr/$lib/libjnigraphics.so \
../../src/
cmake --build . -- -j 8
cd ..
done
echo "
All done !!!"