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驱动的代码相关推荐

  1. android视频压缩框架,GitHub - tangpeng/VideoCompressor: Android 使用自带的MediaCodec 框架进行本地视频压缩,速度嗖嗖的,亲测有效!!!...

    如果您觉得本项目对你有用,请随手star,谢谢 Android 视频压缩常见3种方案:(1)FFmpeg,(2)mp4praser,(3)MediaCodec. 本demo是用android 自带的M ...

  2. android queue用法,GitHub - rygz146/TQueue: Android 可以任意切换线程的任务队列, TQueue

    TQueue 一个Android开发库, 可以任意切换线程的链式调用任务队列, 可添加定时, 延时任务, 统一异常处理(Ceased中断),但不影响整个任务链的运行. 具体用法如下: TQueue.q ...

  3. android tv nugat,GitHub - GongXunYoung/Android-tv-widget: Android tv,盒子,投影仪 控件

    Android TV 开发框架 QQ群:522186932 Leanback 框架(类似谷歌的Leanback,更简直,更方便): 键盘框架: 菜单框架: 整体目录结构 *AndroidTvWidet ...

  4. android动画框架,GitHub - azhengyongqin/CustomAnimationFramework: Android自定义曲线路径动画框架...

    Android自定义曲线路径动画框架 最近在一个项目中需要一个像QQ打开个人爱好那样的动画效果如下图: 可以看出每个小球都是以顺时针旋转出来的,说明像这样的曲线动画用Android中自带的平移动画是很 ...

  5. android git gif,GitHub - lchad/Gifflen-Android: Android上合成gif图片.

    Gifflen-Android 在Android平台通过静态图片合成Gif动态图片. 示例Apk程序 一脸懵逼.gif 是如何产生的? 由于Android平台对Gif的支持不是很好,没有现成的Java ...

  6. android 自定义菜单栏,GitHub - earthWo/AndroidBottomNavigation: android 底部菜单栏,自定义样式,自定义菜单数量,添加滚动动画和水波纹动画...

    AndroidBottomNavigation 截图 使用方法 gradle: compile 'com.whitelife.library:library:1.0.1' maven: com.whi ...

  7. android 摄像头 测距,GitHub - infonous/Everest: Android 手机拍照测距

    Everest Android 手机拍照测距 村花测距: Android 手机拍照测距 知识背景 利用器具测距的方式方法较多, 手机拍照测距从类别来分应该是属于单目测距, 这是需要使用到具体的参数物作 ...

  8. android 发帖功能,GitHub - qiaop/android-post: Android图文发帖与浏览

    Android图文发帖与浏览 简述 很多的社交类项目中都有类似论坛的发帖功能,在探索了很多的实现方式之后找到了一种最为简单的实现. 功能非常丰富,核心文件只有5个: RichEditor.java e ...

  9. 【转】GitHub 优秀的 Android 开源项目

    转自:http://blog.csdn.net/shulianghan/article/details/18046021 主要介绍那些不错个性化的View,包括ListView.ActionBar.M ...

最新文章

  1. 使用SQL_TRACE进行数据库诊断
  2. Hadoop大数据——mapreduce的排序机制之total排序
  3. 使用AWS Lambda,S3和AWS CloudFront进行动态内容缓存
  4. 让你的Mac电脑高效起来,推荐几个yyds的命令行工具
  5. c语言中空格算空行吗,1、程序中空格与空行使用规范
  6. hadoop 传感器数据_大数据时代Hadoop的本质,你有过认真了解吗?
  7. Nginx源码分析 - HTTP模块篇 - HTTP模块的初始化(20)
  8. 阶段2 JavaWeb+黑马旅游网_15-Maven基础_第5节 使用骨架创建maven的java工程_17maven工程运行环境修改...
  9. MySQL创建企业信息表,基于数据库mysql创建学生信息表(简易版)
  10. oracle考试试题及其答案,oracle考试试题及答案
  11. 计算不可压缩流体- NS方程求解算法
  12. lisp调用布置天正的图块_为啥天正电气图块插到原建筑条件图里显示特别小,高手指点下哈!...
  13. C#连接服务器超时解决方法
  14. 用Python制作一个文件加密器(支持中文)
  15. 系统架构师(十)设计模式
  16. Win10 1903过TP的双机调试
  17. windows7蓝牙怎么打开_windows7系统玩游戏不能全屏怎么办?
  18. 7:1 error Expected indentation of 2 spaces but found 4 indent 11:35 error Newline requir
  19. Java多线程Callable接口
  20. 原生js解决表格奇偶列显示

热门文章

  1. 前端学习(805):简单数据类型和复杂数据类型
  2. 第十九期:HTTPS虐我千百遍,我却待她如初恋!
  3. 第二十八期:阿里云VS腾讯云 谁才是中国未来的云计算之王?
  4. 玩转oracle 11g(1):Oracle 11g的安装
  5. java 头尾 队列_Java数据结构之队列(动力节点Java学院整理)
  6. Vue基础之Vue列表渲染
  7. Java学习笔记之基础应用(2015.3.21)
  8. bash shell 中时间操作常用方法总结
  9. l2-006 树的遍历
  10. 设计模式6大原则简述