Au cours des derniers jours, j'ai eu de la difficulté à créer avahi dans une bibliothèque statique ou partagée à utiliser avec un projet Android NDK existant.Problèmes de compilation d'avahi dans le projet Android NDK
Nous avons quelques jeux dans les boutiques App et Play et ma tâche est de faire fonctionner le multijoueur dans les versions Android. Concrètement, la tâche consiste à remplacer le composant Bonjour afin que ces jeux puissent se connecter via zeroconf. La recherche a semblé indiquer qu'avahi est le lib que nous cherchons, mais à ce point je suis ouvert à tout ce qui fonctionnera! Je souhaite que quelqu'un ici puisse m'aider à obtenir la compilation d'avahi ou suggérer une lib plus appropriée (et plus facile à installer).
projet utilise Android NDK-R8b et est en cours de construction sur Mac OS X 10.7.4 en ligne de commande (éclipse pas)
Got la dernière source de Avahi d'ici: http://www.linuxfromscratch.org/blfs/view/svn/basicnet/avahi.html
Homebrewed tous les libs nécessaires obtenir ./configure pour s'exécuter sans erreurs.
./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 fonctionne sans indicateurs rouges apparents.
font de ce erreur de compilation:
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
Figured que ce n'est pas la construction contre les libs android-NDK-R8b ou de trouver ipv6.h ou quelque chose.
vérifié mon fichier .bash_profile.sh:
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
ajouté --host = arm-linux-androideabi aux arguments ./configure liste résultant de cette erreur:
checking host system type... Invalid configuration `arm-linux-androideabi': system `androideabi' not recognized
Couldn Ne pas comprendre comment obtenir une liste des types de systèmes hôte disponibles ainsi changé de direction et a décidé d'essayer de construire la lib statique via le fichier Android.mk.
trouvé ce post sur la création d'un fichier Android.mk approprié: can't compile avahi on android
réalisais que je n'ai pas les fichiers Android.mk au sein de tous les sous-répertoires.
Recherche, téléchargé, construit, Androgenizer pour essayer et convertir tous les fichiers Makefile.am en fichiers Android.mk. http://cgit.collabora.com/git/user/derek/androgenizer.git/
Impossible de savoir ou trouver des informations sur la façon de le faire si =/
avons décidé d'essayer et créer mon propre fichier Android.mk:
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)
Résultats des erreurs de temps de compilation pour 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':
Et maintenant je suis bloqué.
J'ai essayé #if de sortir les fichiers iface-linux.c et h résultant en une série d'autres erreurs, donc une mauvaise idée.
Vous pensez que c'est peut-être quelque chose que j'ai mal fait avec la commande ./configure? Peut-être un problème avec mon fichier Android.mk? Je pense que cela doit être quelque chose que beaucoup de développeurs ont à faire, donc il me manque probablement quelque chose parce que je n'arrive pas à trouver de bonnes informations via google.
Toute aide serait grandement appréciée! Je l'ai aussi envoyé à la liste de diffusion avhi, si je reçois une réponse, je posterai ici pour la postérité.
Merci, Chris