5

Android4.1デバイスにiwワイヤレスパッケージをインストールする必要があります。しかし、インストールするために必要なパッケージのバージョンと方法がわかりません!!

また、これを行うにはLinuxプラットフォームが必要ですか、それともandroidroot化デバイスのadbシェルにビルドしてインストールするだけで十分です。

このリンクが表示されますが、adbターミナルから実行すると、gitと一部のシェルが見つかりません??? どうやってするの ?

誰にもわからないようです??

4

1 に答える 1

1

iw バージョン 3.11 (すでに Android.mk ファイルが含まれています) をビルドしているときに、ヘッダーとライブラリが見つからないか間違っているため、いくつかの問題が発生しました。Android.mk ファイルがあるため、NDK を使用できます。

以下では、次のことを前提としています。

  • デバイス イメージが以前にビルドされている (少なくともカーネル ヘッダーと libnl-2 スタティック ライブラリが利用可能である必要があります)。i9300 用に CyanogenMod 10 (カーネル 3.0.something を使用) をビルドしました。それを反映するように以下のパスを更新します。
  • NDK は にインストールされ~/android/system/ndkます。
  • NDK には、適切なプラットフォームとツールチェーンがインストールされています。

iw-3.11.tar.xzディレクトリを抽出して変更した後の準備:

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

次の問題は 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.

android/system/out/target/product/i9300/obj/KERNEL_OBJ/usr/include/linux他のヘッダーへのリンクを作成するだけで、次のようなエラーが発生します。

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を適用して、netlink ライブラリへのリンクを完了します。

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 が見つからないため完了しませんが、iw バイナリは libs/armeabi にあります!

于 2013-10-23T13:45:46.893 に答える