@@ -77,8 +77,10 @@ directories="/enc/trans/
7777/mathn/
7878/racc/
7979/"
80- api=" 9"
81- abi=" armeabi"
80+ apis=" 9
81+ 16"
82+ abis=" armeabi
83+ armeabi-v7a"
8284
8385check_ndk () {
8486 ndk_build=$( which ndk-build) || \
@@ -123,15 +125,60 @@ build_core() {
123125 echo " ok"
124126}
125127
126- copy_java_libs () {
127- javaLibs=$( readlink -fm ../src/main/jniLibs/${abi} /)
128+ select_lower_api () {
129+ api=" 0"
130+
131+ for _api in $apis ; do
132+ test ${_api} -lt ${api} -o ${api} -eq 0 && api=" ${_api} "
133+ done
134+ }
135+
136+ build_jni_libs () {
137+ app_root=$( readlink -f ../)
128138 bins=$( readlink -fm ../libs/${abi} )
129139
130- echo
131- echo -n " [core] copying ${abi} libs to java project..."
140+ ndk_args=" APP_OPTIM=debug NDK_DEBUG=1 " # debug
141+ ndk_args+=" APP_PLATFORM=android-${api} " # force android api level
142+ ndk_args+=" NDK_OUT=${app_root} /obj/android-${api} " # objects directory
143+
144+ ndk_targets=" cSploitCommon cSploitClient"
145+
146+ strip=$( ndk-which strip ) 2>&3 || die
147+
148+ echo -n " [jni] compiling for android-${api} ..."
132149
133- { test -d " ${javaLibs} " || mkdir -p " ${javaLibs} " ; } >&3 2>&1 || die
134- cp " ${bins} /libcSploitClient.so" " ${bins} /libcSploitCommon.so" " ${javaLibs} " >&3 2>&1 || die
150+ cpus=$( grep -E " ^processor" /proc/cpuinfo | wc -l)
151+
152+ ndk-build $ndk_args -j${cpus} $ndk_targets >&3 2>&1 || die
153+
154+ echo -ne " ok\n[jni] installing into libs..."
155+
156+ for abi in $abis ; do
157+ objs=" ${app_root} /obj/android-${api} /local/${abi} "
158+
159+ for lib in cSploitCommon cSploitClient; do
160+ install -p " ${objs} /lib${lib} .so" " ${bins} /lib${lib} .so" >&3 2>&1 || die
161+ ${strip} --strip-unneeded " ${bins} /lib${lib} .so" >&3 2>&1 || die
162+ done
163+ done
164+
165+ echo " ok"
166+ }
167+
168+ copy_jni_libs () {
169+
170+ select_lower_api
171+
172+ echo -n " [jni] copying libs to java project..."
173+
174+ for abi in $abis ; do
175+ javaLibs=$( readlink -fm ../src/main/jniLibs/${abi} /)
176+ bins=$( readlink -fm ../libs/${abi} )
177+
178+ { test -d " ${javaLibs} " || mkdir -p " ${javaLibs} " ; } >&3 2>&1 || die
179+ cp " ${bins} /libcSploitClient.so" " ${bins} /libcSploitCommon.so" " ${javaLibs} " >&3 2>&1 || die
180+
181+ done
135182
136183 echo " ok"
137184}
@@ -214,18 +261,22 @@ pack_core() {
214261
215262build_cores () {
216263
264+ check_ndk
217265 delete_core_packages
218266
219- for api in 16 9 ; do
267+ for api in $apis ; do
220268 build_core
221- for abi in armeabi armeabi-v7a ; do
269+ for abi in $abis ; do
222270 pack_core
223271 done
224272 done
273+ }
274+
275+ build_jni () {
276+ check_ndk
277+ select_lower_api
225278
226- for abi in armeabi armeabi-v7a; do
227- copy_java_libs
228- done
279+ build_jni_libs
229280}
230281
231282
@@ -316,14 +367,18 @@ build_ruby() {
316367 echo " ok"
317368}
318369
319- pkg=" cores "
370+ pkg=" jni "
320371
321372test " $# " -ne 1 || pkg=$1
322373
323374case $pkg in
324375ruby) build_ruby
325376 ;;
326377core|cores) build_cores
378+ copy_jni_libs
379+ ;;
380+ jni) build_jni
381+ copy_jni_libs
327382 ;;
328383* )
329384 scriptname=$( basename " $0 " )
0 commit comments