2013-03-11 4 views
5

Ich muss iw Wireless-Pakete auf Android 4.1-Gerät installieren. aber ich weiß nicht, wie und was ist die erforderliche Version der Pakete zu installieren!kompilieren und bauen "iw" für Android 4.1 Gerät?

ist es auch Linux-Plattform, um dies zu tun, oder es ist genug zu bauen und auf Adb-Shell für Android-Rooting-Gerät zu installieren.

ich sehe dies aber wenn ich es von AdB-Terminal mache ich sehe, dass Git und einige Shells nicht gefunden ??? wie es geht ?

es scheint niemand hat eine Idee ??

+0

Haben Sie die Binärdatei auf dieser Seite getestet? Wenn Sie es vom Gerät selbst kompilieren wollen, wird es viel schwieriger. Natürlich ist Git nicht standardmäßig installiert. – kabuko

+0

@kabuko was meinst du mit binary? Auch wenn ich versuche, ubuntu auf seinem terminal zu arbeiten ich muss android sdk installieren, aber wie wird das gerät diese funktion unterstützen, wenn ich es nur auf dem ubuntu-maschine für kompilieren Android SDK ? – Hana90

Antwort

1

Beim Erstellen von iw Version 3.11 (die bereits eine Android.mk Datei hat), stieß ich auf einige Probleme aufgrund fehlender/falscher Header und Bibliotheken. Da es eine Android.mk-Datei hat, kann das NDK verwendet werden.

Im Folgenden werde ich folgendes annehmen:

  • Vorrichtung Bild vor gebaut wurde (die Kernel-Header und libnl-2 statische Bibliothek mindestens verfügbar sein sollte). Ich habe CyanogenMod 10 (mit Kernel 3.0.etwas) für den i9300 gebaut, aktualisieren Sie die Pfade unten, um das zu reflektieren.
  • Der NDK wird unter ~/android/system/ndk installiert.
  • Das NDK verfügt über geeignete Plattformen und Toolchains.

Vorbereitung nach iw-3.11.tar.xz Extrahieren und die Änderung meines Verzeichnisses in ihm:

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 zu den android/system/out/target/product/i9300/obj/KERNEL_OBJ/usr/include/linux brechen andere Header schlecht Erstellen was zu Fehlern 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 
führt

Eine Abhilfe ist das linux Verzeichnis und legen Sie einen symbolischen Link zu ~/android/system/out/target/product/i9300/obj/KERNEL_OBJ/usr/include/linux/genetlink.h darin zu erstellen:

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

Schließlich Android.mk Patch zu beenden Anbindung an die 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 ist die gebaut werden kann gestartet:

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

Es wird nicht abgeschlossen, da netlink /genl/genl.h kann nicht gefunden werden, aber die iw Binärdatei ist in libs/armeabi verfügbar!

+0

FYI für alle, die gentlink.h benötigen ... aus welchem ​​Grund auch immer, ab NDK R10e ist es nur unter der API-Level-21-Version der GNU STL verfügbar.Ich habe die Version der API-Version 17 verwendet, also habe ich sie einfach von der anderen auf meine Installation kopiert. – dadude999

Verwandte Themen