diff options
-rwxr-xr-x | packaging/android/android-build-wrapper.sh | 30 | ||||
-rw-r--r-- | scripts/docker/android-build-container/Dockerfile | 47 | ||||
-rw-r--r-- | scripts/docker/android-build-container/setup-docker.sh | 2 |
3 files changed, 52 insertions, 27 deletions
diff --git a/packaging/android/android-build-wrapper.sh b/packaging/android/android-build-wrapper.sh index a361d8e41..f7152596b 100755 --- a/packaging/android/android-build-wrapper.sh +++ b/packaging/android/android-build-wrapper.sh @@ -53,7 +53,6 @@ PLATFORM=$(uname) export SUBSURFACE_SOURCE="$SCRIPTDIR"/../.. if [ "$PLATFORM" = Linux ] ; then - QT_BINARIES=qt-opensource-linux-x64-${LATEST_QT}.run NDK_BINARIES=${ANDROID_NDK}-linux-x86_64.zip SDK_TOOLS=sdk-tools-linux-${SDK_VERSION}.zip else @@ -117,24 +116,21 @@ fi # due to https://bugreports.qt.io/browse/QTBUG-69494 cp "$ANDROID_SDK"/platforms/"${ANDROID_PLATFORM}"/data/fonts/Roboto-Regular.ttf "$SUBSURFACE_SOURCE"/android-mobile || exit 1 -# download the Qt installer including Android bits and unpack / install -QT_DOWNLOAD_URL=https://download.qt.io/archive/qt/${QT_VERSION}/${LATEST_QT}/${QT_BINARIES} if [ ! -d Qt/"${LATEST_QT}"/android_armv7 ] ; then - if [ -d Qt ] ; then - # Over writing an exsisting installation stalls the installation script, - # rename the exsisting Qt folder and notify then user. - mv Qt Qt_OLD - echo "Qt installation found, backing it up to Qt_OLD." - fi - if [ ! -f "${QT_BINARIES}" ] ; then - wget -q "${QT_DOWNLOAD_URL}" - fi - chmod +x ./"${QT_BINARIES}" - ./"${QT_BINARIES}" --platform minimal --script "$SCRIPTDIR"/qt-installer-noninteractive.qs --no-force-installations + # download the Qt installer including Android bits and unpack / install + bash "$SCRIPTDIR"/install-qt.sh --version ${LATEST_QT} --target android --toolchain android_armv7 \ + qtbase qtdeclarative qttranslations qttools qtsvg \ + qtquickcontrols qtquickcontrols2 qtlocation qtimageformats \ + qtgraphicaleffects qtconnectivity qtandroidextras \ + --directory Qt +fi +if [ ! -d Qt/"${LATEST_QT}"/android_arm64_v8a ] ; then + bash "$SCRIPTDIR"/install-qt.sh --version ${LATEST_QT} --target android --toolchain android_arm64_v8a \ + qtbase qtdeclarative qttranslations qttools qtsvg \ + qtquickcontrols qtquickcontrols2 qtlocation qtimageformats \ + qtgraphicaleffects qtconnectivity qtandroidextras \ + --directory Qt fi - -# patch the cmake / Qt5.7.1 incompatibility mentioned above -sed -i 's/set_property(TARGET Qt5::Core PROPERTY INTERFACE_COMPILE_FEATURES cxx_decltype)/# &/' Qt/"${LATEST_QT}"/android_armv7/lib/cmake/Qt5Core/Qt5CoreConfigExtras.cmake if [ ! -z ${PREP_ONLY+x} ] ; then exit 0 diff --git a/scripts/docker/android-build-container/Dockerfile b/scripts/docker/android-build-container/Dockerfile index 62363d559..509443f85 100644 --- a/scripts/docker/android-build-container/Dockerfile +++ b/scripts/docker/android-build-container/Dockerfile @@ -16,16 +16,17 @@ RUN apt-get update && \ libx11-xcb1 \ libgl1-mesa-glx \ libglib2.0-0 \ - openjdk-8-jdk + openjdk-8-jdk \ + curl \ + p7zip-full # create our working directory and place the local copies of the Qt # install, NDK and SDK there, plus the three files from the Subsurface # sources that we need to get the prep routines to run RUN mkdir -p /android -ADD qt-opensource-linux-x64-5.13.1.run /android/ ADD android-ndk-r*-linux-x86_64.zip /android/ ADD sdk-tools-linux-*.zip /android/ -ADD android-build-wrapper.sh variables.sh qt-installer-noninteractive.qs /android/ +ADD install-qt.sh android-build-wrapper.sh variables.sh /android/ # install current cmake ADD cmake-3.13.2.tar.gz /android/ @@ -38,17 +39,45 @@ RUN cd /android && bash -x /android/android-build-wrapper.sh -prep-only # uggly hack to work around some breakage in the NDK which makes our # compiles fail -RUN sed -i '313,+13s/^using/\/\/using/' /android/android-ndk-r18b/sources/cxx-stl/llvm-libc++/include/cmath +#RUN sed -i '313,+13s/^using/\/\/using/' /android/android-ndk-r21/sources/cxx-stl/llvm-libc++/include/cmath # clean up the files that we don't need to keep the container smaller RUN cd /android && \ - rm -rf qt-opensource-linux-x64-*.run \ - Qt/[a-zA-Z]* \ - sdk-tools-linux-*.zip \ + apt-get remove -y gcc g++-7 libstdc++-7-dev && \ + rm -rf \ + Qt/5*/android_arm*/lib/*x86* \ + Qt/5*/android_arm*/doc \ + Qt/5*/android_arm*/include/QtHelp \ + Qt/5*/android_arm*/include/QtFbSupport \ + Qt/5*/android_arm*/include/QtFontDatabaseSupport \ + Qt/5*/android_arm*/include/QtNfc \ + Qt/5*/android_arm*/include/QtPrintSupport \ + Qt/5*/android_arm*/include/QtTest \ + Qt/5*/android_arm*/include/QtXml \ + Qt/5*/android_arm*/plugins/geoservices/libqtgeoservices_mapboxgl.so \ + sdk-tools-linux-*.zip \ android-ndk-r*-linux-x86_64.zip \ + $( find android-ndk*/platforms -name arch-mips -o -name arch-x86 ) \ + android-ndk-r[0-9a-z]*/toolchains/x86-* android-ndk*/toolchains/llvm/prebuilt/x86-* \ + android-ndk-r[0-9a-z]*/platforms/android-[12][2345678] \ + android-ndk-r[0-9a-z]*/platforms/android-21/arch-x86_64 \ + android-ndk-r[0-9a-z]*/prebuilt/linux-x86_64 \ + android-ndk-r[0-9a-z]*/simpleperf \ + android-ndk-r[0-9a-z]*/sources/cxx-stl/llvm-libc++/libs/x* \ + android-ndk-r[0-9a-z]*/sources/cxx-stl/llvm-libc++/libs/*/*static* \ + android-ndk-r[0-9a-z]*/sources/cxx-stl/llvm-libc++/test \ + android-ndk-r[0-9a-z]*/sources/cxx-stl/llvm-libc++/utils \ + android-ndk-r[0-9a-z]*/sources/cxx-stl/llvmlibc++abi \ + android-ndk-r[0-9a-z]*/sources/cxx-stl/system \ + android-ndk-r[0-9a-z]*/sources/third_party \ + android-ndk-r[0-9a-z]*/sysroot/usr/lib \ + android-sdk-linux/build-tools/28.0.3/renderscript \ + android-sdk-linux/platform-tools/systrace \ + android-sdk-linux/tools/lib \ + android-sdk-linux/tools/proguard \ + android-sdk-linux/tools/support \ android-sdk-linux/emulator \ - $( find android-ndk*/platforms -name arch-mips -o -name arch-x86 ) \ - android-ndk*/toolchains/x86-* android-ndk*/toolchains/llvm/prebuilt/x86-* \ + /usr/lib/gcc \ cmake-3.13* && \ ls -l && \ du -sh * diff --git a/scripts/docker/android-build-container/setup-docker.sh b/scripts/docker/android-build-container/setup-docker.sh index 98c13ec48..f9b9b5310 100644 --- a/scripts/docker/android-build-container/setup-docker.sh +++ b/scripts/docker/android-build-container/setup-docker.sh @@ -5,7 +5,7 @@ # copy the dependency script into this folder cp ../../../packaging/android/android-build-wrapper.sh . cp ../../../packaging/android/variables.sh . -cp ../../../packaging/android/qt-installer-noninteractive.qs . +cp ../../../packaging/android/install-qt.sh . # create the container (this takes a while) sudo docker build -t android-builder --squash . |