【MQTT(3)】开发一个客户端,QT-Android安卓手机版本
创始人
2024-12-27 10:38:12
0

手机版本更加方便

生成安卓库

参考了这个代码

在编译Mosquitto以支持安卓平台时,主要涉及到使用Android NDK(Native Development Kit)进行交叉编译。环境的准备参考之前的博客【QT开发(17)】2023-QT 5.14.2实现Android开发

在这里插入图片描述
下载Mosquitto, https://github.com/eclipse/mosquitto.git

2. 编写或准备编译脚本

对于Mosquitto的编译,可能需要编写一个CMake或Makefile脚本来配置编译选项,以支持Android平台。这通常包括指定Android的目标架构(如armeabi-v7a、arm64-v8a等)、API级别、工具链等。

例如,可以创建一个名为mosquitto_android_cmake.sh的脚本,内容大致如下(注意:以下脚本仅为示例,具体参数需根据实际情况调整):

#!/bin/bash CURRENT_DIR=$(dirname $(readlink -f $0)) rm -rf ./build mkdir -p build ANDROID_ABI="armeabi-v7a" ANDROID_NDK="/var/files/yanyixiong/android-ndk-r21e" cmake \     -DANDROID_NDK=${ANDROID_NDK} \     -DANDROID_ABI=${ANDROID_ABI} \     -DANDROID_NATIVE_API_LEVEL=21 \     -DANDROID_TOOLCHAIN_NAME="arm-linux-androideabi-4.9" \     -DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK}/build/cmake/android.toolchain.cmake" \     -DWITH_TLS=OFF \     -DWITH_THREADING=OFF \     -H. -B./build cd build cmake --build . cd .. 
cmake -DANDROID_NDK=/var/files/yanyixiong/android-ndk-r21e \   -DANDROID_ABI="armeabi-v7a" \   -DCMAKE_TOOLCHAIN_FILE="/var/files/yanyixiong/android-ndk-r21e/build/cmake/android.toolchain.cmake"  \    -DWITH_TLS=OFF \     -DWITH_THREADING=OFF \      -DCMAKE_C_FLAGS='-fPIC' \       .. 

问题来了

目前来说,不支持ndk21版本

ndk 10版本

git clone https://github.com/eclipse/mosquitto.git cd mosquitto mkdir _build_android cd _build_android cmake -DANDROID_NDK=/opt/android-ndk/android-ndk-r10e -DANDROID_ABI="armeabi-v7a" -DANDROID_NDK_HOST_X64="YES"  -DANDROID_TOOLCHAIN_NAME="arm-linux-androideabi-4.9" -DCMAKE_TOOLCHAIN_FILE="/opt/android-ndk/build/cmake/android.toolchain.cmake" -DWITH_TLS=OFF -DWITH_THREADING=OFF -DCMAKE_C_FLAGS='-fPIC' .. 

ndk-r8e

参考

#!/bin/bash # Script used to cmake and then make mosquitto for android on MacOSX with android-ndk-r8e and a patched mosquitto source. # Update paths below and run it from inside the root mosquitto dir (right in the one you clone from hg)  # Used patched mosquitto from: https://bitbucket.org/andreasjk/mosquitto # Used NDK: http://dl.google.com/android/ndk/android-ndk-r8e-darwin-x86_64.tar.bz2 # Used cmake toolchain file from https://github.com/Itseez/opencv/blob/master/android/android.toolchain.cmake  # Threading has to be disabled since android doesn't support it fully # Also disabled TLS since I couldn't get cmake to find the openssl lib properly CURRENT_DIR=$(dirname $(readlink -f $0)) ANDROID_ABI="armeabi-v7a" rm -rf mosquitto/build mkdir -p mosquitto/build cd mosquitto/build cmake \    -DANDROID_NDK=${ANDROID_NDK} \    -DANDROID_ABI=${ANDROID_ABI} \    -DANDROID_NDK_HOST_X64="YES" \    -DANDROID_NATIVE_API_LEVEL=19 \    -DANDROID_TOOLCHAIN_NAME="arm-linux-androideabi-4.9" \    -DCMAKE_TOOLCHAIN_FILE="${CURRENT_DIR}/android-cmake/android.toolchain.cmake" \    -DOPENSSL_LIBRARIES="${CURRENT_DIR}/openssl/arch-${ANDROID_ABI}/lib" \    -DOPENSSL_INCLUDE_DIR="${CURRENT_DIR}/openssl/sources/include" \    -DWITH_TLS=ON \    -DWITH_THREADING=OFF .. echo "Start building android ..." make echo "Output file `pwd`" cd .. 

r16b

If you want to use mosquitto on Android platforms, then you should use Android NDK to cross-compile the source for Android platforms.

Before start compiling, you should download Android NDK from Google official website. In addition, you should make sure that the version of cmake on your device is above 3.6.0. We suggest you use linux to do the following things.

Firstly, edit {SOURCE_DIR}/CMakeLists.txt and add following commands:

add_compile_options(-fPIE) add_compile_options(-fPIC) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pie") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pie") 

after

add_definitions (-DCMAKE -DVERSION=\"${VERSION}\") 

Secondly, enter the source folder({SOURCE_DIR}), and setup the build configure using the command below:

cmake -DANDROID_NDK=/home/sususweet/android_things/android-ndk-r16b -DANDROID_ABI="armeabi-v7a" -DANDROID_NDK_HOST_X64="YES"  -DANDROID_TOOLCHAIN_NAME="arm-linux-androideabi-4.9" -DCMAKE_TOOLCHAIN_FILE="/home/sususweet/android_things/android-ndk-r16b/build/cmake/android.toolchain.cmake" -DWITH_TLS=OFF -DWITH_THREADING=OFF -H. -B./build 

Then go into build folder:

cd build 

Use cmake to compile the source code:

cmake --build . 

Then you can find built mosquitto in {SOURCE_DIR}/build folder.

5.14.4 必须是ndk20,没法编译

在这里插入图片描述在这里插入图片描述

如果想继续,就必须变更版本。就此作罢,写个笔记避避坑

相关内容

热门资讯

科普!炸金花房卡链接到哪里买,... 微信游戏中心:炸金花房卡,添加微信【8488009】,进入游戏中心或相关小程序,搜索“微信炸金花房卡...
终于发现!炸金花微信链接房卡,... 微信游戏中心:炸金花房卡,添加微信【71319951】,进入游戏中心或相关小程序,搜索“微信炸金花房...
秒懂教程“微信金花房卡链接使用... 众乐大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房卡...
科普!微信里玩金花房卡链接在哪... 微信游戏中心:牌九房卡,添加微信【55051770】,进入游戏中心或相关小程序,搜索“微信牌九房卡”...
科普!创建微信链接炸金花房卡,... 微信游戏中心:炸金花房卡,添加微信【33903369】,进入游戏中心或相关小程序,搜索“微信炸金花房...
秒懂教程“微信金花链接房卡平台... 九酷大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来...
终于发现!微信拼三张房卡如何购... 微信游戏中心:拼三张房卡,添加微信【56001354】,进入游戏中心或相关小程序,搜索“微信拼三张房...
科普!微信炸金花房卡怎么开房间... 微信游戏中心:拼三张房卡,添加微信【8488009】,进入游戏中心或相关小程序,搜索“微信拼三张房卡...
开牛牛群怎么买房卡/有没有炸金... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:15984933许多玩家在游戏中会购买房卡来享受...
终于发现!在哪里买斗牛微信房卡... 微信游戏中心:斗牛房卡,添加微信【66336574】,进入游戏中心或相关小程序,搜索“微信斗牛房卡”...
科普!微信里玩链接炸金花房卡怎... 微信游戏中心:炸金花房卡,添加微信【55051770】,进入游戏中心或相关小程序,搜索“微信炸金花房...
房卡必备教程“怎样创建微信金花... 新漫游牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:160470940许多玩家在游戏中会购买房...
终于发现!微信里面炸金花房卡哪... 微信游戏中心:炸金花房卡,添加微信【71319951】,进入游戏中心或相关小程序,搜索“微信炸金花房...
科普!怎么开金花创建房间房卡,... 微信游戏中心:牛牛房卡,添加微信【33903369】,进入游戏中心或相关小程序,搜索“微信牛牛房卡”...
ia实测“炸金花房卡链接在哪弄... 大圣大厅是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来...
终于发现!拼三张房卡从哪买的,... 微信游戏中心:拼三张房卡,添加微信【56001354】,进入游戏中心或相关小程序,搜索“微信拼三张房...
科普!微信炸金花怎么卖房卡,微... 微信游戏中心:炸金花房卡,添加微信【8488009】,进入游戏中心或相关小程序,搜索“微信炸金花房卡...
科普!微信炸金花房卡购买步骤,... 微信游戏中心:拼三张房卡,添加微信【55051770】,进入游戏中心或相关小程序,搜索“微信拼三张房...
微信链接金花牛牛透视挂点控/炸... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:44346008许多玩家在游戏中会购买房卡来享受...
终于发现!微信玩炸金花怎么买房... 微信游戏中心:炸金花房卡,添加微信【66336574】,进入游戏中心或相关小程序,搜索“微信炸金花房...