2013-03-11 22 views
5

Muszę zainstalować pakiety bezprzewodowe w Androidzie 4.1 urządzenia. ale nie wiem jak i jaka jest wymagana wersja pakietów do zainstalowania !!skompilować i zbudować "iw" dla urządzenia z systemem Android 4.1?

również potrzebuje platformy Linux, aby to zrobić, lub wystarczy zbudować i zainstalować na powłoce adb dla urządzenia Android rooting.

Widzę to link, ale kiedy robię to z terminala adb widzę, że git i niektóre powłoki nie znaleziono ??? jak to zrobić ?

wydaje się, że nikt nie ma pojęcia?

+0

Czy wypróbowałeś plik binarny na tej stronie? Jeśli chcesz skompilować go z samego urządzenia, będzie to znacznie trudniejsze. Z pewnością git nie jest instalowany domyślnie. – kabuko

+0

@kabuko co masz na myśli przez binarne? Również jeśli próbuję uzyskać ubuntu do pracy na jego terminalu, muszę zainstalować na nim android sdk, ale w jaki sposób urządzenie będzie obsługiwać tę funkcję, jeśli tylko skompiluję ją na maszynie ubuntu dla android sdk? – Hana90

Odpowiedz

1

Podczas budowy iw wersji 3.11 (która ma już plik Android.mk), napotkałem pewne problemy z powodu brakujących/błędnych nagłówków i bibliotek. Ponieważ ma plik Android.mk, można użyć NDK.

Poniżej będę przyjęto następujące założenia:

  • Urządzenie obraz został zbudowany przed (nagłówki jądra i libnl-2 statyczna biblioteka powinna być przynajmniej dostępna). Zbudowałem CyanogenMod 10 (z jądrem 3.0.something) dla i9300, zaktualizowałem ścieżki poniżej, aby to odzwierciedlić.
  • Urządzenie NDK jest zainstalowane pod numerem ~/android/system/ndk.
  • NDK ma zainstalowane odpowiednie platformy i zestawy narzędzi.

Przygotowanie po ekstrakcji iw-3.11.tar.xz i zmiany mojego katalogu, w tym:

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

Kolejnym problemem jest netlink biblioteka:

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. 

prostu tworząc link do android/system/out/target/product/i9300/obj/KERNEL_OBJ/usr/include/linux przerw innych nagłówków źle co spowoduje błędy, takie jak:

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 

Rozwiązaniem jest stworzenie katalogu linux i umieścić dowiązania do ~/android/system/out/target/product/i9300/obj/KERNEL_OBJ/usr/include/linux/genetlink.h w nim:

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

Wreszcie załatać Android.mk aby zakończyć powiązanie z netlink Biblioteka:

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

Teraz kompilacja może być rozpoczęto:

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

Nie zakończy się, ponieważ netlink /genl/genl.h nie można znaleźć, ale plik binarny iw jest dostępny w libs/armeabi!

+0

FYI dla każdego, kto potrzebuje genetlink.h ... z jakiegokolwiek powodu, jak z NDK R10e, jest on dostępny pod wersją GNU STL na poziomie API 21.Używałem wersji poziomu API 17, więc skopiowałem ją z drugiej do mojej instalacji. – dadude999