Skip to content
Snippets Groups Projects
Commit a44980e5 authored by Maxime Graulich's avatar Maxime Graulich
Browse files

Add script to build android APKs in CLI

parent ebcafcb7
No related branches found
No related tags found
No related merge requests found
......@@ -9,7 +9,7 @@ if(APPLE)
option(ENABLE_BUILD_IOS_EMULATOR "Build library for iOS emulator (x86)" ON)
option(ENABLE_BUILD_ANDROID "Build library for Android NDK (ARMv7)" OFF)
else(APPLE)
option(ENABLE_BUILD_ANDROID "Build library for Android NDK (ARMv7)" ON)
option(ENABLE_BUILD_ANDROID "Build library for Android NDK (ARMv7)" ON)
endif(APPLE)
macro(set_config_option VARNAME STRING)
......
#!/usr/bin/env bash
function checkError {
if [ $# == 3 ]; then
if [$1 == 0]; then return; fi
echo -e "\033[31m[-] $2 \033[0m"
exit $1
fi
}
if [ -z "$ANDROID_NDK" ]; then
echo "ERROR: You must specify android NDK path: export ANDROID_NDK=/path/to/android-ndk/"
exit 1
fi
if [ -z "$ANDROID_SDK" ]; then
echo "ERROR: You must specify android SDK path: export ANDROID_NDK=/path/to/android-sdk/"
exit 1
fi
if [ -z "$ANDROID_TOOLCHAIN" ] && [ -f "$ANDROID_TOOLCHAIN" ]; then
echo "ERROR: You must specify a valid android toolchain: export ANDROID_TOOLCHAIN=/path/to/android.toolchain.cmake"
exit 1
fi
echo -e "\033[1m[+] Take the last version of Gmsh and GetDP from svn\033[0m"
if [ ! -d "gmsh" ]; then mkdir svn --username gmsh --password gmsh co https://geuz.org/svn/gmsh/trunk gmsh; else svn up gmsh; fi
if [ ! -d "getdp" ]; then mkdir svn --username gmsh --password gmsh co https://geuz.org/svn/getdp/trunk getdp; else svn up getdp; fi
if [ ! -d "gmsh.android" ]; then mkdir gmsh.android; fi
if [ ! -d "getdp.android" ]; then mkdir getdp.android; fi
if [ ! -d "onelab.android" ]; then mkdir onelab.android; fi
if [ ! -f "petsc.android/lib/libpetsc.so" ] || [ ! -f "petsc.android/libs/libf2clapack.so" ] || [ ! -f "petsc.android/libs/libf2cblas.so" ]; then
echo "ERROR: petsc.android/lib do not exist or is incomplete (need blas, lapack and petsc)"
fi
cd gmsh.android
echo -e "\033[1m[+] Make Gmsh library\033[0m"
cmake -DDEFAULT=0 -DCMAKE_TOOLCHAIN_FILE=$ANDROID_TOOLCHAIN -DENABLE_BLAS_LAPACK=1 -DENABLE_BUILD_ANDROID=1 -DENABLE_MESH=1 -DENABLE_ONELAB=1 -DENABLE_PARSER=1 -DENABLE_POST=1 -DCMAKE_BUILD_TYPE=Release -DBLAS_LIB=../petsc.android/libf2cblas.so -DLAPACK_LIB=../petsc.android/libf2clapack.so ../gmsh
checkError $? "CMake fail (Gmsh)"
make androidGmsh -j3
checkError $? "make fail (Gmsh)"
make getHeaders
checkError $? "make getHeaders fail (Gmsh)"
cd ../getdp.android
echo -e "\033[1m[+] Make GetDP library\033[0m"
cmake -DDEFAULT=0 -DCMAKE_TOOLCHAIN_FILE=$ANDROID_TOOLCHAIN -DENABLE_FORTRAN=0 -DENABLE_BUILD_ANDROID=1 -DENABLE_GMSH=1 -DENABLE_LEGACY=1 -DENABLE_PETSC=1 -DCMAKE_BUILD_TYPE=Release -DGMSH_INC=..//gmsh.android/Headers -DGMSH_LIB=../gmsh.android/libs/libGmsh.so -DPETSC_INC=../petsc.android/include/ -DPETSC_LIBS=../petsc.android/libpetsc.so ../getdp
checkError $? "CMake fail (GetDP)"
make androidGetdp -j3
checkError $? "make fail (GetDP)"
make getHeaders
checkError $? "make getHeaders fail (GetDP)"
cd ../onelab.android
echo -e "\033[1m[+] Make Onelab interface library\033[0m"
cmake -DCMAKE_TOOLCHAIN_FILE=$ANDROID_TOOLCHAIN -DENABLE_BUILD_ANDROID=1 -DGETDP_LIB=../getdp.android/libs/libGetDP.so -DGETDP_INC=../getdp.android/Headers/ -DGMSH_LIB=../gmsh.android/libs/libGmsh.so -DGMSH_INC=../gmsh.android/Headers/ ../gmsh/contrib/mobile/
checkError $? "CMake fail (Onelab)"
make androidOnelab -j3
checkError $? "make fail (Onelab)"
echo -e "\033[1m[+] Build Android application (java)\033[0m"
cd ../gmsh/contrib/mobile/Android
if [ ! -d "libs/armeabi-v7a/" ]; then mkdir -p libs/armeabi-v7a/; fi
cp $ANDROID_SDK/extras/android/support/v4/android-support-v4.jar libs/
checkError $? "Copy android support v4 fail (Android)"
cp ../../../../gmsh.android/libs/libGmsh.so libs/armeabi-v7a/
cp ../../../../getdp.android/libs/libGetDP.so libs/armeabi-v7a/
cp ../../../../onelab.android/libs/libOnelab.so libs/armeabi-v7a/
cp ../../../../petsc.android/libs/libpetsc.so libs/armeabi-v7a/
cp ../../../../petsc.android/libs/libf2clapack.so libs/armeabi-v7a/
cp ../../../../petsc.android/libs/libf2cblas.so libs/armeabi-v7a/
target=1
count=0
while read line; do
read line # Name
target_name=$(echo $line | awk '{print $2}')
target_version=$(echo $line | awk '{print $3}')
read line # Type
read line # API level
target_api=$(echo $line | awk '{print $3}')
read line # Revision
read line # Skins
if [ $target_api -ge 14 ]; then
echo -e "\n\nBuild $target_name $target_version (target id: $target)"
$ANDROID_SDK/tools/android update project --name Onelab --path . --target $target
ant -quiet release
checkError $? "ant fail ($(echo $target_name $target_version))"
cp bin/Onelab-release.apk ../../../../Onelab-$(echo $target_name)_$(echo $target_version).apk
if [ $? -ne 0 ]; then
cp bin/Onelab-release-unsigned.apk ../../../../Onelab-unsigned-$(echo $target_name)_$(echo $target_version).apk
fi
count=$(($count+1))
fi
read line # HACK
target=$(($target+1))
done < <($ANDROID_SDK/tools/android list target | grep -A 5 "id:")
echo -e "\033[1m[V] Build $count apk(s)\033[0m"
exit 0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment