编译成so共享库后,在android系统中启动失败?

nanomq编译成so库,引入android项目,并使用JNA调用broker_start函数启动失败,APP崩溃退出,broker_start函数的参数需要怎么传递?在android系统使用有什么需要注意的吗? :pray:

若使用broker_start, 需要传如命令行启动参数,这实际上是命令行启动nanomq的入口,譬如最简单的
命令行使用nanomq start启动,传参为(2, [0][/path_to_nanomq][1][start])(int argc, char **argv),argv是个二维数组,携带所有命令行输入。

so启动更建议使用 broker_start_with_conf(void *conf), 指定一个nanomq_conf对象即可,或直接设置为NULL,以默认配置启动。

我看有人已经做成功了 Android系统之nanomq集成_nanomq android-CSDN博客

非常感谢,目前在Android中启动成功了。
还有一个问题,我在编译过程中有个错误:


目前我是把源码注释之后编译的:
image
不知道是源码BUG还是其他原因?

不是bug , 这个的定义在src/supplemental/nanolib/hocon.h
本地和CI都无此错误

我是通过Android NDK的工具链进行编译的,编译时不添加-DBUILD_SHARED_LIBS=ON是可以正常编译的,添加这个参数后编译就出现上面的异常,命令如下:
cmake -DCMAKE_TOOLCHAIN_FILE=D:\Android\Sdk\ndk\26.2.11394342\build\cmake\android.toolchain.cmake -DANDROID_ABI=“arm64-v8a” -DANDROID_NDK=D:\Android\Sdk\ndk\26.2.11394342 -DCMAKE_GENERATOR=“Ninja” -DCMAKE_MAKE_PROGRAM=D:\Android\Sdk\cmake\3.22.1\bin\ninja.exe -DANDROID_PLATFORM=android-29 -DBUILD_SHARED_LIBS=ON …
能否指导下这个问题需要怎么解决?对HTTP API模块没有使用需求的情况下,注释掉相关代码编译是否会影响其他功能?

不会影响的,但很奇怪为啥你的工具链会找不到定义。。。。

好的,这个问题对我的影响不大 :grin:
现在又出现了一个新问题,使用MQTT over TCP桥接到EMQX,nanomq刚启动时成功连接到emqx,如果一直没有消息,几分钟后总是会断开连接,也不会重连
日志如下:

桥接配置如下:
bridges.mqtt.emqx {
server = “mqtt-tcp://192.168.1.3:1883”
proto_ver = 4
clientid=“bridge_BED8A4571BCF”
keepalive = 60s
clean_start = true
username = digit
password = heysung

## Properties for MQTT V5
conn_properties = {
	maximum_packet_size = 1024
	receive_maximum = 65535
	topic_alias_maximum = 0
	request_problem_infomation = 1
	request_response_infomation = 0
	session_expiry_interval = 0
}

forwards = [
	{
		remote_topic = "b/a"
		local_topic = "a/b"
	},
	{
		remote_topic = "b1/a1"
		local_topic = "a1/b1"
	}
]

subscription = [
	{
		remote_topic = "c/a"
		local_topic = "a/c"
		qos = 1
	}
]

max_parallel_processes = 2
max_send_queue_len = 1024
max_recv_queue_len = 1024

}
这个可能是什么因素导致的?