Skip to content

Fix typo

Fix typo #56

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
TOOLS_DIR: ${{github.workspace}}/.cache/tools
BUILD_DIR: ${{github.workspace}}/build
INSTALL_DIR: ${{github.workspace}}/.cache/install_anrdoi_qt${{matrix.qt_version}}_${{matrix.qt_arch}}_${{matrix.BUILD_TYPE}}
RabbitIM_VERSION: v0.0.25
VCPKGGITCOMMITID: 4c5ae6b55f3e3e39d291679f89822f496cf190ee
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.TOOLS_DIR}}
cmake -E make_directory ${{env.INSTALL_DIR}}
cmake -E make_directory ${{env.BUILD_DIR}}
- name: Cache Qt
id: cache-qt
uses: actions/cache@v1 # not v2!
with:
path: ${{env.TOOLS_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.TOOLS_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 qxmpp
working-directory: ${{env.SOURCE_DIR}}
env:
QT_ROOT: ${{env.Qt6_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}} \
-DQt6_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6 \
-DQt6Core_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6Core \
-DQt6Gui_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6Gui \
-DQt6Test_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6Test \
-DQt6Xml_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6Xml \
-DQt6Network_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6Network \
-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 RabbitIM
env:
RabbitCommon_DIR: ${{env.SOURCE_DIR}}/RabbitCommon
QT_ROOT: ${{env.Qt6_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 \
-DQXmpp_DIR=${{env.INSTALL_DIR}}/lib/cmake/qxmpp \
-DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \
-DQT_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6 \
-DQt6_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6 \
-DQt6Core_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6Core \
-DQt6Gui_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6Gui \
-DQt6Widgets_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6Widgets \
-DQt6Xml_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6Xml \
-DQt6Sql_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6Sql \
-DQt6Positioning_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6Positioning \
-DQt6Network_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6Network \
-DQt6Multimedia_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6Multimedia \
-DQt6LinguistTools_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6LinguistTools \
-DQt6Qml_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6Qml \
-DQt6Quick_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6Quick \
-DQt6QuickWidgets_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6QuickWidgets \
-DQt6AndroidExtras_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6AndroidExtras \
-DQt6Concurrent_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6Concurrent \
-DQt6Test_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6Test \
-DQt6WebEngineWidgets_DIR=${{env.QT_ROOT}}/lib/cmake/Qt6WebEngineWidgets \
-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.Qt6_Dir}}
RabbitCommon_DIR: ${{env.SOURCE_DIR}}/RabbitCommon
run: |
APK_FILE=`find . -name "install-release-signed.apk"`
APK_NAME=RabbitIM_${{matrix.ANDROID_ABI}}_${RabbitIM_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>${RabbitIM_VERSION}</g" update_android.xml
sed -i "s/<INFO>.*</<INFO>Release rabbit remote control ${RabbitIM_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/RabbitIM/releases/download/${RabbitIM_VERSION}/${APK_NAME}<:g" update_android.xml
sed -i "s/<MIN_UPDATE_VERSION>.*</<MIN_UPDATE_VERSION>${RabbitIM_VERSION}</g" update_android.xml
- name: update
if: ${{ matrix.BUILD_TYPE == 'Release' }}
uses: actions/upload-artifact@v2
with:
name: RabbitIM_Android_${{matrix.ANDROID_ABI}}_${{env.RabbitIM_VERSION}}
path: |
${{env.INSTALL_DIR}}/RabbitIM_${{matrix.ANDROID_ABI}}_${{env.RabbitIM_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}}/RabbitIM_${{matrix.ANDROID_ABI}}_${{env.RabbitIM_VERSION}}.apk
${{env.INSTALL_DIR}}/RabbitIM_${{matrix.ANDROID_ABI}}_${{env.RabbitIM_VERSION}}.apk.md5
${{env.INSTALL_DIR}}/update_android.xml