libusb 加入到 Android
来源:互联网 发布:ubuntu 上网命令 编辑:程序博客网 时间:2024/06/05 11:32
1. 首先要把 usbfs 文件系统编入内核
1) 进入到 Android 源码根目录下 kernel 子目录: $cd kernel 2) 再配置 config(用的是 arch/arm/configs/omap3_beagle_android_defconfig): $make ARCH=arm omap3_evm_android_defconfig $make menuconfig 选中 Device Drivers->USB support->Support for Host-side USB->USB device filesystem(DEPRECATED) 3) 编译内核: $export PATH=<android sources>/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:$PATH $make ARCH=arm CROSS_COMPILE=arm-eabi- uImage –j2(参见 ConfigureAndBuild rowboat - Configure and Build -.pdf) 4) 在 init.rc 脚本中的 on boot 下加入 mount usbfs none /proc/bus/usb -o devmode=0666: on boot # basic network init ifup lo hostname localhost domainname localdomain setprop net.dns1 10.51.2.40 # mount usb file system mount usbfs none /proc/bus/usb -o devmode=0666
2. 编译 libusb 库
1) 下载 libusb 源码 http://libusb.org/wiki/Libusb1.0。我选用的是 libusb-1.0.3 版本。 2) 因为用 ndk-build 来编译 libusb,所以新建一个文件夹比如叫 libusb-1.0.3,再把 1 步 下载的源码文件放到新建的文件夹下并把 1 步下载的文件重新命名为 jni。 3) 在 libusb-1.0.3/jni 下新建一个 Android.mk,其内容如下:
LOCAL_PATH := $(call my-dir) subdirs := $(addprefix $(LOCAL_PATH)/,$(addsuffix /Android.mk, \ libusb \ )) include $(subdirs)
4) 在libusb-1.0.3/jni/libusb下新一个Android.mk,其内容如下: LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS)
LOCAL_PRELINK_MODULE := false LOCAL_SRC_FILES:= \ core.c \ descriptor.c \ io.c \ sync.c \ os/linux_usbfs.c LOCAL_C_INCLUDES += \ ./ \ ./os\ ../
LOCAL_MODULE:= libusb include $(BUILD_SHARED_LIBRARY) 5) 现在进行编译话的会出现io.c:1003: error: undefined reference to ‘TIMESPEC_TO_TIMEVAL’类似的错误,可以在libusb-1.0.3/jni/libusb下的io.c中宏定义 TIMESPEC_TO_TIMEVAL解决:
#define TIMESPEC_TO_TIMEVAL(tv, ts) do { (tv)->tv_sec = (ts)->tv_sec; (tv)->tv_usec = (ts)->tv_nsec / 1000; } while (0) \ \ \ \
6) 编译libusb: $cd libusb-1.0.3/jni $ndk-build (可以参见用ndk编译c程序.pdf) 如果成功可以看到如下结果:
7) 把生成的libusb.so复制到SD卡上的Android文件系统中/system/lib下。 (注意,在复制 前要确保libusb.so是各个用户下都可运行, 如果不用chmod修改, 这样方便在Android 各种模式下能调用)
3. 验证 libusb 在 Android 中可用
1) 把 libusb 源码中 examples 目录下的 lsusb.c 复制到一个新建的目录下, 比如 lsusb/jni 下。 2) 在 lsusb/jni 下建一个 Android.mk,其内容如下:
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= lsusb.c LOCAL_MODULE := lsusb LOCAL_C_INCLUDES += /home/shishunzhong/android_development/android-ndk-r7/samples/libusb-1.0.3/jni/ LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -lusb LOCAL_SHARED_LIBRARIES := libc libusb include $(BUILD_EXECUTABLE)
(注意:LOCAL_LDLIBS 是告诉编译器我们自已用到的 libusb.so 动态库到哪去加载, 这里我把之前生成的 libusb.so 复制到 ndk-build 所调用的交叉编译的工具链库 SYSROOT 下的 usr/lib 目录下了。 如果不知道 SYSROOT 在哪里可以用$ndk-build -B V=1 命令,会让 ndk-build “揭露出”整个工具链的不同使用过程,其输出有这样一句 --sysroot=/home/shishunzhong/android_development/android_ndk-r7/platforms/andr oid-3/arch-arm;LOCAL_C_INCLUDES 是指.h 头文件到哪加载,我把它设成 libusb 源 码目录) 3) 编译: $cd lsusb/jni
$ndk-build 4) 把生成的可执行程序 lsusb 复制到 SD 卡上的 Android 文件系统中/system/bin 目录下, 并运行(注意复制前 lsusb 文件的权限) ,如果成功说明一切成切了。
1) 进入到 Android 源码根目录下 kernel 子目录: $cd kernel 2) 再配置 config(用的是 arch/arm/configs/omap3_beagle_android_defconfig): $make ARCH=arm omap3_evm_android_defconfig $make menuconfig 选中 Device Drivers->USB support->Support for Host-side USB->USB device filesystem(DEPRECATED) 3) 编译内核: $export PATH=<android sources>/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:$PATH $make ARCH=arm CROSS_COMPILE=arm-eabi- uImage –j2(参见 ConfigureAndBuild rowboat - Configure and Build -.pdf) 4) 在 init.rc 脚本中的 on boot 下加入 mount usbfs none /proc/bus/usb -o devmode=0666: on boot # basic network init ifup lo hostname localhost domainname localdomain setprop net.dns1 10.51.2.40 # mount usb file system mount usbfs none /proc/bus/usb -o devmode=0666
2. 编译 libusb 库
1) 下载 libusb 源码 http://libusb.org/wiki/Libusb1.0。我选用的是 libusb-1.0.3 版本。 2) 因为用 ndk-build 来编译 libusb,所以新建一个文件夹比如叫 libusb-1.0.3,再把 1 步 下载的源码文件放到新建的文件夹下并把 1 步下载的文件重新命名为 jni。 3) 在 libusb-1.0.3/jni 下新建一个 Android.mk,其内容如下:
LOCAL_PATH := $(call my-dir) subdirs := $(addprefix $(LOCAL_PATH)/,$(addsuffix /Android.mk, \ libusb \ )) include $(subdirs)
4) 在libusb-1.0.3/jni/libusb下新一个Android.mk,其内容如下: LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS)
LOCAL_PRELINK_MODULE := false LOCAL_SRC_FILES:= \ core.c \ descriptor.c \ io.c \ sync.c \ os/linux_usbfs.c LOCAL_C_INCLUDES += \ ./ \ ./os\ ../
LOCAL_MODULE:= libusb include $(BUILD_SHARED_LIBRARY) 5) 现在进行编译话的会出现io.c:1003: error: undefined reference to ‘TIMESPEC_TO_TIMEVAL’类似的错误,可以在libusb-1.0.3/jni/libusb下的io.c中宏定义 TIMESPEC_TO_TIMEVAL解决:
#define TIMESPEC_TO_TIMEVAL(tv, ts) do { (tv)->tv_sec = (ts)->tv_sec; (tv)->tv_usec = (ts)->tv_nsec / 1000; } while (0) \ \ \ \
6) 编译libusb: $cd libusb-1.0.3/jni $ndk-build (可以参见用ndk编译c程序.pdf) 如果成功可以看到如下结果:
7) 把生成的libusb.so复制到SD卡上的Android文件系统中/system/lib下。 (注意,在复制 前要确保libusb.so是各个用户下都可运行, 如果不用chmod修改, 这样方便在Android 各种模式下能调用)
3. 验证 libusb 在 Android 中可用
1) 把 libusb 源码中 examples 目录下的 lsusb.c 复制到一个新建的目录下, 比如 lsusb/jni 下。 2) 在 lsusb/jni 下建一个 Android.mk,其内容如下:
LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= lsusb.c LOCAL_MODULE := lsusb LOCAL_C_INCLUDES += /home/shishunzhong/android_development/android-ndk-r7/samples/libusb-1.0.3/jni/ LOCAL_LDLIBS += -L$(SYSROOT)/usr/lib -lusb LOCAL_SHARED_LIBRARIES := libc libusb include $(BUILD_EXECUTABLE)
(注意:LOCAL_LDLIBS 是告诉编译器我们自已用到的 libusb.so 动态库到哪去加载, 这里我把之前生成的 libusb.so 复制到 ndk-build 所调用的交叉编译的工具链库 SYSROOT 下的 usr/lib 目录下了。 如果不知道 SYSROOT 在哪里可以用$ndk-build -B V=1 命令,会让 ndk-build “揭露出”整个工具链的不同使用过程,其输出有这样一句 --sysroot=/home/shishunzhong/android_development/android_ndk-r7/platforms/andr oid-3/arch-arm;LOCAL_C_INCLUDES 是指.h 头文件到哪加载,我把它设成 libusb 源 码目录) 3) 编译: $cd lsusb/jni
$ndk-build 4) 把生成的可执行程序 lsusb 复制到 SD 卡上的 Android 文件系统中/system/bin 目录下, 并运行(注意复制前 lsusb 文件的权限) ,如果成功说明一切成切了。
- libusb 加入到 Android
- 移植 libusb 到 Beagleboard 上的 Android
- 移植libusb到zedboard
- libusb Android 权限问题
- libusb移植到ARM linux
- LIBUSB
- libUSB
- libusb
- libusb
- libusb
- 将unity3d项目加入到 android项目
- Android设备使用libusb和usb声卡
- android 将自己的程序加入到系统调用列表
- Android开发_viewpager作为header加入到listview
- Android解决按钮加入到ListView控件中的点击冲突
- android把自己的应用加入到系统分享中
- Android——将图片加入到系统相册里面
- 移植libusb到mips-linux上(基于jz4780)
- Spring集成Quartz1.8.4版定时任务框架介绍
- Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
- C#中的快捷键,可以更方便的编写代码
- linux内核移植
- springmvc +mybatise 框架的搭建步骤
- libusb 加入到 Android
- svn 常见错误
- Socket异步编程之基于事件
- 【转】设计模式:简单工厂、工厂方法、抽象工厂之小结与区别
- 走马灯效果文字TextView
- 制作SQLHelper类完成登陆注册
- Android系统默认值的设置
- 小产权房买卖合同范本,小产权房买卖合同怎么写?
- aix安装字符集