Allow building for F-Droid
This commit is contained in:
55
build.sh
55
build.sh
@@ -9,26 +9,15 @@ run_apk=false
|
||||
sign_apk=false
|
||||
sign_bundle=false
|
||||
build_release=true
|
||||
do_zipalign=true
|
||||
|
||||
# Fix Gradle compilation error
|
||||
if [ -z "$ANDROID_NDK_HOME" ]; then
|
||||
export ANDROID_NDK_HOME="$(which ndk-build | sed 's@/ndk-build@@')"
|
||||
fi
|
||||
[ -z "$ANDROID_SDK_ROOT" ] && ANDROID_SDK_ROOT="$ANDROID_HOME"
|
||||
|
||||
# Check environment before continuing
|
||||
if ! $(which adb zipalign apksigner jarsigner ndk-build java cmake > /dev/null); then
|
||||
echo "One of the follow binaries is missing. Check your environment";
|
||||
echo "adb zipalign apksigner jarsigner ndk-build java cmake";
|
||||
which adb zipalign apksigner jarsigner ndk-build java cmake;
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
JAVA_MVERSION=$(java --version 2>&1 | awk 'NR == 1{print $2}' | awk -F . '{print $1}')
|
||||
if [ $JAVA_MVERSION -lt 11 ]; then
|
||||
echo "Java version equal or above to 11 necessary.";
|
||||
exit 2;
|
||||
if [ $JAVA_MVERSION -gt 11 ]; then
|
||||
echo "Java 11 version is strongly recomended.";
|
||||
fi
|
||||
fi
|
||||
|
||||
while getopts "sirqbh" OPT
|
||||
while getopts "sirqbhz" OPT
|
||||
do
|
||||
case $OPT in
|
||||
s) sign_apk=true;;
|
||||
@@ -36,12 +25,14 @@ do
|
||||
r) install_apk=true ; run_apk=true;;
|
||||
q) echo "Quick rebuild does not work anymore with Gradle!";;
|
||||
b) sign_bundle=true;;
|
||||
z) do_zipalign=false;;
|
||||
h)
|
||||
echo "Usage: $0 [-s] [-i] [-r] [-q] [debug|release] [app-name]"
|
||||
echo " -s: sign .apk file after building"
|
||||
echo " -b: sign .aab app bundle file after building"
|
||||
echo " -i: install APK file to device after building"
|
||||
echo " -r: run APK file on device after building"
|
||||
echo " -z: skip zipalign and apksigner"
|
||||
echo " debug: build debug package"
|
||||
echo " release: build release package (default)"
|
||||
echo " app-name: directory under project/jni/application to be compiled"
|
||||
@@ -82,10 +73,10 @@ if [ "$#" -gt 0 ]; then
|
||||
shift
|
||||
fi
|
||||
|
||||
if ! [ -e project/local.properties ] && \
|
||||
grep "package $(grep -Po 'AppFullName\=\K[.[:alnum:]]+' AndroidAppSettings.cfg);" project/src/Globals.java > /dev/null 2>&1 && \
|
||||
[ "$(readlink AndroidAppSettings.cfg)" -ot "project/src/Globals.java" ] && \
|
||||
[ -z "$(find project/java/* \
|
||||
if [ ! -e project/local.properties ] || \
|
||||
! grep -q "package $(grep -Po 'AppFullName\=\K[.[:alnum:]]+' AndroidAppSettings.cfg);" project/src/Globals.java || \
|
||||
[ "$(readlink AndroidAppSettings.cfg)" -nt "project/src/Globals.java" ] || \
|
||||
[ -n "$(find project/java/* \
|
||||
project/javaSDL2/* \
|
||||
project/jni/sdl2/android-project/app/src/main/java/org/libsdl/app/* \
|
||||
project/AndroidManifestTemplate.xml \
|
||||
@@ -115,10 +106,6 @@ if [ -z "$NCPU" ]; then
|
||||
fi
|
||||
export BUILD_NUM_CPUS=$NCPU
|
||||
|
||||
# Fix Gradle compilation error
|
||||
if [ -z "$ANDROID_NDK_HOME" ]; then
|
||||
export ANDROID_NDK_HOME="$(which ndk-build | sed 's@/ndk-build@@')"
|
||||
fi
|
||||
|
||||
if [ -x project/jni/application/src/AndroidPreBuild.sh ]; then
|
||||
pushd project/jni/application/src
|
||||
@@ -127,11 +114,11 @@ if [ -x project/jni/application/src/AndroidPreBuild.sh ]; then
|
||||
fi
|
||||
|
||||
if grep -q 'CustomBuildScript=y' ./AndroidAppSettings.cfg; then
|
||||
ndk-build -C project -j$NCPU V=1 CUSTOM_BUILD_SCRIPT_FIRST_PASS=1 NDK_APP_STRIP_MODE=none
|
||||
${ANDROID_NDK_HOME}/ndk-build -C project -j$NCPU V=1 CUSTOM_BUILD_SCRIPT_FIRST_PASS=1 NDK_APP_STRIP_MODE=none
|
||||
make -C project/jni/application -f CustomBuildScript.mk
|
||||
fi
|
||||
|
||||
ndk-build -C project -j$NCPU V=1 NDK_APP_STRIP_MODE=none
|
||||
${ANDROID_NDK_HOME}/ndk-build -C project -j$NCPU V=1 NDK_APP_STRIP_MODE=none
|
||||
./copyAssets.sh
|
||||
pushd project
|
||||
if $build_release ; then
|
||||
@@ -143,8 +130,10 @@ if $build_release ; then
|
||||
fi
|
||||
../copyAssets.sh pack-binaries app/build/outputs/apk/release/app-release-unsigned.apk
|
||||
rm -f app/build/outputs/apk/release/app-release.apk
|
||||
zipalign -p 4 app/build/outputs/apk/release/app-release-unsigned.apk app/build/outputs/apk/release/app-release.apk
|
||||
apksigner sign --ks ~/.android/debug.keystore --ks-key-alias androiddebugkey --ks-pass pass:android app/build/outputs/apk/release/app-release.apk
|
||||
if $do_zipalign; then
|
||||
zipalign -p 4 app/build/outputs/apk/release/app-release-unsigned.apk app/build/outputs/apk/release/app-release.apk
|
||||
apksigner sign --ks ~/.android/debug.keystore --ks-key-alias androiddebugkey --ks-pass pass:android app/build/outputs/apk/release/app-release.apk
|
||||
fi
|
||||
else
|
||||
./gradlew assembleDebug
|
||||
if [ -x jni/application/src/AndroidPostBuild.sh ]; then
|
||||
@@ -155,8 +144,10 @@ else
|
||||
mkdir -p app/build/outputs/apk/release
|
||||
../copyAssets.sh pack-binaries app/build/outputs/apk/debug/app-debug.apk
|
||||
rm -f app/build/outputs/apk/release/app-release.apk
|
||||
zipalign -p 4 app/build/outputs/apk/debug/app-debug.apk app/build/outputs/apk/release/app-release.apk
|
||||
apksigner sign --ks ~/.android/debug.keystore --ks-key-alias androiddebugkey --ks-pass pass:android app/build/outputs/apk/release/app-release.apk
|
||||
if $do_zipalign; then
|
||||
zipalign -p 4 app/build/outputs/apk/debug/app-debug.apk app/build/outputs/apk/release/app-release.apk
|
||||
apksigner sign --ks ~/.android/debug.keystore --ks-key-alias androiddebugkey --ks-pass pass:android app/build/outputs/apk/release/app-release.apk
|
||||
fi
|
||||
fi
|
||||
|
||||
if $sign_apk; then
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/bin/sh
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
AUTO=a
|
||||
CHANGED=
|
||||
JAVA_SRC_PATH=project/java
|
||||
@@ -1208,6 +1209,7 @@ if echo "$CompiledLibraries" | grep -E 'crypto|ssl' > /dev/null; then
|
||||
fi
|
||||
|
||||
if echo "$CompiledLibraries" | grep -E 'iconv|charset|icu' > /dev/null; then
|
||||
echo "#=Compiling prebuilt icu"
|
||||
make -C project/jni -f Makefile.prebuilt icu ARCH_LIST="$MultiABI"
|
||||
fi
|
||||
|
||||
|
||||
@@ -13,6 +13,10 @@ ifneq ($(filter r1 r2 r3 r4 r5 r6 r7 r8,$(NDK_VERSION)),)
|
||||
$(error Your NDK $(NDK_VERSION) is too old, please download NDK from http://developer.android.com)
|
||||
endif
|
||||
|
||||
ifdef ANDROID_NDK_HOME
|
||||
NDK_PATH := $(ANDROID_NDK_HOME)
|
||||
else
|
||||
NDK_PATH := $(shell dirname $(shell which ndk-build))
|
||||
endif
|
||||
|
||||
include $(call all-subdir-makefiles)
|
||||
|
||||
@@ -66,7 +66,8 @@ openssl: $(OPENSSL)
|
||||
$(ICONV) $(ICU): iconv/src/build.sh
|
||||
cd iconv/src && \
|
||||
for ARCH in $(ARCH_LIST); do \
|
||||
env ARCHS=$$ARCH ./build.sh && \
|
||||
$(shell echo "#=Compiling iconv for $$ARCH") \
|
||||
env ARCHS=$$ARCH PATH=$(PATH):${ANDROID_NDK_HOME} ./build.sh && \
|
||||
mkdir -p ../lib/$$ARCH ../include ; \
|
||||
cp -f $$ARCH/libiconv.so $$ARCH/libcharset.so ../lib/$$ARCH/ ; \
|
||||
cp -f $$ARCH/include/*.h ../include/ ; \
|
||||
|
||||
@@ -7,10 +7,10 @@ AppName="OpenTTD"
|
||||
AppFullName=org.openttd.sdl
|
||||
|
||||
# Application version code (integer)
|
||||
AppVersionCode=1220112
|
||||
AppVersionCode=1220110
|
||||
|
||||
# Application user-visible version name (string)
|
||||
AppVersionName="12.2.rev112"
|
||||
AppVersionName="12.2.rev110"
|
||||
|
||||
# Specify path to download application data in zip archive in the form 'Description|URL|MirrorURL^Description2|URL2|MirrorURL2^...'
|
||||
# If you'll start Description with '!' symbol it will be enabled by default, '!!' will also hide the entry from the menu, so it cannot be disabled
|
||||
@@ -271,7 +271,7 @@ NDK_TOOLCHAIN_VERSION=clang
|
||||
# android-16 = Android 4.1, the earliest supported version in NDK r18.
|
||||
# android-18 = Android 4.3, the first version supporting GLES3.
|
||||
# android-21 = Android 5.1, the first version with SO_REUSEPORT defined.
|
||||
APP_PLATFORM=
|
||||
APP_PLATFORM=21
|
||||
|
||||
# Specify architectures to compile, 'all' or 'y' to compile for all architectures.
|
||||
# Available architectures: armeabi-v7a arm64-v8a x86 x86_64
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
LOCAL_PATH=`dirname $0`
|
||||
LOCAL_PATH=`cd $LOCAL_PATH && pwd`
|
||||
|
||||
VER=build
|
||||
|
||||
[ -d openttd-$VER-$1 ] || mkdir -p openttd-$VER-$1/bin/baseset
|
||||
@@ -79,7 +80,13 @@ export ARCH=$1
|
||||
echo "set_target_properties(${TARGET} PROPERTIES IMPORTED_LOCATION "'${'"${TARGET}"'_LIBRARY})' >> $CMAKE_SDL
|
||||
done
|
||||
|
||||
cmake \
|
||||
if [ -n "${CMAKE_BIN_LOC}" ]; then
|
||||
NINJA_PATH=${CMAKE_BIN_LOC}/ninja
|
||||
else
|
||||
NINJA_PATH=$(which ninja)
|
||||
fi
|
||||
|
||||
${CMAKE_BIN_LOC}cmake \
|
||||
-DCMAKE_MODULE_PATH=$LOCAL_PATH/openttd-$VER-$1/cmake \
|
||||
-DCMAKE_TOOLCHAIN_FILE=$NDK/build/cmake/android.toolchain.cmake \
|
||||
-DANDROID_ABI=$1 \
|
||||
@@ -88,7 +95,8 @@ export ARCH=$1
|
||||
-DGLOBAL_DIR="." \
|
||||
-DHOST_BINARY_DIR=$LOCAL_PATH/build-tools \
|
||||
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
|
||||
-DCMAKE_MAKE_PROGRAM=$(which ninja) \
|
||||
-DCMAKE_PREFIX_PATH=$LOCAL_PATH/../../iconv/src/$ARCH/ \
|
||||
-DCMAKE_MAKE_PROGRAM=$NINJA_PATH \
|
||||
-GNinja \
|
||||
-B ./openttd-$VER-$1 -S ./src
|
||||
|
||||
@@ -98,9 +106,8 @@ mkdir -p staging-openttd-$VER-$1
|
||||
|
||||
set -e
|
||||
|
||||
cmake --build openttd-$VER-$1 --verbose;
|
||||
cmake --install openttd-$VER-$1 --prefix ./staging-openttd-$VER-$1;
|
||||
cp staging-openttd-$VER-$1/games/libapplication.so libapplication-$1.so;
|
||||
${CMAKE_BIN_LOC}cmake --build openttd-$VER-$1 --verbose;
|
||||
${CMAKE_BIN_LOC}cmake --install openttd-$VER-$1 --prefix ./staging-openttd-$VER-$1;
|
||||
cp staging-openttd-$VER-$1/games/libapplication.so libapplication-$1.so;
|
||||
mkdir -p ./data
|
||||
cp -r staging-openttd-$VER-$1/share/games/application/* data/
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
mkdir -p build-tools
|
||||
[ -e build-tools/Makefile ] || cmake -DOPTION_TOOLS_ONLY=ON -B build-tools src
|
||||
[ -e build-tools/Makefile ] || ${CMAKE_BIN_LOC}cmake -DOPTION_TOOLS_ONLY=ON -B build-tools src
|
||||
make -C build-tools -j8 VERBOSE=1 || exit 1
|
||||
|
||||
Submodule project/jni/application/openttd/src updated: a637080136...7e8c52ac6a
@@ -3,8 +3,7 @@
|
||||
IFS='
|
||||
'
|
||||
|
||||
NDK=`which ndk-build`
|
||||
NDK=`dirname $NDK`
|
||||
NDK=${ANDROID_NDK_HOME:-$(dirname $(which ndk-build))}
|
||||
|
||||
if uname -s | grep -i "linux" > /dev/null ; then
|
||||
MYARCH=linux-$(uname -m)
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
IFS='
|
||||
'
|
||||
|
||||
NDK=`which ndk-build`
|
||||
NDK=`dirname $NDK`
|
||||
NDK=${ANDROID_NDK_HOME:-$(dirname $(which ndk-build))}
|
||||
|
||||
if uname -s | grep -i "linux" > /dev/null ; then
|
||||
MYARCH=linux-$(uname -m)
|
||||
@@ -26,7 +25,7 @@ fi
|
||||
ARCH=armeabi-v7a
|
||||
GCCPREFIX=armv7a-linux-androideabi
|
||||
BINUTILSPREFIX=arm-linux-androideabi
|
||||
APILEVEL=19
|
||||
APILEVEL=21
|
||||
|
||||
APP_MODULES=`grep 'APP_MODULES [:][=]' $LOCAL_PATH/../Settings.mk | sed 's@.*[=]\(.*\)@\1@' | sed 's@\b\(application\|sdl_main\|sdl_native_helpers\|c++_shared\)\b@@g'`
|
||||
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
IFS='
|
||||
'
|
||||
|
||||
NDK=`which ndk-build`
|
||||
NDK=`dirname $NDK`
|
||||
NDK=${ANDROID_NDK_HOME:-$(dirname $(which ndk-build))}
|
||||
|
||||
if uname -s | grep -i "linux" > /dev/null ; then
|
||||
MYARCH=linux-$(uname -m)
|
||||
@@ -25,7 +24,7 @@ else
|
||||
fi
|
||||
ARCH=x86
|
||||
GCCPREFIX=i686-linux-android
|
||||
APILEVEL=19
|
||||
APILEVEL=21
|
||||
|
||||
APP_MODULES=`grep 'APP_MODULES [:][=]' $LOCAL_PATH/../Settings.mk | sed 's@.*[=]\(.*\)@\1@' | sed 's@\b\(application\|sdl_main\|sdl_native_helpers\|c++_shared\)\b@@g'`
|
||||
|
||||
|
||||
@@ -3,11 +3,10 @@
|
||||
IFS='
|
||||
'
|
||||
|
||||
NDK=`which ndk-build`
|
||||
NDK=`dirname $NDK`
|
||||
NDK=${ANDROID_NDK_HOME:-$(dirname $(which ndk-build))}
|
||||
|
||||
if uname -s | grep -i "linux" > /dev/null ; then
|
||||
MYARCH=linux-$(arch)
|
||||
MYARCH=linux-$(uname -m)
|
||||
NDK=`readlink -f $NDK`
|
||||
elif uname -s | grep -i "darwin" > /dev/null ; then
|
||||
MYARCH=darwin-x86_64
|
||||
|
||||
Reference in New Issue
Block a user