libusb1.0在android内的移植和使用方法
2016-08-18 21:42
711 查看
libusb1.0在android内的移植和使用方法
本文主要讲述的libusb在android下的移植和使用方法,并且在应用的方面可以举一反三
转载著名:http://blog.csdn.net/hubbybob1/article/details/52244999
1.编译
编译安卓版libusb库如下步骤:
A.下载最新的NDK:http://developer.android.com/tools/sdk/ndk/index.html(如果已安装,此步可略)
B.提取NDK
C.打开终端并确保配置好的NDK为全局环境变量
D.进入/libusb/android/jni
E.执行命令ndk-build命令
执行完毕后,libusb库和examples和tests就会在"android/libs/$ARCH"下找到
ARCH代表不同的平台有:armeabi,armeabi-v7a,x86
2.安装
如果你想在你的本地的安卓应用代码中使用libusb库,那么需要添加下面一行到你的Android.mk文件中:
然后需要添加下面两行,来为使用到libusb库的本地的没一个二进制文件编译配置:
如果你想在你的app中使用libusb这个库函数话,要做的步骤如下
A,修改移植libusb_open_fd()函数,其方法可以查看http://blog.csdn.net/hubbybob1/article/details/52101356
B,/libusb-1.0.18/android/jni/libusb.mk 的最后两行修改成:(目的是生成libusb.a j静态库,当然也可以使用BUILD_STHARE_LIBRARY生成liusb.so,已供你的app使用)
D,在/libusb-1.0.18/android/使用命令ndk-build,就会在Android目录下生成object目录,在这个下面就可以找到libusb.a了
在使用ndk-build之后被编译生成的libusb包将会被安卓编译系统编译到你的应用包(APK)内
3.root系统下安装libusb和examples,tests(根据上面1的编辑结果继续,在android系统下安装)
对于已经有root权限的安卓系统而言,libusb是可以被安装到系统下面的。步骤如下:
A.使能ADB,链接到device,即adb devices命令
B .使用以下命令安装libusb
C.安装examples,tests,假设B 为listdevs fxload xusb sam3u_benchmark hotplugtest stress (编译后,这些东西在examples,tests目录下)命令如下:
对于以上的操作可行但是比较麻烦可使用如下方法:
打开终端,输入命令:
D.如果可以使用OTG线去ADB ,也可以通过OTG ADB 去设置网络ADB 或者wifi,去链接设备
4.运行权限
在大部分的安卓设备上默认的系统配置是不允许链接usb设备的,下面操作来解决这个问题。
A.在能改变系统镜像的情况下,可以修改镜像中使用到的ueventd.rc文件,去修改dev/bus/usb/*/*的权限为允许 。使用这种方法建议生成一个新的安卓权限啊去保护这些文件的链接,不建议给所有的应用权限都可以读写这些文件
B.对于已经root的安卓设备,作为root可是使用“su” 命令来执行调用libusb的代码。另一种方法是可以使用 su命令去改变/dev/bus/usb/下文件的权限。
C.用户可以在java层使用android.hardware.usb.UsbManager 去获取 UsbDevice权限,并打开usb设备,这个方法的难点是不能保证在以后的安卓系统版本中可以继续适用,这个牵涉到JAVA APIs,运行的代码使每一个android.hardware.usb.UsbDevice和 libusb_device
本文主要讲述的libusb在android下的移植和使用方法,并且在应用的方面可以举一反三
转载著名:http://blog.csdn.net/hubbybob1/article/details/52244999
1.编译
编译安卓版libusb库如下步骤:
A.下载最新的NDK:http://developer.android.com/tools/sdk/ndk/index.html(如果已安装,此步可略)
B.提取NDK
C.打开终端并确保配置好的NDK为全局环境变量
D.进入/libusb/android/jni
E.执行命令ndk-build命令
执行完毕后,libusb库和examples和tests就会在"android/libs/$ARCH"下找到
ARCH代表不同的平台有:armeabi,armeabi-v7a,x86
2.安装
如果你想在你的本地的安卓应用代码中使用libusb库,那么需要添加下面一行到你的Android.mk文件中:
include $(PATH_TO_LIBUSB_SRC)/android/jni/libusb.mk
然后需要添加下面两行,来为使用到libusb库的本地的没一个二进制文件编译配置:
LOCAL_C_INCLUDES += $(LIBUSB_ROOT_ABS) LOCAL_SHARED_LIBRARIES += libusb1.0
如果你想在你的app中使用libusb这个库函数话,要做的步骤如下
A,修改移植libusb_open_fd()函数,其方法可以查看http://blog.csdn.net/hubbybob1/article/details/52101356
B,/libusb-1.0.18/android/jni/libusb.mk 的最后两行修改成:(目的是生成libusb.a j静态库,当然也可以使用BUILD_STHARE_LIBRARY生成liusb.so,已供你的app使用)
LOCAL_MODULE := libusb include $(BUILD_STATIC_LIBRARY)C,libusb-1.0.18/android/jni 下 android.mk 删除其他的,只留libusb.mk一行,其余的三行删除
D,在/libusb-1.0.18/android/使用命令ndk-build,就会在Android目录下生成object目录,在这个下面就可以找到libusb.a了
在使用ndk-build之后被编译生成的libusb包将会被安卓编译系统编译到你的应用包(APK)内
3.root系统下安装libusb和examples,tests(根据上面1的编辑结果继续,在android系统下安装)
对于已经有root权限的安卓系统而言,libusb是可以被安装到系统下面的。步骤如下:
A.使能ADB,链接到device,即adb devices命令
B .使用以下命令安装libusb
adb shell su -c "mount -o remount,rw /system" //确定系统可写 adb push obj/local/armeabi/libusb1.0.so /sdcard/ //将ndk-build编好的库文件copy到 andriod/系统sdcard/ 下 adb shell su -c "cat > /system/lib/libusb1.0.so < /sdcard/libusb1.0.so" //将 /sdcard 导入到 /system/lib/ 下 rm /sdcard/libusb1.0.so //删除
C.安装examples,tests,假设B 为listdevs fxload xusb sam3u_benchmark hotplugtest stress (编译后,这些东西在examples,tests目录下)命令如下:
adb push "obj/local/armeabi/$B" /sdcard/ adb shell su -c "cat > /system/bin/$B < /sdcard/$B" adb shell su -c "chmod 0755 /system/bin/$B" adb shell rm "/sdcard/$B" adb shell su -c "mount -o remount,ro /system" //是系统只可读 这样就安装好了,可以使用命令 adb shell su -c "listdevs" 来测试了,可以adb shell 进入系统,然后执行listdevs命令也是可以的
对于以上的操作可行但是比较麻烦可使用如下方法:
打开终端,输入命令:
adb remount //可读可写挂在安卓系统 adb push obj/local/armeabi/libusb1.0.so /system/lib/ //将libusb库直接安装到/system/lib/下 adb push "obj/local/armeabi/$B" /system/lib/ //将编译好的相关命令直接安装到system/lib/下 adb shell //进入android系统目录下 chmod 0755 /system/bin/$B //修改相关命令的权限 然后就可以直接执行相关命令了,例如 listdev
D.如果可以使用OTG线去ADB ,也可以通过OTG ADB 去设置网络ADB 或者wifi,去链接设备
adb shell netcfg //通过OTG 查看网络信息 adb tcpip 5555 //设置tcpip端口 adb connect 192.168.1.123:5555 //通过网络链接设备
4.运行权限
在大部分的安卓设备上默认的系统配置是不允许链接usb设备的,下面操作来解决这个问题。
A.在能改变系统镜像的情况下,可以修改镜像中使用到的ueventd.rc文件,去修改dev/bus/usb/*/*的权限为允许 。使用这种方法建议生成一个新的安卓权限啊去保护这些文件的链接,不建议给所有的应用权限都可以读写这些文件
B.对于已经root的安卓设备,作为root可是使用“su” 命令来执行调用libusb的代码。另一种方法是可以使用 su命令去改变/dev/bus/usb/下文件的权限。
C.用户可以在java层使用android.hardware.usb.UsbManager 去获取 UsbDevice权限,并打开usb设备,这个方法的难点是不能保证在以后的安卓系统版本中可以继续适用,这个牵涉到JAVA APIs,运行的代码使每一个android.hardware.usb.UsbDevice和 libusb_device
相关文章推荐
- USB 重定向库usbredir的移植到Android下使用的方法总结
- 移植Android到具体硬件--方法及过程详解
- Linux普通用户使用libusb访问usb设备的方法
- Android中Handler的使用方法——在子线程中更新界面
- Android开发中使用Eclipse创建工程后提示The project cannot be built until build path errors are resolved问题的解决方法
- Android蓝牙栈bluez使用方法
- 使用PreparedStatement为不同的数据库编写可移植的数据库存取方法
- android使用 2D 方法实现倒影特效
- Android ImageShow的使用方法(2)【转】
- 由计算机产生0-9之间的随机整数,用户输入猜测的数据,统计用户猜测的次数。产生随机数可以使用Math.rangom()静态方法,该方法返回正的double类型浮点数位于(0.0 1.0】间。
- android语音识别方法一:使用intent调用语音识别程序
- Android中两种使用Animation的方法
- Google Android JNI使用方法
- 【Android笔记】Notification和NotificationManager的基本使用方法
- Android ImageShow的使用方法(1)【转】
- Android使用原生组件WebView加载网页和数据的方法
- Android_0.9 蓝牙栈bluez使用方法
- cygwin跨平台移植 gcc+vc联合使用的方法和注意事项
- Android中Handler的使用方法——构建定时器
- 使用Android隐藏类和隐藏方法