Probleme beim Kompilieren von Avahi in Android NDK-Projekt

In den letzten Tagen hatte ich Schwierigkeiten, Avahi in eine statische oder gemeinsam genutzte Bibliothek für ein vorhandenes Android NDK-Projekt zu integrieren.

Wir haben ein paar Spiele in den App- und Play-Stores und meine Aufgabe ist es, Multiplayer in den Android-Versionen zum Laufen zu bringen. Insbesondere besteht die Aufgabe darin, die Bonjour-Komponente auszutauschen, damit diese Spiele über zeroconf miteinander verbunden werden können.

Nachforschungen haben ergeben, dass Avahi die Bibliothek ist, nach der wir suchen, aber an diesem Punkt bin ich offen für alles, was funktionieren wird!

Ich hoffe, dass jemand hier mir entweder helfen kann, Avahi zu kompilieren, oder eine andere geeignetere (und einfacher zu installierende) Bibliothek vorschlagen kann.

Das Projekt verwendet android-ndk-r8b und wird unter OSX 10.7.4 über die Befehlszeile (nicht Eclipse) erstellt.

Erhalten Sie die neueste Avahi-Quelle von hier:http://www.linuxfromscratch.org/blfs/view/svn/basicnet/avahi.html

Homebrewed alle notwendigen Bibliotheken, um ./configure ohne Fehler ausführen zu können.

./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-static --disable-mono --disable-monodoc  --disable-gdbm --disable-libdaemon --disable-nls --disable-gtk --disable-gtk3 --disable-python --disable-qt3 --disable-qt4 --enable-core-docs --with-distro=none

./configure wird ohne erkennbare rote Fahnen ausgeführt.

Führen Sie zu folgendem Kompilierungsfehler:

socket.c: In function 'ipv6_pktinfo':
socket.c:271: warning: unused variable 'yes' [-Wunused-variable]
socket.c:270: warning: unused parameter 'fd' [-Wunused-parameter]
socket.c: In function 'avahi_send_dns_packet_ipv6':
socket.c:609: error: 'IPV6_PKTINFO' undeclared (first use in this function)
socket.c:609: error: (Each undeclared identifier is reported only once
socket.c:609: error: for each function it appears in.)
socket.c: In function 'avahi_recv_dns_packet_ipv6':
socket.c:869: error: 'IPV6_HOPLIMIT' undeclared (first use in this function)
socket.c:878: error: 'IPV6_PKTINFO' undeclared (first use in this function)
make[2]: *** [libavahi_core_la-socket.lo] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Stellte fest, dass es nicht gegen die android-ndk-r8b-Bibliotheken oder gegen das Auffinden von ipv6.h oder etwas baut.

Überprüfte meine .bash_profile.sh Datei:

export PATH=/Users/Muy01/Projects/Development/Android/android-sdks/tools/:$PATH
export PATH=/Users/Muy01/Projects/Development/Android/android-sdks/platform-tools/:$PATH
export PATH=/Users/Muy01/Projects/Development/Android/android-ndk-r8b/:$PATH

--host = arm-linux-androideabi zur Liste der ./configure-Argumente hinzugefügt, was zu folgendem Fehler führt:

checking host system type... Invalid configuration `arm-linux-androideabi': system `androideabi' not recognized

Konnte nicht herausfinden, wie man eine Liste der verfügbaren Hostsystemtypen erhält, also änderte die Richtung und entschied sich, die statische Bibliothek über die Android.mk-Datei zu erstellen.

Diesen Beitrag beim Erstellen einer geeigneten Android.mk-Datei gefunden:Ich kann Avahi auf Android nicht kompilieren

Es wurde festgestellt, dass ich nicht in allen Unterverzeichnissen Android.mk-Dateien habe.

Untersucht, heruntergeladen, gebaut, Androgenizer, um zu versuchen, alle Makefile.am-Dateien in Android.mk-Dateien zu konvertieren.http://cgit.collabora.com/git/user/derek/androgenizer.git/

Konnte nicht herausfinden oder Informationen darüber finden, wie das geht = /

Beschlossen, meine eigene Android.mk-Datei zu erstellen:

LOCAL_PATH := $(call my-dir)
ROOT_LOCAL_PATH :=$(call my-dir)

#Build avahi into a static lib
include $(CLEAR_VARS)
AVAHI_TOP := $(ROOT_LOCAL_PATH)/../avahi-0.6.31

MY_SOURCES := $(wildcard $(AVAHI_TOP)/avahi-core/*.c*)
MY_SOURCES += $(wildcard $(AVAHI_TOP)/avahi-common/*.c*)
LOCAL_C_INCLUDES := $(AVAHI_TOP)
LOCAL_SRC_FILES := $(MY_SOURCES:$(LOCAL_PATH)%=%)

LOCAL_MODULE    := avahi

include $(BUILD_STATIC_LIBRARY)

Ergebnisse bei der Kompilierung von Fehlern für avahi-core / iface-linux.c: 33: 0:

/avahi-0.6.31/avahi-core/iface-linux.h:27:8: Redefinition of 'struct AvahiInterfaceMonitorOSDep'
/avahi-0.6.31/avahi-core/iface.h:46:16: Originally defined here
/avahi-0.6.31/avahi-core/iface-linux.h:33:9: Redeclaration of enumerator 'LIST_IFACE'
/avahi-0.6.31/avahi-core/iface.h:52:9: Previous definition of 'LIST_IFACE' was here
/avahi-0.6.31/avahi-core/iface-linux.h:34:9: Redeclaration of enumerator 'LIST_ADDR'
/avahi-0.6.31/avahi-core/iface.h:53:9: Previous definition of 'LIST_ADDR' was here
/avahi-0.6.31/avahi-core/iface-linux.h:35:9: Redeclaration of enumerator 'LIST_DONE'
/avahi-0.6.31/avahi-core/iface.h:54:9: Previous definition of 'LIST_DONE' was here
/jni//../avahi-0.6.31/avahi-core/iface-linux.c: In function 'netlink_callback':

Und jetzt stecke ich ziemlich fest.

Ich habe versucht, die Dateien "iface-linux.c" und "h" auszublenden, was zu einer Reihe weiterer Fehler führte. Eine schlechte Idee also.

Denken Sie, dass ich mit dem Befehl ./configure möglicherweise etwas falsch gemacht habe? Vielleicht ein Problem mit meiner Android.mk-Datei?

Ich denke, das muss etwas sein, womit sich einige Entwickler befassen, also vermisse ich wahrscheinlich etwas, weil ich keine guten Informationen über Google zu finden scheine.

Jede Hilfe wäre sehr dankbar! Ich habe dies auch an die Avhi-Mailingliste geschickt. Wenn ich dort eine Antwort bekomme, werde ich hier für die Nachwelt posten.

Danke, Chris

Antworten auf die Frage(2)

Ihre Antwort auf die Frage