Skip to content

Server: modify log #1866

Server: modify log

Server: modify log #1866

Workflow file for this run

name: android
on: [push]
jobs:
use_install_qt:
name: use install qt android_${{matrix.os}}-qt${{matrix.qt_version}}-${{matrix.VCPKG_TARGET_TRIPLET}}-${{matrix.BUILD_TYPE}}
strategy:
matrix:
BUILD_TYPE: [Release]
ANDROID_ABI: [armeabi-v7a, x86]
ANDROID_PLATFORM: [android-28]
os: [Ubuntu-20.04]
qt_version: [6.2.4]
include:
- VCPKG_TARGET_TRIPLET: arm-android
qt_version: 6.2.4
qt_arch: android_armv7
ANDROID_ABI: armeabi-v7a
qt_modules: 'qtscxml qtmultimedia qtwebview qtimageformats'
runs-on: ${{ matrix.os }}
env:
SOURCE_DIR: ${{github.workspace}}/.cache/source
TOOSL_DIR: ${{github.workspace}}/.cache/tools
INSTALL_DIR: ${{github.workspace}}/.cache/install_anrdoi_qt${{matrix.qt_version}}_${{matrix.qt_arch}}_${{matrix.BUILD_TYPE}}
RabbitRemoteControl_VERSION: v0.0.25
VCPKGGITCOMMITID: 6adca01a3fadca0cc0b80f03ec57c7c3a0be5c02
qt_modules: '${{matrix.qt_modules}}'
steps:
- uses: actions/checkout@v3
with:
submodules: true
- uses: snickerbockers/submodules-init@v4
- name: make directory
run: |
cmake -E make_directory ${{env.SOURCE_DIR}}
cmake -E make_directory ${{env.TOOSL_DIR}}
cmake -E make_directory ${{env.INSTALL_DIR}}
- name: Cache Qt
id: cache-qt
uses: actions/cache@v1 # not v2!
with:
path: ${{env.TOOSL_DIR}}/qt
key: qt_${{matrix.qt_version}}_${{matrix.qt_arch}}
- name: Install Qt
# You may pin to the exact commit or the version.
# uses: jurplel/install-qt-action@a962fb91949c8e846a3e4a944d50e7ef5cc3a28a
uses: jurplel/install-qt-action@v3
with:
# Directory to install Qt
dir: '${{env.TOOSL_DIR}}/qt' # optional
# Version of Qt to install
version: '${{matrix.qt_version}}' # optional, default is 5.15.2
# Host platform
#host: linux # optional
# Target platform for build
target: 'android' # optional, default is desktop
# Architecture for Windows/Android
arch: '${{matrix.qt_arch}}' # optional
# Whether or not to install Qt dependencies on Linux
#install-deps: true # optional, default is true
# Additional Qt modules to install
modules: '${{env.qt_modules}}' # optional
# Force a Qt mirror in case the default is not working
#mirror: # optional
# Whether or not to actually download Qt
cached: '${{ steps.cache-qt.outputs.cache-hit }}' # optional, default is false
# Whether or not to automatically run setup-python to find a valid python version.
#setup-python: false # optional, default is true
# Qt tools to download--specify comma-separated argument lists which are themselves separated by spaces: <tool_name>,<tool_version>,<tool_arch>
#tools: # optional
# Whether or not to actually install Qt or just the tools from the tools argument
#tools-only: false # optional, default is false
# Version of aqtinstall to use in case of issues
#aqtversion: # optional, default is ==0.10.0
# Version of py7zr to use in case of issues
#py7zrversion: # optional, default is ==0.11.0
# Any extra arguments to append to the back
#extra: # optional
- name: run-vcpkg
uses: lukka/run-vcpkg@v7.4
with:
# Indicates whether to only setup vcpkg (i.e. installing it and setting the environment variables VCPKG_ROOT, RUNVCPK_VCPKG_ROOT), without installing any port.
#setupOnly: # optional
#vcpkgGitURL: https://github.com/KangLin/vcpkg.git
vcpkgGitCommitId: ${{env.VCPKGGITCOMMITID}}
vcpkgDirectory: ${{ runner.workspace }}/vcpkg/
# Since the cache must be invalidated when content of the vcpkg.json file changes, let's
# compute its hash and append this to the computed cache's key.
appendedCacheKey: android_${{matrix.os}}-qt${{matrix.qt_version}}-${{matrix.VCPKG_TARGET_TRIPLET}}-${{matrix.BUILD_TYPE}}-${{env.VCPKGGITCOMMITID}}
additionalCachedPaths: $VCPKG_ROOT/installed
vcpkgTriplet: '${{ matrix.VCPKG_TARGET_TRIPLET }}'
vcpkgArguments: 'zlib openssl libpng libjpeg-turbo libdatachannel'
- name: Cache installed
uses: actions/cache@v2
id: cache-installed
with:
path: |
${{env.INSTALL_DIR}}
key: cache-installed-android
- name: Build libvncserver
working-directory: ${{env.SOURCE_DIR}}
run: |
if [ ! -d ${{env.INSTALL_DIR}}/lib/cmake/LibVNCServer ]; then
git clone https://github.com/KangLin/libvncserver.git
cd libvncserver
#git checkout -b 5deb43e2837e05e5e24bd2bfb458ae6ba930bdaa 5deb43e2837e05e5e24bd2bfb458ae6ba930bdaa
cmake -E make_directory build
cd build
cmake .. \
-DWITH_OPENSSL=ON -DWITH_GCRYPT=OFF \
-DBUILD_TESTS=OFF -DBUILD_EXAMPLES=OFF \
-DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} \
-DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} \
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${{matrix.ANDROID_ABI}} \
-DANDROID_PLATFORM=${{matrix.ANDROID_PLATFORM}}
cmake --build . --config ${{ matrix.BUILD_TYPE }}
cmake --build . --config ${{ matrix.BUILD_TYPE }} --target install/strip
fi
# - name: build FreeRDP
# working-directory: ${{env.SOURCE_DIR}}
# run: |
# if [ ! -d ${{env.INSTALL_DIR}}/lib/cmake/FreeRDP2 ]; then
# git clone -b 2.5.0 https://github.com/FreeRDP/FreeRDP.git
# cd FreeRDP
# git submodule update --init --recursive
# cmake -E make_directory build
# cd build
# cmake .. \
# -DOpenSSL_ROOT_DIR=${{env.RUNVCPKG_VCPKG_ROOT}}/installed/${{env.RUNVCPKG_VCPKG_TRIPLET_OUT}} \
# -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \
# -DCMAKE_INSTALL_PREFIX="${{env.INSTALL_DIR}}" \
# -DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \
# -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
# -DANDROID_ABI=${{matrix.ANDROID_ABI}} \
# -DANDROID_PLATFORM=${{matrix.ANDROID_PLATFORM}}
# cmake --build . --config ${{matrix.BUILD_TYPE}}
# cmake --build . --config ${{matrix.BUILD_TYPE}} --target install/strip
# fi
# - name: build tigervnc
# working-directory: ${{env.SOURCE_DIR}}
# run: |
# if [ ! -d ${{env.INSTALL_DIR}}/lib/cmake/tigervnc ]; then
# git clone https://github.com/KangLin/tigervnc.git
# cd ${{env.SOURCE_DIR}}/tigervnc
# cmake -E make_directory build
# cd build
# cmake .. \
# -DBUILD_TESTS=OFF -DBUILD_VIEWER=OFF \
# -DCMAKE_BUILD_TYPE=${{ matrix.BUILD_TYPE }} \
# -DCMAKE_INSTALL_PREFIX="${{ env.INSTALL_DIR }}" \
# -DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \
# -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
# -DANDROID_ABI=${{matrix.ANDROID_ABI}} \
# -DANDROID_PLATFORM=${{matrix.ANDROID_PLATFORM}}
# cmake --build . --config ${{ matrix.BUILD_TYPE }}
# cmake --build . --config ${{ matrix.BUILD_TYPE }} --target install/strip
# fi
- name: build log4qt
working-directory: ${{env.SOURCE_DIR}}
env:
QT_ROOT: ${{env.Qt5_Dir}}
run: |
if [ ! -d ${{env.INSTALL_DIR}}/lib/cmake/Log4Qt ]; then
git clone -b v1.5.1 "https://github.com/MEONMedical/Log4Qt.git"
cd Log4Qt
cmake -E make_directory build
cd build
cmake .. -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \
-DLOG4QT_ENABLE_EXAMPLES=OFF \
-DLOG4QT_ENABLE_TESTS=OFF \
-DQt5_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5 \
-DQt5Core_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Core \
-DQt5Network_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Network \
-DQt5Concurrent_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Concurrent \
-DQt5Test_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Test \
-DCMAKE_INSTALL_PREFIX=${{env.INSTALL_DIR}} \
-DCMAKE_PREFIX_PATH=${{env.QT_ROOT}} \
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${{matrix.ANDROID_ABI}} \
-DANDROID_PLATFORM=${{matrix.ANDROID_PLATFORM}}
cmake --build . --config ${{matrix.BUILD_TYPE}}
cmake --build . --config ${{matrix.BUILD_TYPE}} --target install/strip
fi
- name: build qxmpp
working-directory: ${{env.SOURCE_DIR}}
env:
QT_ROOT: ${{env.Qt5_Dir}}
run: |
if [ ! -d ${{env.INSTALL_DIR}}/lib/cmake/qxmpp ]; then
git clone -b v1.2.1 "https://github.com/qxmpp-project/qxmpp.git"
cd qxmpp
cmake -E make_directory build
cd build
cmake .. -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF \
-DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \
-DQt5_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5 \
-DQt5Core_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Core \
-DQt5Gui_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Gui \
-DQt5Test_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Test \
-DQt5Xml_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Xml \
-DQt5Network_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Network \
-DCMAKE_INSTALL_PREFIX=${{env.INSTALL_DIR}} \
-DCMAKE_PREFIX_PATH=${{env.QT_ROOT}} \
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${{matrix.ANDROID_ABI}} \
-DANDROID_PLATFORM=${{matrix.ANDROID_PLATFORM}}
cmake --build . --config ${{matrix.BUILD_TYPE}}
cmake --build . --config ${{matrix.BUILD_TYPE}} --target install/strip
fi
- name: git clone RabbitCommon
working-directory: ${{env.SOURCE_DIR}}
run: git clone https://github.com/KangLin/RabbitCommon.git
- name: build RabbitRemoteControl
env:
RabbitCommon_DIR: ${{env.SOURCE_DIR}}/RabbitCommon
QT_ROOT: ${{env.Qt5_Dir}}
STOREPASS: ${{secrets.STOREPASS}}
run: |
cmake -E make_directory ${{github.workspace}}/build
cd ${{github.workspace}}/build
cmake ${{github.workspace}} \
-DCMARK_SHARED=OFF \
-DCMARK_TESTS=OFF \
-DCMARK_STATIC=ON \
-DBUILD_FREERDP=ON \
-DLog4Qt_DIR=${{env.INSTALL_DIR}}/lib/cmake/Log4Qt \
-DLibVNCServer_DIR="${{env.INSTALL_DIR}}/lib/cmake/LibVNCServer" \
-Dtigervnc_DIR=${{env.INSTALL_DIR}}/lib/cmake \
-DQXmpp_DIR=${{env.INSTALL_DIR}}/lib/cmake/qxmpp \
-DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \
-DQT_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5 \
-DQt5_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5 \
-DQt5Core_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Core \
-DQt5Gui_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Gui \
-DQt5Widgets_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Widgets \
-DQt5Xml_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Xml \
-DQt5Sql_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Sql \
-DQt5Positioning_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Positioning \
-DQt5Network_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Network \
-DQt5Multimedia_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Multimedia \
-DQt5LinguistTools_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5LinguistTools \
-DQt5Qml_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Qml \
-DQt5Quick_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Quick \
-DQt5QuickWidgets_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5QuickWidgets \
-DQt5AndroidExtras_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5AndroidExtras \
-DQt5Concurrent_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Concurrent \
-DQt5Test_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Test \
-DQt5WebEngineWidgets_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5WebEngineWidgets \
-DCMAKE_INSTALL_PREFIX=${{env.INSTALL_DIR}} \
-DCMAKE_PREFIX_PATH="${{env.QT_ROOT}}:${{env.INSTALL_DIR}}" \
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${{matrix.ANDROID_ABI}} \
-DANDROID_PLATFORM=${{matrix.ANDROID_PLATFORM}}
cmake --build . --config ${{ matrix.BUILD_TYPE }}
cmake --build . --config ${{ matrix.BUILD_TYPE }} --target install-runtime
cmake --build . --config ${{ matrix.BUILD_TYPE }} --target APK
- name: Package
if: ${{matrix.BUILD_TYPE == 'Release'}}
working-directory: ${{env.INSTALL_DIR}}
env:
QT_ROOT: ${{env.Qt5_Dir}}
RabbitCommon_DIR: ${{env.SOURCE_DIR}}/RabbitCommon
run: |
APK_FILE=`find . -name "install-release-signed.apk"`
APK_NAME=RabbitRemoteControl_${{matrix.ANDROID_ABI}}_${RabbitRemoteControl_VERSION}.apk
mv -f ${APK_FILE} ${APK_NAME}
APK_FILE=${APK_NAME}
cp ${{github.workspace}}/Update/update_android.xml .
md5sum ${APK_FILE} > ${APK_FILE}.md5
MD5=`cat ${APK_FILE}.md5 | awk '{print $1}'`
echo "MD5:${MD5}"
sed -i "s/<VERSION>.*</<VERSION>${RabbitRemoteControl_VERSION}</g" update_android.xml
sed -i "s/<INFO>.*</<INFO>Release rabbit remote control ${RabbitRemoteControl_VERSION}</g" update_android.xml
sed -i "s/<TIME>.*</<TIME>`date`</g" update_android.xml
sed -i "s/<ARCHITECTURE>.*</<ARCHITECTURE>${BUILD_ARCH}</g" update_android.xml
sed -i "s/<MD5SUM>.*</<MD5SUM>${MD5}</g" update_android.xml
sed -i "s/<FILENAME>.*</<FILENAME>${APK_NAME}</g" update_android.xml
sed -i "s:<URL>.*<:<URL>https\://github.com/KangLin/RabbitRemoteControl/releases/download/${RabbitRemoteControl_VERSION}/${APK_NAME}<:g" update_android.xml
sed -i "s/<MIN_UPDATE_VERSION>.*</<MIN_UPDATE_VERSION>${RabbitRemoteControl_VERSION}</g" update_android.xml
- name: update
if: ${{ matrix.BUILD_TYPE == 'Release' }}
uses: actions/upload-artifact@v2
with:
name: RabbitRemoteControl_Android_${{matrix.ANDROID_ABI}}_${{env.RabbitRemoteControl_VERSION}}
path: |
${{env.INSTALL_DIR}}/RabbitRemoteControl_${{matrix.ANDROID_ABI}}_${{env.RabbitRemoteControl_VERSION}}.apk
- name: Upload To Github Release
if: ${{matrix.ANDROID_ABI=='armeabi-v7a' && matrix.BUILD_TYPE == 'Release' && startsWith(github.ref, 'refs/tags/') }}
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
prerelease: true
# body: |
# [:cn: 修改日志](ChangeLog_zh_CN.md) [:cn: 说明](README_zh_CN.md)
# [:us: Change log](ChangeLog.md) [:us: README](README.md)
files: |
${{env.INSTALL_DIR}}/RabbitRemoteControl_${{matrix.ANDROID_ABI}}_${{env.RabbitRemoteControl_VERSION}}.apk
${{env.INSTALL_DIR}}/RabbitRemoteControl_${{matrix.ANDROID_ABI}}_${{env.RabbitRemoteControl_VERSION}}.apk.md5
${{env.INSTALL_DIR}}/update_android.xml