2013-03-11 23 views
5

tôi cần cài đặt gói không dây iw trên thiết bị Android 4.1. nhưng tôi không biết làm thế nào và những gì là phiên bản yêu cầu của các gói để cài đặt !!biên dịch và tạo "iw" cho thiết bị Android 4.1?

cũng là cần nền tảng Linux để thực hiện việc này hoặc đủ để xây dựng và cài đặt trên vỏ adb cho thiết bị root của Android.

tôi thấy điều này link nhưng khi tôi làm điều đó từ thiết bị đầu cuối adb tôi thấy git và một số hệ vỏ không tìm thấy ??? làm thế nào để làm nó ?

có vẻ như không ai có ý tưởng gì ??

+0

Bạn đã thử nhị phân trên trang đó chưa? Nếu bạn muốn biên dịch nó từ chính thiết bị, nó sẽ khó hơn rất nhiều. Chắc chắn git không được cài đặt theo mặc định. – kabuko

+0

@kabuko bạn có ý nghĩa gì về nhị phân? Nếu tôi cố gắng ubuntu làm việc trên thiết bị đầu cuối của mình, tôi cần cài đặt sdk android trên thiết bị đó, nhưng thiết bị sẽ hỗ trợ tính năng này như thế nào nếu tôi chỉ biên dịch nó trên máy ubuntu android sdk? – Hana90

Trả lời

1

Trong khi xây dựng iw phiên bản 3.11 (đã có tệp Android.mk), tôi gặp phải một số vấn đề do thiếu/sai tiêu đề và thư viện. Vì nó có tệp Android.mk, NDK có thể được sử dụng.

Trong sau tôi sẽ giả định như sau:

  • Một hình ảnh thiết bị đã được xây dựng trước (kernel header và libnl-2 thư viện tĩnh ít nhất nên có sẵn). Tôi đã xây dựng CyanogenMod 10 (với kernel 3.0.something) cho i9300, cập nhật các đường dẫn bên dưới để phản ánh điều đó.
  • NDK được cài đặt thành ~/android/system/ndk.
  • NDK có các nền tảng và khung công cụ thích hợp được cài đặt.

Chuẩn bị sau khi giải nén iw-3.11.tar.xz và thay đổi thư mục của tôi trong đó:

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

Vấn đề tiếp theo là thư viện netlink:

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. 

Đơn giản chỉ cần tạo ra một liên kết đến android/system/out/target/product/i9300/obj/KERNEL_OBJ/usr/include/linux phá vỡ tiêu đề khác nặng sẽ cung cấp các lỗi như:

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 

Một cách giải quyết là để tạo ra các thư mục linux và đặt một liên kết tượng trưng đến ~/android/system/out/target/product/i9300/obj/KERNEL_OBJ/usr/include/linux/genetlink.h trong đó:

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

Cuối cùng vá Android.mk để kết thúc liên kết đến các thư viện netlink:

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

Bây giờ xây dựng có thể bắt đầu:

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

Nó sẽ không hoàn thành vì netlink /genl/genl.h không thể tìm thấy, nhưng mã nhị phân iw có sẵn trong libs/armeabi!

+0

FYI cho bất kỳ ai cần genetlink.h ... vì bất kỳ lý do gì, như của NDK R10e, đó là onlv có sẵn theo phiên bản API cấp 21 của GNU STL.Tôi đã sử dụng phiên bản API cấp 17, vì vậy tôi chỉ sao chép nó từ một phiên bản khác sang bản cài đặt của tôi. – dadude999