Allow building for F-Droid

This commit is contained in:
Miguel Horta
2022-04-19 14:54:08 +01:00
committed by pelya
parent adbe81a060
commit a92f6cf9b8
12 changed files with 56 additions and 55 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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/ ; \

View File

@@ -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

View File

@@ -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/

View File

@@ -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

View File

@@ -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)

View File

@@ -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'`

View File

@@ -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'`

View File

@@ -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