使用Android.mk编译gloox库

由于项目需要,用了gloox库,但是gloox官网没有很详细的编译的makefile文件,所以花了点时间,使用Android.mk来编译。

首先大部分的编译脚本是https://github.com/rxwen/gloox/blob/master/Android.mk这个提供的。

我是在他的基础上进行编译,出了问题进行一些修改,下面的是在本机上试验通过的。

如果使用如下编译有std::string赋值问题的话,可以参考https://blog.csdn.net/u011803341/article/details/99977138

使用的是gloox最新版1.0.22

NDK  r10e 

macOS 10.14.5

首先需要在gloox_1.0.22文件夹内建一个jni文件夹,里面包含两个文件Android.mk和Application.mk两个文件。文件放置好之后,在jni文件夹目录下执行ndk-build指令,就可以编译出libgloox.so库了。

对于Android.mk的改动主要是:

1.   LOCAL_SRC_FILES:=\  ./src/disco.cpp \ 改为LOCAL_SRC_FILES:=\  ../src/disco.cpp \也就是多了一个"."。

2.添加了LOCAL_LDLIBS += -lz(需要用到libz这个库)

3.修改了
LOCAL_C_INCLUDES += \
  $(LOCAL_PATH)/.. \
    $(LOCAL_PATH)/../src \
    $(LOCAL_PATH)/src 

主要是这三个修改。

然后如果编译时出现dns.cpp文件中res_querydomain函数找不到的问题,可以先把#if defined( HAVE_RES_QUERYDOMAIN ) && defined( HAVE_DN_SKIPNAME ) && defined( HAVE_RES_QUERY )的宏定义改为#if 0也就是先不定义这个函数,让库先边处理来,问题后面处理。

Android.mk文件

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)

LOCAL_SRC_FILES:=\
	../src/disco.cpp \
	../src/gpgencrypted.cpp \
	../src/privacymanager.cpp \
	../src/gloox.cpp \
	../src/iodata.cpp \
	../src/connectiontcpbase.cpp \
	../src/connectionbosh.cpp \
	../src/attention.cpp \
	../src/gpgsigned.cpp \
	../src/stanza.cpp \
	../src/tlsgnutlsclient.cpp \
	../src/mucroom.cpp \
	../src/tlsopensslbase.cpp \
	../src/messageeventfilter.cpp \
	../src/dataformfield.cpp \
	../src/base64.cpp \
	../src/siprofileft.cpp \
	../src/util.cpp \
	../src/tlsschannel.cpp \
	../src/subscription.cpp \
	../src/tlsopensslclient.cpp \
	../src/instantmucroom.cpp \
	../src/receipt.cpp \
	../src/registration.cpp \
	../src/tlsopensslserver.cpp \
	../src/iq.cpp \
	../src/connectionsocks5proxy.cpp \
	../src/pubsubitem.cpp \
	../src/vcard.cpp \
	../src/xhtmlim.cpp \
	../src/tlsgnutlsbase.cpp \
	../src/jinglesession.cpp \
	../src/stanzaextensionfactory.cpp \
	../src/connectiontcpclient.cpp \
	../src/capabilities.cpp \
	../src/logsink.cpp \
	../src/tlsgnutlsserveranon.cpp \
	../src/connectiontlsserver.cpp \
	../src/socks5bytestreamserver.cpp \
	../src/error.cpp \
	../src/pubsubevent.cpp \
	../src/nonsaslauth.cpp \
	../src/rostermanager.cpp \
	../src/clientbase.cpp \
	../src/privacyitem.cpp \
	../src/mucinvitationhandler.cpp \
	../src/simanager.cpp \
	../src/inbandbytestream.cpp \
	../src/dns.cpp \
	../src/connectiontls.cpp \
	../src/compressiondefault.cpp \
	../src/connectionhttpproxy.cpp \
	../src/annotations.cpp \
	../src/carbons.cpp \
	../src/jingleiceudp.cpp \
	../src/delayeddelivery.cpp \
	../src/connectiontcpserver.cpp \
	../src/mutex.cpp \
	../src/chatstate.cpp \
	../src/uniquemucroom.cpp \
	../src/jinglepluginfactory.cpp \
	../src/vcardupdate.cpp \
	../src/dataformfieldcontainer.cpp \
	../src/socks5bytestreammanager.cpp \
	../src/jid.cpp \
	../src/socks5bytestream.cpp \
	../src/prep.cpp \
	../src/sha.cpp \
	../src/tag.cpp \
	../src/lastactivity.cpp \
	../src/client.cpp \
	../src/flexoff.cpp \
	../src/jinglefiletransfer.cpp \
	../src/bookmarkstorage.cpp \
	../src/amp.cpp \
	../src/atomicrefcount.cpp \
	../src/component.cpp \
	../src/pubsubmanager.cpp \
	../src/md5.cpp \
	../src/rosteritem.cpp \
	../src/oob.cpp \
	../src/search.cpp \
	../src/dataform.cpp \
	../src/forward.cpp \
	../src/presence.cpp \
	../src/chatstatefilter.cpp \
	../src/messageevent.cpp \
	../src/vcardmanager.cpp \
	../src/tlsdefault.cpp \
	../src/dataformitem.cpp \
	../src/compressionzlib.cpp \
	../src/nickname.cpp \
	../src/messagefilter.cpp \
	../src/tlsgnutlsclientanon.cpp \
	../src/softwareversion.cpp \
	../src/privatexml.cpp \
	../src/mucmessagesession.cpp \
	../src/linklocalclient.cpp \
	../src/shim.cpp \
	../src/linklocalmanager.cpp \
	../src/message.cpp \
	../src/jinglesessionmanager.cpp \
	../src/adhoc.cpp \
	../src/messagesession.cpp \
	../src/parser.cpp \
	../src/featureneg.cpp \
	../src/dataformreported.cpp \
	../src/jinglecontent.cpp \
	../src/eventdispatcher.cpp
	
LOCAL_LDLIBS += -lz

LOCAL_CFLAGS := -O2 -g -D__ANDROID__
#LOCAL_CFLAGS += -DHAVE_CONFIG_H -D_U_="__attribute__((unused))"

LOCAL_C_INCLUDES += \
  $(LOCAL_PATH)/.. \
	$(LOCAL_PATH)/../src \
	$(LOCAL_PATH)/src 

ifneq ($(TARGET_SIMULATOR),true)
LOCAL_C_INCLUDES += bionic		# very important!
LOCAL_C_INCLUDES += external/stlport/stlport 
LOCAL_SHARED_LIBRARIES += libstlport libdl libz
endif

LOCAL_MODULE_TAGS := eng

LOCAL_MODULE := libgloox

include $(BUILD_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_SRC_FILES:=\
	./src/examples/register_example.cpp 

LOCAL_SHARED_LIBRARIES += libgloox
LOCAL_MODULE := register_example

ifneq ($(TARGET_SIMULATOR),true)
LOCAL_C_INCLUDES += bionic		# very important!
LOCAL_C_INCLUDES += external/stlport/stlport 
LOCAL_SHARED_LIBRARIES += libstlport libdl
endif

include $(BUILD_EXECUTABLE)

Application.mk

#NDK_TOOLCHAIN_VERSION = 4.9 r13->default: clang  #stlport_static gnustl_static
APP_STL := gnustl_static
APP_ABI := armeabi
APP_CPPFLAGS +=-fpermissive -frtti
APP_CPPFLAGS +=-std=c++11
APP_PLATFORM := android-9
#NDK_TOOLCHAIN_VERSION=4.9

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值