CI: modify android.yml #1883
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Author: Kang Lin <kl222@126.com> | ||
| name: android | ||
| on: | ||
| workflow_call: | ||
| outputs: | ||
| name: | ||
| description: "The artifact name" | ||
| value: ${{ jobs.build_android.outputs.name }} | ||
| jobs: | ||
| build_android: | ||
| strategy: | ||
| matrix: | ||
| include: | ||
| - qt_arch: android_arm64_v8a | ||
| VCPKG_TARGET_TRIPLET: arm64-android | ||
| ANDROID_ABI: arm64-v8a | ||
| qt_version: 6.10.3 | ||
| BUILD_TYPE: Release | ||
| - qt_arch: android_x86_64 | ||
| VCPKG_TARGET_TRIPLET: x64-android | ||
| ANDROID_ABI: x86_64 | ||
| qt_version: 6.10.3 | ||
| BUILD_TYPE: Release | ||
| # See: [About GitHub-hosted runners](https://docs.github.com/actions/using-github-hosted-runners/about-github-hosted-runners/about-github-hosted-runners) | ||
| # See: [Choosing the runner for a job](https://docs.github.com/actions/writing-workflows/choosing-where-your-workflow-runs/choosing-the-runner-for-a-job) | ||
| # See: https://github.com/actions/runner-images/ | ||
| runs-on: ubuntu-24.04 | ||
| env: | ||
| RabbitRemoteControl_VERSION: v1.0.0-dev | ||
| VCPKGGITCOMMITID: 7213cf8135c329c37c7e2778e40774489a0583a8 | ||
| VCPKG_TARGET_TRIPLET: ${{matrix.VCPKG_TARGET_TRIPLET}} | ||
| VCPKG_DEFAULT_TRIPLET: ${{matrix.VCPKG_TARGET_TRIPLET}} | ||
| VCPKG_DEFAULT_HOST_TRIPLET: x64-linux | ||
| VCPKG_MANIFEST_FEATURES: "freerdp;vnc;wol;filetransfer" | ||
| BUILD_DIR: ${{github.workspace}}/build | ||
| SOURCE_DIR: ${{github.workspace}}/.cache/source | ||
| TOOLS_DIR: ${{github.workspace}}/.cache/tools | ||
| INSTALL_DIR: ${{github.workspace}}/.cache/install | ||
| artifact_name: build_android | ||
| #ANDROID_NDK_HOME: /usr/local/lib/android/sdk/ndk/26.3.11579264 | ||
| ANDROID_PLATFORM: android-34 | ||
| ANDROID_NATIVE_API_LEVEL: 34 | ||
| ANDROID_ABI: ${{matrix.ANDROID_ABI}} | ||
| qt_modules: 'qtimageformats qtmultimedia qtscxml qtserialport qt5compat qtwebsockets qtpositioning qtwebchannel qtspeech' # qtvirtualkeyboard' | ||
| # Map the job outputs to step outputs | ||
| outputs: | ||
| name: ${{ env.artifact_name }} | ||
| steps: | ||
| - name: Checkout Repository | ||
| uses: actions/checkout@v4 | ||
| with: | ||
| submodules: recursive | ||
| fetch-depth: 0 | ||
| - name: make directory | ||
| run: | | ||
| cmake --version | ||
| cmake -E make_directory ${{env.SOURCE_DIR}} | ||
| cmake -E make_directory ${{env.TOOLS_DIR}} | ||
| cmake -E make_directory ${{env.INSTALL_DIR}} | ||
| cmake -E make_directory ${{env.BUILD_DIR}} | ||
| - name: Install apt packages | ||
| run: | | ||
| #sudo apt-get update -y | ||
| #sudo apt-get upgrade -y | ||
| sudo apt install -y -q ninja-build nasm | ||
| - name: Cache installed | ||
| uses: actions/cache@v4 | ||
| id: cache-installed | ||
| with: | ||
| path: | | ||
| ${{env.INSTALL_DIR}} | ||
| key: install_android_qt${{matrix.qt_version}}_${{matrix.qt_arch}}_${{matrix.BUILD_TYPE}} | ||
| - name: run-vcpkg | ||
| uses: lukka/run-vcpkg@v11 | ||
| with: | ||
| vcpkgGitCommitId: ${{env.VCPKGGITCOMMITID}} | ||
| vcpkgDirectory: ${{env.SOURCE_DIR}}/vcpkg | ||
| - name: run vcpkg | ||
| if: false | ||
| working-directory: ${{github.workspace}} | ||
| run: | | ||
| vcpkg install --triplet ${{matrix.VCPKG_TARGET_TRIPLET}} --x-feature=vnc | ||
| - name: Install Qt of linux_gcc_64 | ||
| uses: jurplel/install-qt-action@v4 | ||
| if: ${{ matrix.qt_version == '6.10.3' }} | ||
| with: | ||
| dir: '${{env.TOOLS_DIR}}/qt' # optional | ||
| version: '${{matrix.qt_version}}' | ||
| #host: 'linux' | ||
| target: 'desktop' | ||
| arch: 'linux_gcc_64' | ||
| set-env: false | ||
| cache: true | ||
| cache-key-prefix: cached-qt_${{matrix.qt_version}}_${{matrix.qt_arch}} | ||
| - name: Install Qt of gcc_64 | ||
| uses: jurplel/install-qt-action@v4 | ||
| if: ${{ matrix.qt_version == '6.6.3' }} | ||
| with: | ||
| dir: '${{env.TOOLS_DIR}}/qt' # optional | ||
| version: '${{matrix.qt_version}}' | ||
| #host: 'linux' | ||
| target: 'desktop' | ||
| arch: 'gcc_64' | ||
| set-env: false | ||
| cache: true | ||
| cache-key-prefix: cached-qt_${{matrix.qt_version}}_${{matrix.qt_arch}} | ||
| - name: Install Qt of android | ||
| uses: jurplel/install-qt-action@v4 | ||
| with: | ||
| # Directory to install Qt | ||
| dir: '${{env.TOOLS_DIR}}/qt' # optional | ||
| # Version of Qt to install | ||
| version: '${{matrix.qt_version}}' | ||
| # Host platform | ||
| #host: linux # optional | ||
| # Target platform for build | ||
| target: 'android' # optional, default is desktop | ||
| # Architecture for Windows/Android | ||
| arch: '${{matrix.qt_arch}}' # optional | ||
| # Additional Qt modules to install | ||
| modules: '${{env.qt_modules}}' # optional. See: https://ddalcino.github.io/aqt-list-server/ | ||
| cache: true | ||
| cache-key-prefix: cached-qt_${{matrix.qt_version}}_${{matrix.qt_arch}} | ||
| - name: chmod qt-cmake | ||
| run: | | ||
| sudo chmod 777 ${QT_ROOT_DIR}/bin/qt-cmake | ||
| - name: libpcap | ||
| working-directory: ${{env.SOURCE_DIR}} | ||
| run: | | ||
| if [ ! -f ${{env.INSTALL_DIR}}/lib/libpcap.a ]; then | ||
| curl https://www.tcpdump.org/release/libpcap-1.10.6.tar.xz | ||
| tar xvf libpcap-1.10.6.tar.xz | ||
| cd libpcap-1.10.6 | ||
| cmake -E make_directory build | ||
| cd build | ||
| cmake .. -DCMAKE_BUILD_TYPE=Release \ | ||
| -BUILD_SHARED_LIBS=OFF \ | ||
| -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ | ||
| -DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} \ | ||
| -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} \ | ||
| -DCMAKE_PREFIX_PATH=${{env.INSTALL_DIR}}/lib/cmake \ | ||
| -DCMAKE_TOOLCHAIN_FILE="${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake" \ | ||
| -DANDROID_ABI=${{env.ANDROID_ABI}} \ | ||
| -DQT_HOST_PATH=${QT_ROOT_DIR}/../gcc_64 \ | ||
| -DQT_CHAINLOAD_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \ | ||
| -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake \ | ||
| -DVCPKG_VERBOSE=ON \ | ||
| -DVCPKG_TARGET_TRIPLET=${{matrix.VCPKG_TARGET_TRIPLET}} \ | ||
| -DX_VCPKG_APPLOCAL_DEPS_INSTALL=ON \ | ||
| -DVCPKG_TRACE_FIND_PACKAGE=ON \ | ||
| -DVCPKG_INSTALLED_DIR=${{env.INSTALL_DIR}}/RabbitVNC/vcpkg_installed | ||
| cmake --build . --config Release | ||
| cmake --build . --config Release --target install | ||
| fi | ||
| - name: pcapplusplus | ||
| #if: false | ||
| working-directory: ${{env.SOURCE_DIR}} | ||
| run: | | ||
| if [ ! -d ${{ env.INSTALL_DIR }}/lib/cmake/pcapplusplus ]; then | ||
| git clone -b v25.05 --depth=1 https://github.com/seladb/PcapPlusPlus.git | ||
| cd PcapPlusPlus | ||
| cmake -E make_directory build | ||
| cd build | ||
| cmake .. -DCMAKE_BUILD_TYPE=Release \ | ||
| -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \ | ||
| -DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} \ | ||
| -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} \ | ||
| -DCMAKE_PREFIX_PATH=${{env.INSTALL_DIR}}/lib/cmake \ | ||
| -DCMAKE_TOOLCHAIN_FILE="${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake" \ | ||
| -DANDROID_ABI=${{env.ANDROID_ABI}} \ | ||
| -DQT_HOST_PATH=${QT_ROOT_DIR}/../gcc_64 \ | ||
| -DQT_CHAINLOAD_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \ | ||
| -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake \ | ||
| -DVCPKG_VERBOSE=ON \ | ||
| -DVCPKG_TARGET_TRIPLET=${{matrix.VCPKG_TARGET_TRIPLET}} \ | ||
| -DX_VCPKG_APPLOCAL_DEPS_INSTALL=ON \ | ||
| -DVCPKG_TRACE_FIND_PACKAGE=ON \ | ||
| -DVCPKG_INSTALLED_DIR=${{env.INSTALL_DIR}}/RabbitVNC/vcpkg_installed \ | ||
| -DPCAPPP_BUILD_EXAMPLES=OFF \ | ||
| -DPCAPPP_BUILD_TESTS=OFF \ | ||
| -DPCAPPP_BUILD_TUTORIALS=OFF \ | ||
| -DPCAP_LIBRARY=${{env.INSTALL_DIR}}/lib/libpcap.a \ | ||
| -DPCAP_INCLUDE_DIR=${{env.INSTALL_DIR}}/include | ||
| cmake --build . --config Release | ||
| cmake --build . --config Release --target install | ||
| fi | ||
| - name: build RabbitVNC | ||
| if: false | ||
| working-directory: ${{env.SOURCE_DIR}} | ||
| run: | | ||
| if [ ! -d ${{env.INSTALL_DIR}}/lib/cmake/RabbitVNC ]; then | ||
| git clone --depth=1 https://github.com/KangLin/RabbitVNC.git | ||
| cd ${{env.SOURCE_DIR}}/RabbitVNC | ||
| cmake -E make_directory build | ||
| cd build | ||
| ${QT_ROOT_DIR}/bin/qt-cmake .. \ | ||
| -DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} \ | ||
| -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} \ | ||
| -DCMAKE_PREFIX_PATH=${{env.INSTALL_DIR}}/lib/cmake \ | ||
| -DBUILD_SHARED_LIBS=OFF \ | ||
| -DCMAKE_VERBOSE_MAKEFILE=ON \ | ||
| -DANDROID_ABI=${{env.ANDROID_ABI}} \ | ||
| -DQT_HOST_PATH=${QT_ROOT_DIR}/../gcc_64 \ | ||
| -DQT_CHAINLOAD_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \ | ||
| -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake \ | ||
| -DVCPKG_VERBOSE=ON \ | ||
| -DVCPKG_TARGET_TRIPLET=${{matrix.VCPKG_TARGET_TRIPLET}} \ | ||
| -DX_VCPKG_APPLOCAL_DEPS_INSTALL=ON \ | ||
| -DVCPKG_TRACE_FIND_PACKAGE=ON \ | ||
| -DVCPKG_INSTALLED_DIR=${{env.INSTALL_DIR}}/RabbitVNC/vcpkg_installed \ | ||
| -DBUILD_TESTS=OFF \ | ||
| -DBUILD_VIEWER=OFF | ||
| cmake --build . --parallel $(nproc) --verbose --config ${{ matrix.BUILD_TYPE }} | ||
| cmake --install . --config ${{matrix.BUILD_TYPE}} --strip | ||
| fi | ||
| - name: Build libvncserver | ||
| #if: false | ||
| working-directory: ${{env.SOURCE_DIR}} | ||
| run: | | ||
| if [ ! -d ${{env.INSTALL_DIR}}/lib/cmake/LibVNCServer ]; then | ||
| #git clone https://github.com/KangLin/libvncserver.git | ||
| git clone --depth=1 https://github.com/LibVNC/libvncserver.git | ||
| cd libvncserver | ||
| #git checkout -b 5deb43e2837e05e5e24bd2bfb458ae6ba930bdaa 5deb43e2837e05e5e24bd2bfb458ae6ba930bdaa | ||
| cmake -E make_directory build | ||
| cd build | ||
| cmake .. \ | ||
| -DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} \ | ||
| -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} \ | ||
| -DCMAKE_PREFIX_PATH=${{env.INSTALL_DIR}}/lib/cmake \ | ||
| -DBUILD_SHARED_LIBS=OFF \ | ||
| -DCMAKE_VERBOSE_MAKEFILE=ON \ | ||
| -DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \ | ||
| -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake \ | ||
| -DVCPKG_VERBOSE=ON \ | ||
| -DVCPKG_TRACE_FIND_PACKAGE=ON \ | ||
| -DVCPKG_TARGET_TRIPLET=${{matrix.VCPKG_TARGET_TRIPLET}} \ | ||
| -DX_VCPKG_APPLOCAL_DEPS_INSTALL=ON \ | ||
| -DVCPKG_INSTALLED_DIR=${{env.INSTALL_DIR}}/LibVNCServer/vcpkg_installed \ | ||
| -DANDROID_ABI=${{env.ANDROID_ABI}} \ | ||
| -DANDROID_PLATFORM=${{env.ANDROID_PLATFORM}} \ | ||
| -DWITH_OPENSSL=ON \ | ||
| -DWITH_GCRYPT=OFF \ | ||
| -DWITH_EXAMPLES=OFF \ | ||
| -DWITH_TESTS=OFF | ||
| cmake --build . --parallel $(nproc) --verbose --config ${{ matrix.BUILD_TYPE }} | ||
| cmake --install . --config ${{matrix.BUILD_TYPE}} --strip | ||
| fi | ||
| - name: build tigervnc | ||
| if: true | ||
| working-directory: ${{env.SOURCE_DIR}} | ||
| run: | | ||
| if [ ! -d ${{env.INSTALL_DIR}}/lib/cmake/tigervnc ]; then | ||
| git clone --depth=1 https://github.com/KangLin/tigervnc.git | ||
| cd ${{env.SOURCE_DIR}}/tigervnc | ||
| cmake -E make_directory build | ||
| cd build | ||
| cmake .. \ | ||
| -DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} \ | ||
| -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} \ | ||
| -DCMAKE_PREFIX_PATH=${{env.INSTALL_DIR}}/lib/cmake \ | ||
| -DBUILD_SHARED_LIBS=OFF \ | ||
| -DCMAKE_VERBOSE_MAKEFILE=ON \ | ||
| -DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \ | ||
| -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake \ | ||
| -GNinja \ | ||
| -DVCPKG_VERBOSE=ON \ | ||
| -DVCPKG_TRACE_FIND_PACKAGE=ON \ | ||
| -DVCPKG_TARGET_TRIPLET=${{matrix.VCPKG_TARGET_TRIPLET}} \ | ||
| -DX_VCPKG_APPLOCAL_DEPS_INSTALL=ON \ | ||
| -DVCPKG_INSTALLED_DIR=${{env.INSTALL_DIR}}/tigervnc/vcpkg_installed \ | ||
| -DANDROID_ABI=${{env.ANDROID_ABI}} \ | ||
| -DANDROID_PLATFORM=${{env.ANDROID_PLATFORM}} \ | ||
| -DBUILD_TESTS=OFF \ | ||
| -DBUILD_VIEWER=OFF | ||
| cmake --build . --parallel $(nproc) --verbose --config ${{ matrix.BUILD_TYPE }} | ||
| cmake --install . --config ${{matrix.BUILD_TYPE}} --strip | ||
| fi | ||
| - name: build qxmpp | ||
| if: false | ||
| working-directory: ${{env.SOURCE_DIR}} | ||
| env: | ||
| QT_ROOT: ${{env.QT_ROOT_DIR}} | ||
| run: | | ||
| if [ ! -d ${{env.INSTALL_DIR}}/lib/cmake/qxmpp ]; then | ||
| git clone -b v1.10.3 https://invent.kde.org/libraries/qxmpp.git | ||
| cd qxmpp | ||
| cmake -E make_directory build | ||
| cd build | ||
| ${QT_ROOT_DIR}/bin/qt-cmake .. \ | ||
| -DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} \ | ||
| -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} \ | ||
| -DBUILD_SHARED_LIBS=OFF \ | ||
| -DCMAKE_VERBOSE_MAKEFILE=ON \ | ||
| -DCMAKE_AUTOGEN_VERBOSE=ON \ | ||
| -DQT_HOST_PATH=${QT_ROOT_DIR}/../gcc_64 \ | ||
| -DCMAKE_PREFIX_PATH=${QT_ROOT_DIR}:${{env.INSTALL_DIR}}/lib/cmake \ | ||
| -DQt6LinguistTools_DIR=${QT_ROOT_DIR}/../gcc_64/lib/cmake/Qt6LinguistTools \ | ||
| -DQT_CHAINLOAD_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \ | ||
| -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake \ | ||
| -DVCPKG_VERBOSE=ON \ | ||
| -DVCPKG_TRACE_FIND_PACKAGE=ON \ | ||
| -DVCPKG_TARGET_TRIPLET=${{matrix.VCPKG_TARGET_TRIPLET}} \ | ||
| -DX_VCPKG_APPLOCAL_DEPS_INSTALL=ON \ | ||
| -DVCPKG_INSTALLED_DIR=${{env.INSTALL_DIR}}/qxmpp/vcpkg_installed \ | ||
| -DBUILD_EXAMPLES=OFF \ | ||
| -DBUILD_TESTS=OFF | ||
| cmake --build . --parallel $(nproc) --verbose --config ${{matrix.BUILD_TYPE}} | ||
| cmake --install . --config ${{matrix.BUILD_TYPE}} --strip | ||
| fi | ||
| - name: build lxqt-build-tools | ||
| if: true | ||
| working-directory: ${{env.SOURCE_DIR}} | ||
| run: | | ||
| if [ ! -d ${{env.INSTALL_DIR}}/share/cmake/lxqt2-build-tools ]; then | ||
| git clone -b 2.2.0 --depth=1 "https://github.com/lxqt/lxqt-build-tools.git" | ||
| cd lxqt-build-tools | ||
| cmake -E make_directory build | ||
| cd build | ||
| ${QT_ROOT_DIR}/bin/qt-cmake .. \ | ||
| -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \ | ||
| -DCMAKE_INSTALL_PREFIX=${{env.INSTALL_DIR}} \ | ||
| -DQT_HOST_PATH=${QT_ROOT_DIR}/../gcc_64 \ | ||
| -DCMAKE_PREFIX_PATH=${QT_ROOT_DIR} | ||
| cmake --build . --config ${{matrix.BUILD_TYPE}} | ||
| cmake --build . --config ${{matrix.BUILD_TYPE}} --target install | ||
| fi | ||
| - name: build qtermwidget | ||
| working-directory: ${{env.SOURCE_DIR}} | ||
| if: ture | ||
| run: | | ||
| if [ ! -d ${{env.INSTALL_DIR}}/lib/cmake/qtermwidget6 ]; then | ||
| git clone --depth=1 "https://github.com/KangLin/qtermwidget.git" | ||
| cd qtermwidget | ||
| cmake -E make_directory build | ||
| cd build | ||
| ${QT_ROOT_DIR}/bin/qt-cmake .. \ | ||
| -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \ | ||
| -DCMAKE_INSTALL_PREFIX=${{env.INSTALL_DIR}} \ | ||
| -Dlxqt2-build-tools_DIR=${{env.INSTALL_DIR}}/share/cmake/lxqt2-build-tools \ | ||
| -DQT_HOST_PATH=${QT_ROOT_DIR}/../gcc_64 \ | ||
| -DQt6LinguistTools_DIR=${QT_ROOT_DIR}/../gcc_64/lib/cmake/Qt6LinguistTools \ | ||
| -DCMAKE_PREFIX_PATH=${QT_ROOT_DIR}:${{env.INSTALL_DIR}}/lib/cmake | ||
| cmake --build . --config ${{matrix.BUILD_TYPE}} | ||
| cmake --build . --config ${{matrix.BUILD_TYPE}} --target install | ||
| fi | ||
| - name: build qtkeychain | ||
| #if: false | ||
| working-directory: ${{env.SOURCE_DIR}} | ||
| run: | | ||
| if [ ! -d ${{env.INSTALL_DIR}}/lib/cmake/Qt6Keychain ]; then | ||
| git clone -b 0.15.0 https://github.com/frankosterfeld/qtkeychain.git | ||
| cd qtkeychain | ||
| cmake -E make_directory build | ||
| cd build | ||
| ${QT_ROOT_DIR}/bin/qt-cmake .. \ | ||
| -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \ | ||
| -DCMAKE_INSTALL_PREFIX=${{env.INSTALL_DIR}} \ | ||
| -DCMAKE_PREFIX_PATH=${QT_ROOT_DIR}:${{env.INSTALL_DIR}}/lib/cmake \ | ||
| -DQT_HOST_PATH=${QT_ROOT_DIR}/../gcc_64 \ | ||
| -DQt6LinguistTools_DIR=${QT_ROOT_DIR}/../gcc_64/lib/cmake/Qt6LinguistTools \ | ||
| -DCMAKE_VERBOSE_MAKEFILE=${BUILD_VERBOSE} \ | ||
| -DBUILD_WITH_QT6:BOOL=ON | ||
| cmake --build . --config Release --parallel $(nproc) | ||
| cmake --build . --config Release --target install | ||
| fi | ||
| - name: Build QFtpServer | ||
| working-directory: ${{env.SOURCE_DIR}} | ||
| run: | | ||
| if [ ! -d ${{env.INSTALL_DIR}}/lib/cmake/QFtpServerLib ]; then | ||
| git clone --depth=1 https://github.com/KangLin/QFtpServer.git | ||
| cd QFtpServer | ||
| cmake -E make_directory build | ||
| cd build | ||
| ${QT_ROOT_DIR}/bin/qt-cmake .. \ | ||
| -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \ | ||
| -DCMAKE_INSTALL_PREFIX=${{env.INSTALL_DIR}} \ | ||
| -DCMAKE_PREFIX_PATH=${QT_ROOT_DIR}:${{env.INSTALL_DIR}}/lib/cmake \ | ||
| -DQT_HOST_PATH=${QT_ROOT_DIR}/../gcc_64 \ | ||
| -DQt6LinguistTools_DIR=${QT_ROOT_DIR}/../gcc_64/lib/cmake/Qt6LinguistTools \ | ||
| -DCMAKE_VERBOSE_MAKEFILE=${BUILD_VERBOSE} \ | ||
| -DWITH_APP=OFF | ||
| cmake --build . --config Release --parallel $(nproc) | ||
| cmake --build . --config Release --target install | ||
| fi | ||
| - name: git clone RabbitCommon | ||
| working-directory: ${{env.SOURCE_DIR}} | ||
| run: git clone https://github.com/KangLin/RabbitCommon.git | ||
| - name: build RabbitRemoteControl | ||
| working-directory: ${{env.BUILD_DIR}} | ||
| env: | ||
| RabbitCommon_ROOT: ${{env.SOURCE_DIR}}/RabbitCommon | ||
| QT_ANDROID_KEYSTORE_PATH: ${{env.SOURCE_DIR}}/RabbitCommon/RabbitCommon.keystore | ||
| QT_ANDROID_KEYSTORE_ALIAS: rabbitcommon | ||
| QT_ANDROID_KEYSTORE_STORE_PASS: ${{secrets.STOREPASS}} | ||
| JAVA_HOME: ${{env.JAVA_HOME_17_X64}} | ||
| run: | | ||
| sudo chmod 777 ${QT_ROOT_DIR}/bin/qt-cmake | ||
| ${QT_ROOT_DIR}/bin/qt-cmake .. \ | ||
| -GNinja \ | ||
| -DCMARK_SHARED=OFF \ | ||
| -DCMARK_TESTS=OFF \ | ||
| -DCMARK_STATIC=ON \ | ||
| -DWITH_CMARK=OFF \ | ||
| -DWITH_CMARK_GFM=ON \ | ||
| -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \ | ||
| -DCMAKE_AUTOGEN_VERBOSE=ON \ | ||
| -DANDROID_PLATFORM=${{env.ANDROID_PLATFORM}} \ | ||
| -DQT_CHAINLOAD_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \ | ||
| -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${ANDROID_NDK_HOME}/build/cmake/android.toolchain.cmake \ | ||
| -DVCPKG_TARGET_TRIPLET=${{env.VCPKG_TARGET_TRIPLET}} \ | ||
| -DX_VCPKG_APPLOCAL_DEPS_INSTALL=ON \ | ||
| -DVCPKG_VERBOSE=ON \ | ||
| -DRABBIT_ENABLE_INSTALL_DEPENDENT=ON \ | ||
| -DRABBIT_ENABLE_INSTALL_QT=ON \ | ||
| -DRABBIT_ENABLE_INSTALL_TO_BUILD_PATH=ON \ | ||
| -DCMAKE_PREFIX_PATH=${QT_ROOT_DIR}:${{env.INSTALL_DIR}} \ | ||
| -DQT_HOST_PATH=${QT_ROOT_DIR}/../gcc_64 \ | ||
| -DQT_ANDROID_SIGN_APK=ON \ | ||
| -DQT_ENABLE_VERBOSE_DEPLOYMENT=ON \ | ||
| -DVCPKG_TRACE_FIND_PACKAGE=ON \ | ||
| -DQt6LinguistTools_DIR=${QT_ROOT_DIR}/../gcc_64/lib/cmake/Qt6LinguistTools \ | ||
| -DCMAKE_INSTALL_PREFIX=`pwd`/install \ | ||
| -DENABLE_UPDATE_TRANSLATIONS=ON \ | ||
| -DWITH_WebEngineWidgets=ON \ | ||
| -DBUILD_LibVNCServer=ON \ | ||
| -DLibVNCServer_DIR="${{env.INSTALL_DIR}}/lib/cmake/LibVNCServer" \ | ||
| -DBUILD_FREERDP=ON \ | ||
| -DQXmpp_DIR=${{env.INSTALL_DIR}}/lib/cmake/qxmpp \ | ||
| -DRabbitVNC_DIR=${{env.INSTALL_DIR}}/lib/cmake/RabbitVNC \ | ||
| -Dtigervnc_DIR=${{env.INSTALL_DIR}}/lib/cmake/tigervnc \ | ||
| -Dqtermwidget6_DIR=${{env.INSTALL_DIR}}/lib/cmake/qtermwidget6 \ | ||
| -DINSTALL_QTERMWIDGET=ON \ | ||
| -DQt6Keychain_DIR=${{env.INSTALL_DIR}}/lib/cmake/Qt6Keychain \ | ||
| -DINSTALL_QTKEYCHAIN=ON \ | ||
| -DQFtpServerLib_DIR=${{env.INSTALL_DIR}}/lib/cmake/QFtpServerLib \ | ||
| -DINSTALL_QFtpServer=ON \ | ||
| -DRABBIT_ENABLE_INSTALL_TARGETS=ON | ||
| cmake --build . --parallel $(nproc) --verbose --config ${{matrix.BUILD_TYPE}} --target all | ||
| APK_FILE=`find . -name "android-*.apk"` | ||
| cp $APK_FILE RabbitRemoteControl_${{env.RabbitRemoteControl_VERSION}}_${{matrix.qt_arch}}_qt${{matrix.qt_version}}_${{matrix.BUILD_TYPE}}.apk | ||
| - name: Build RabbitRemoteControl with cmake preset | ||
| if: ${{ startsWith(github.ref, 'refs/heads/develop') }} | ||
| working-directory: ${{github.workspace}} | ||
| env: | ||
| # See: https://doc.qt.io/qt-6/cmake-variable-qt-android-sign-apk.html | ||
| RabbitCommon_ROOT: ${{env.SOURCE_DIR}}/RabbitCommon | ||
| QT_ANDROID_KEYSTORE_PATH: ${{env.SOURCE_DIR}}/RabbitCommon/RabbitCommon.keystore | ||
| QT_ANDROID_KEYSTORE_ALIAS: rabbitcommon | ||
| QT_ANDROID_KEYSTORE_STORE_PASS: ${{secrets.STOREPASS}} | ||
| run: | | ||
| export QT_ROOT=${{env.QT_ROOT_DIR}} | ||
| cmake --preset "android-${{env.ANDROID_ABI}}-qt6" \ | ||
| -DQT_HOST_PATH=${QT_ROOT_DIR}/../gcc_64 \ | ||
| -DQT_ANDROID_SIGN_APK=ON \ | ||
| -DENABLE_UPDATE_TRANSLATIONS=ON \ | ||
| -DQt6LinguistTools_DIR=${QT_ROOT_DIR}/../gcc_64/lib/cmake/Qt6LinguistTools \ | ||
| -DBUILD_LibVNCServer=OFF \ | ||
| -DLibVNCServer_DIR="${{env.INSTALL_DIR}}/lib/cmake/LibVNCServer" \ | ||
| -Dtigervnc_DIR=${{env.INSTALL_DIR}}/lib/cmake/tigervnc \ | ||
| -Dqtermwidget6_DIR=${{env.INSTALL_DIR}}/lib/cmake/qtermwidget6 \ | ||
| -DINSTALL_QTERMWIDGET=ON \ | ||
| -DQt6Keychain_DIR=${{env.INSTALL_DIR}}/lib/cmake/Qt6Keychain \ | ||
| -DINSTALL_QTKEYCHAIN=ON \ | ||
| -DQFtpServerLib_DIR=${{env.INSTALL_DIR}}/lib/cmake/QFtpServerLib \ | ||
| -DINSTALL_QFtpServer=ON \ | ||
| -DRABBIT_ENABLE_INSTALL_TARGETS=ON | ||
| cmake --build --preset "android-${{env.ANDROID_ABI}}-qt6" | ||
| - name: Update configure file | ||
| working-directory: ${{github.workspace}}/build | ||
| run: | | ||
| ${{env.SOURCE_DIR}}/RabbitCommon/Install/GenerateJsonFile.sh \ | ||
| update_${{matrix.qt_arch}}_${{matrix.qt_version}}.json \ | ||
| RabbitRemoteControl_${{env.RabbitRemoteControl_VERSION}}_${{matrix.qt_arch}}_qt${{matrix.qt_version}}_${{matrix.BUILD_TYPE}}.apk \ | ||
| android ${{matrix.ANDROID_ABI}} \ | ||
| "https://github.com/KangLin/RabbitRemoteControl/releases/download/${{env.RabbitRemoteControl_VERSION}}/RabbitRemoteControl_${{env.RabbitRemoteControl_VERSION}}_${{matrix.qt_arch}}_qt${{matrix.qt_version}}_${{matrix.BUILD_TYPE}}.apk,https://master.dl.sourceforge.net/project/rabbitremotecontrol/${{env.RabbitRemoteControl_VERSION}}/RabbitRemoteControl_${{env.RabbitRemoteControl_VERSION}}_${{matrix.qt_arch}}_qt${{matrix.qt_version}}_${{matrix.BUILD_TYPE}}.apk?viasf=1" | ||
| - name: Update artifact | ||
| if: ${{ matrix.BUILD_TYPE == 'Release' }} | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: ${{ env.artifact_name }}_${{matrix.qt_version}}_${{matrix.qt_arch}} | ||
| path: | | ||
| ${{github.workspace}}/build/RabbitRemoteControl_${{env.RabbitRemoteControl_VERSION}}_${{matrix.qt_arch}}_qt${{matrix.qt_version}}_${{matrix.BUILD_TYPE}}.apk | ||
| ${{github.workspace}}/build/update_${{matrix.qt_arch}}_${{matrix.qt_version}}.json | ||