android驱动代码,GitHub - rumengsuifeng/AndroidDrivers: Android驱动的代码
1. 创建hardware目录,在该目录下创建HardCor.java文件(参考HelloWorldActivity.java文件)
2. 在build.gradle(app路径)文件中添加指定so文件的目录,so文件的源文件是C语言编写的,可以放在任意一个目录,它就是JNI文件
3. 如果工程里app目录下没有libs目录,那就自己在app目录下创建一个libs目录,然后创建armeabi目录,把编译出的so文件放入这个目录里,这样的做法是把库编译进apk文件里。
4. 编译.so文件的命令:arm-linux-gnueabi-gcc -I/usr/lib/jvm/java-7-openjdk-amd64/include/ -fPIC -shared -o libhardcor.so hardcor.c
以上的命令编译出的.so文件在下载到开发板上,点击屏幕上的按键以后会报错:缺少libc.so.6文件,所以替换成如下命令:
arm-linux-gnueabi-gcc -fPIC -shared hardcor.c -o libhardcor.so -I /usr/lib/jvm/java-7-openjdk-amd64/include/ -nostdlib /home/root/cqa64_android_v5.1/android/prebuilts/ndk/9/platforms/android-21/arch-arm/usr/lib/libc.so
该命令的-nostdlib选项意思是取消默认的链接库文件,后边的路径是指定自己要用的库文件。在用以上命令编译so文件的时候有个错误卡了好久:
“root@qihua-virtual-machine:/home/root/cqa64_android_v5.1/HAL# arm-linux-gnueabihf-gcc -I/usr/lib/jvm/java-7-openjdk-amd64/include/ -fPIC -shared -o libhardcor.so hardcor.c -nostdlib /home/root/cqa64_android_v5.1/android/prebuilts/ndk/9/platforms/android-21/arch-arm/usr/lib/libc.so
/home/root/cqa64_android_v5.1/HAL/gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.9.1/../../../../arm-linux-gnueabihf/bin/ld: error: libhardcor.so uses VFP register arguments, /home/root/cqa64_android_v5.1/android/prebuilts/ndk/9/platforms/android-21/arch-arm/usr/lib/libc.so does not
/home/root/cqa64_android_v5.1/HAL/gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux/bin/../lib/gcc/arm-linux-gnueabihf/4.9.1/../../../../arm-linux-gnueabihf/bin/ld: failed to merge target specific data of file /home/root/cqa64_android_v5.1/android/prebuilts/ndk/9/platforms/android-21/arch-arm/usr/lib/libc.so
collect2: error: ld returned 1 exit status
root@qihua-virtual-machine:/home/root/cqa64_android_v5.1/HAL# ”
以上问题的解决办法是换了个交叉编译器好了,但是现在我也没搞明白编译so文件的编译器和编译Android源码的编译器有啥联系,以上问题的帖子链接在:http://bbs.100ask.org/forum.php?mod=viewthread&tid=22161&page=1#pid79973
5. 编译命令再次进化:
arm-linux-gnueabi-gcc -fPIC -shared hardcor.c -o libhardcor.so -I /usr/lib/jvm/java-7-openjdk-amd64/include/ -nostdlib /home/root/cqa64_android_v5.1/android/prebuilts/ndk/9/platforms/android-21/arch-arm/usr/lib/libc.so -I /home/root/cqa64_android_v5.1/android/prebuilts/ndk/9/platforms/android-21/arch-arm/usr/include/ /home/root/cqa64_android_v5.1/android/prebuilts/ndk/9/platforms/android-21/arch-arm/usr/lib/liblog.so
因为代码中使用了__android_log_print打印函数(该函数可以把调试信息打印在studio的logcat栏里)所以指定了头文件,-I 参数指定log.h头文件的路径;后边的目录指定了liblog.so的路径
android驱动代码,GitHub - rumengsuifeng/AndroidDrivers: Android驱动的代码相关推荐
- android视频压缩框架,GitHub - tangpeng/VideoCompressor: Android 使用自带的MediaCodec 框架进行本地视频压缩,速度嗖嗖的,亲测有效!!!...
如果您觉得本项目对你有用,请随手star,谢谢 Android 视频压缩常见3种方案:(1)FFmpeg,(2)mp4praser,(3)MediaCodec. 本demo是用android 自带的M ...
- android queue用法,GitHub - rygz146/TQueue: Android 可以任意切换线程的任务队列, TQueue
TQueue 一个Android开发库, 可以任意切换线程的链式调用任务队列, 可添加定时, 延时任务, 统一异常处理(Ceased中断),但不影响整个任务链的运行. 具体用法如下: TQueue.q ...
- android tv nugat,GitHub - GongXunYoung/Android-tv-widget: Android tv,盒子,投影仪 控件
Android TV 开发框架 QQ群:522186932 Leanback 框架(类似谷歌的Leanback,更简直,更方便): 键盘框架: 菜单框架: 整体目录结构 *AndroidTvWidet ...
- android动画框架,GitHub - azhengyongqin/CustomAnimationFramework: Android自定义曲线路径动画框架...
Android自定义曲线路径动画框架 最近在一个项目中需要一个像QQ打开个人爱好那样的动画效果如下图: 可以看出每个小球都是以顺时针旋转出来的,说明像这样的曲线动画用Android中自带的平移动画是很 ...
- android git gif,GitHub - lchad/Gifflen-Android: Android上合成gif图片.
Gifflen-Android 在Android平台通过静态图片合成Gif动态图片. 示例Apk程序 一脸懵逼.gif 是如何产生的? 由于Android平台对Gif的支持不是很好,没有现成的Java ...
- android 自定义菜单栏,GitHub - earthWo/AndroidBottomNavigation: android 底部菜单栏,自定义样式,自定义菜单数量,添加滚动动画和水波纹动画...
AndroidBottomNavigation 截图 使用方法 gradle: compile 'com.whitelife.library:library:1.0.1' maven: com.whi ...
- android 摄像头 测距,GitHub - infonous/Everest: Android 手机拍照测距
Everest Android 手机拍照测距 村花测距: Android 手机拍照测距 知识背景 利用器具测距的方式方法较多, 手机拍照测距从类别来分应该是属于单目测距, 这是需要使用到具体的参数物作 ...
- android 发帖功能,GitHub - qiaop/android-post: Android图文发帖与浏览
Android图文发帖与浏览 简述 很多的社交类项目中都有类似论坛的发帖功能,在探索了很多的实现方式之后找到了一种最为简单的实现. 功能非常丰富,核心文件只有5个: RichEditor.java e ...
- 【转】GitHub 优秀的 Android 开源项目
转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包括ListView.ActionBar.M ...
最新文章
- 使用SQL_TRACE进行数据库诊断
- Hadoop大数据——mapreduce的排序机制之total排序
- 使用AWS Lambda,S3和AWS CloudFront进行动态内容缓存
- 让你的Mac电脑高效起来,推荐几个yyds的命令行工具
- c语言中空格算空行吗,1、程序中空格与空行使用规范
- hadoop 传感器数据_大数据时代Hadoop的本质,你有过认真了解吗?
- Nginx源码分析 - HTTP模块篇 - HTTP模块的初始化(20)
- 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第5节 使用骨架创建maven的java工程_17maven工程运行环境修改...
- MySQL创建企业信息表,基于数据库mysql创建学生信息表(简易版)
- oracle考试试题及其答案,oracle考试试题及答案
- 计算不可压缩流体- NS方程求解算法
- lisp调用布置天正的图块_为啥天正电气图块插到原建筑条件图里显示特别小,高手指点下哈!...
- C#连接服务器超时解决方法
- 用Python制作一个文件加密器(支持中文)
- 系统架构师(十)设计模式
- Win10 1903过TP的双机调试
- windows7蓝牙怎么打开_windows7系统玩游戏不能全屏怎么办?
- 7:1 error Expected indentation of 2 spaces but found 4 indent 11:35 error Newline requir
- Java多线程Callable接口
- 原生js解决表格奇偶列显示