-
Notifications
You must be signed in to change notification settings - Fork 5
Home
marsupilami79 edited this page Mar 7, 2022
·
5 revisions
Welcome to the mdns4Delphi wiki!
Here is just some information for firther development. Nothing interesting really...
- https://andriydruk.com/post/mdnsresponder/ -> let me know that it seems to be possible to have a native mdns library for Android.
- https://www.man7.org/linux/man-pages/man2/select.2.html -> Waiting for libmndssd sockets to become ready to read
- https://marknelson.us/posts/2011/10/25/dns-service-discovery-on-windows.html -> notes on working with Apples libraries - which also made it into Android
- https://android.googlesource.com/platform/external/mdnsresponder/+/cb6190f6a568e960d5fe9a80def42ecfab13b528/mDNSShared/dns_sd.h -> code of dns_sd.h
- https://linux.die.net/man/3/dlopen -> unsig dlopen and friends and getting error messages about why things don't work out
- libmdnssd.so and libc++.so cannot be loaded directly in Android because they are not regarded a public API by the android dynamic linker. But they can be copied and used then. liblog.so, which is also a dependency of libmdnssd.so is part of the public API. Google wants us to delivber our own versions of libraris that are not regarded part of the public API. But does that make sense in the case of libmdnssd.so? How do we know that the interface to the demon hasn't changed? Also building the libraries correctly seems to be a PITA. For the stable API thing see: https://developer.android.com/ndk/guides/stable_apis, https://developer.android.com/about/versions/nougat/android-7.0-changes.html#ndk
Building libmdnssd can be done as a part of an (partial) Android build. I didn't get it to build with the NDK easily. The machine used for this should have about 24GB of memory and 200 GB of free disk space. Basically one has to do the following (according to the google documentaion on building android over at https://source.android.com/setup/start?hl=en
- Install some basic development packages
- install the repo tool
- initilize some version of Android
- run some form of
repo sync - run
. ./build/envsetup.sh - run
lunchand select a proper architecture cd external/libmdnsresponder- run
mmto build the responder including its library and all dependencies. This takes a while...