/ / kompilieren und bauen Sie "iw" für Android 4.1-Geräte? - android, linux, linux-kernel, android-wifi, android-wireless

kompilieren und bauen "iw" für Android 4.1 Gerät? - Android, Linux, Linux-Kernel, Android-Wi-Fi, Android-Wireless

Ich muss iw wireless-Pakete auf dem Android 4.1-Gerät installieren. aber ich weiß nicht wie und welche Version der Pakete benötigt wird, um installiert zu werden !!

es ist auch eine Linux-Plattform erforderlich, um dies zu tun, oder es ist ausreichend, um eine Adb-Shell für Android-Rooting-Geräte zu erstellen und zu installieren.

ich sehe es Verknüpfung aber wenn ich es von adb terminal mache, sehe ich diesen git und einige muscheln nicht gefunden ??? wie es geht ?

es scheint, dass niemand eine Ahnung hat?

Antworten:

1 für die Antwort № 1

Beim Erstellen der iw-Version 3.11 (die bereits eine Android.mk-Datei enthält) bin ich auf einige Probleme gestoßen, die auf fehlende / falsche Header und Bibliotheken zurückzuführen sind. Da es eine Android.mk-Datei hat, kann das NDK verwendet werden.

Im Folgenden werde ich Folgendes annehmen:

  • Ein Geräte-Image wurde zuvor erstellt (der Kernel)Header und libnl-2 statische Bibliothek sollten mindestens verfügbar sein). Ich habe CyanogenMod 10 (mit Kernel 3.0.something) für den i9300 gebaut.
  • Das NDK ist auf installiert ~/android/system/ndk.
  • Im NDK sind entsprechende Plattformen und Toolchains installiert.

Vorbereitung nach dem Extrahieren iw-3.11.tar.xz und mein Verzeichnis darin ändern:

ln -s . jni
ln -nsv ~/android/system/external ./

Die nächste Ausgabe ist die netlink-Bibliothek:

In file included from external/libnl-headers/netlink/genl/genl.h:15:0,
from /tmp/and/iw/jni/iw.c:17:
external/libnl-headers/netlink/netlink.h:27:29: fatal error: linux/genetlink.h: No such file or directory.

Einfach einen Link zum erstellen android/system/out/target/product/i9300/obj/KERNEL_OBJ/usr/include/linux bricht andere Header, was zu Fehlern führt wie:

Compile thumb  : iw <= iw.c
In file included from /home/user/android/system/ndk/platforms/android-14/arch-arm/usr/include/net/if.h:28:0,
from /tmp/and/iw/jni/iw.c:10:
/tmp/and/iw/jni/linux/if.h:178:19: error: field "ifru_addr" has incomplete type
/tmp/and/iw/jni/linux/if.h:179:19: error: field "ifru_dstaddr" has incomplete type
/tmp/and/iw/jni/linux/if.h:180:19: error: field "ifru_broadaddr" has incomplete type
/tmp/and/iw/jni/linux/if.h:181:19: error: field "ifru_netmask" has incomplete type
/tmp/and/iw/jni/linux/if.h:182:20: error: field "ifru_hwaddr" has incomplete type
In file included from external/libnl-headers/netlink/netlink.h:20:0,
from external/libnl-headers/netlink/genl/genl.h:15,
from /tmp/and/iw/jni/iw.c:17:
/home/user/android/system/ndk/platforms/android-14/arch-arm/usr/include/sys/socket.h:74:44: warning: "struct msghdr" declared inside parameter list [enabled by default]
/home/user/android/system/ndk/platforms/android-14/arch-arm/usr/include/sys/socket.h:74:44: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
/home/user/android/system/ndk/platforms/android-14/arch-arm/usr/include/sys/socket.h:75:38: warning: "struct msghdr" declared inside parameter list [enabled by default]
In file included from external/libnl-headers/netlink/netlink.h:25:0,
from external/libnl-headers/netlink/genl/genl.h:15,
from /tmp/and/iw/jni/iw.c:17:
/tmp/and/iw/jni/linux/netlink.h:33:2: error: unknown type name "sa_family_t"
In file included from external/libnl-headers/netlink/genl/genl.h:15:0,
from /tmp/and/iw/jni/iw.c:17:
external/libnl-headers/netlink/netlink.h:51:16: warning: "struct msghdr" declared inside parameter list [enabled by default]
external/libnl-headers/netlink/netlink.h:54:19: warning: "struct iovec" declared inside parameter list [enabled by default]
make: *** [/tmp/and/iw/obj/local/armeabi/objs/iw/iw.o] Error 1

Eine Problemumgehung besteht darin, die linux Verzeichnis und setzen Sie einen Symlink zu ~/android/system/out/target/product/i9300/obj/KERNEL_OBJ/usr/include/linux/genetlink.h drin:

mkdir -p linux
ln -svn ~/android/system/out/target/product/i9300/obj/KERNEL_OBJ/usr/include/linux/genetlink.h linux/

Zum Schluss noch Patch Android.mk So beenden Sie die Verknüpfung mit der netlink-Bibliothek:

sed "/LOCAL_LDFLAGS/s#$# -L$HOME/android/system/out/target/product/i9300/obj/STATIC_LIBRARIES/libnl_2_intermediates -lnl_2#" -i Android.mk

Nun kann der Build gestartet werden:

NDK_PROJECT_PATH=$PWD ~/android/system/ndk/ndk-build TARGET_PLATFORM=android-14

Es wird nicht abgeschlossen, da netlink / genl / genl.h nicht gefunden werden kann, sondern der iw binär ist in libs / armeabi verfügbar!