我需要在android 4.1设备上安装iw无线包。但我不知道如何以及要安装的软件包的版本是什么!编译并构建android 4.1设备的“iw”?
也是它需要linux平台来做到这一点,或者它是足够建立和安装在adb外壳为android生根装置。
我看到这个 link,但是当我从adb终端做到这一点时,我看到了那个git和一些没有找到的shell?怎么做 ?
好像没人有什么想法?
我需要在android 4.1设备上安装iw无线包。但我不知道如何以及要安装的软件包的版本是什么!编译并构建android 4.1设备的“iw”?
也是它需要linux平台来做到这一点,或者它是足够建立和安装在adb外壳为android生根装置。
我看到这个 link,但是当我从adb终端做到这一点时,我看到了那个git和一些没有找到的shell?怎么做 ?
好像没人有什么想法?
在构建iw 3.11版本(已经有Android.mk文件)的同时,由于丢失/错误的头文件和库,我遇到了一些问题。由于它具有Android.mk文件,因此可以使用NDK。
在下面我将承担如下:
~/android/system/ndk
。ln -s . jni
ln -nsv ~/android/system/external ./
下一个问题就是网络链路库:
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.
只需在创建一个链接到android/system/out/target/product/i9300/obj/KERNEL_OBJ/usr/include/linux
中断其它头严重提取iw-3.11.tar.xz
和改变我的目录之后
准备会出现如下错误:
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
一种解决方法是创建linux
目录,并把一个符号链接~/android/system/out/target/product/i9300/obj/KERNEL_OBJ/usr/include/linux/genetlink.h
它:
mkdir -p linux
ln -svn ~/android/system/out/target/product/i9300/obj/KERNEL_OBJ/usr/include/linux/genetlink.h linux/
最后修补Android.mk
完成连接到网络链路库:
sed "/LOCAL_LDFLAGS/s#\$# -L$HOME/android/system/out/target/product/i9300/obj/STATIC_LIBRARIES/libnl_2_intermediates -lnl_2#" -i Android.mk
现在构建可开始:
NDK_PROJECT_PATH=$PWD ~/android/system/ndk/ndk-build TARGET_PLATFORM=android-14
它不会完成,因为netlink /genl/genl.h找不到,但二进制文件在libs/armeabi中可用!
供需要genetlink.h的任何人使用...无论出于何种原因,对于NDK R10e,它都可以在GNU STL的API级别21版本下使用。我使用的是API级别17版本,所以我只是将它从另一个复制到我的安装。 – dadude999 2015-09-18 17:40:55
你在那个页面上试过二进制文件吗?如果你想从设备本身进行编译,它会变得更加困难。当然,默认情况下并未安装git。 – kabuko 2013-03-11 20:25:29
@kabuko你是什么意思的二进制?也如果我试图让Ubuntu的终端上工作,我需要安装android sdk,但如果我只编译它在Ubuntu机器上的设备如何支持此功能android sdk? – Hana90 2013-03-11 20:29:19