本篇Android驱动开发笔记主要关注了几个关键点,包括设置Java开发环境、JDK版本升级、驱动开发的基础和实践以及JNI(Java Native Interface)在Android中的应用。 首先,作者提到使用JDK 1.6.0_37进行开发,并设置了相关的环境变量,如JAVA_HOME、JRE_HOME和CLASSPATH,确保Java开发工具链的正确配置。这涉及到Java开发的基本环境管理,对于任何Android开发者来说,理解并配置这些路径是至关重要的,因为它们直接影响到编译和运行Java代码的能力。 其次,笔记提到了从JDK 1.6.0_37升级到PDF版本,这可能暗示着开发者在追求更稳定或性能优化的过程中,对JDK版本的更新有所考虑。在Android开发中,保持使用最新版本的工具链有助于解决兼容性和性能问题。 接着,文章重点介绍了Android设备驱动的开发,特别是与JNI的结合。JNI允许Java代码调用C/C++库函数,这对于实现硬件驱动或与操作系统底层交互至关重要。这里强调了JNIFileDescriptor类的使用,它提供了Java和C/C++之间的桥梁,使得在Android设备上进行串口通信等操作成为可能。开发者需要了解如何通过JNI封装C/C++函数,以及如何在Java中处理FileDescriptor对象,这是驱动开发的核心技术之一。 此外,笔记还提及了将动态链接库(DLL或SO文件)复制到APK中的步骤,这是Android设备上运行自定义驱动所必需的。开发者需要确保正确地将JNI库文件放置在适当的目录下,并在Makefile中配置构建过程,以便在安装时能顺利加载。 总结来说,这篇笔记涵盖了Android驱动开发的基础环境配置、版本管理、核心技术(JNI)的使用以及实际操作步骤,对于希望深入学习和开发Android驱动程序的开发者来说,具有很高的参考价值。通过理解和掌握这些知识点,开发者能够更好地构建和调试与硬件交互的应用程序。
装JDK1.6.0_37 环境变量的设置,不知道为什么改不了那个profile文件???
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
#set java environment
JAVA_HOME=/home/keon_jeo/develop/jdk1.6.0_37
export JRE_HOME=/home/keon_jeo/develop/jdk1.6.0_37/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
////////////////////////////////////////////////////////////////////////
(今天是11月14日,我过来红楼这边弄开发板所需的平台环境)
我装的JDK是1.6.0_37的跟开发板提供的PDF里面的版本是不同的,它里面提供的是JDK1.6.0_26
//////////////////////////////////////////////////////////////////////////
下午弄到
4.2编译所有源码 这一步(还没有开始)
//////////////////////////////////////////////////////////////////////////
14号晚上,弄到75页了。不过中间有很多问题。
//////////////////////////////////////////////////////////////////////////
12月4号
/////////////////////
Android 串口编程原理与实现
/////////////////////
提到串口编程,就不得不提到JNI,不得不提到JavaAPI中的文件描述符类:FileDescriptor。下面我分别对JNI、FileDescriptor以及串口的一些知识点和实现的源码进行分析说明。这里主要是参考了开源项目android-serialport-api。
串口编程需要了解的基本知识点:对于串口编程,我们只需对串口进行一系列的设置,然后打开串口,这些操作我们可以参考串口调试助手的源码进行学习。在Java中如果要实现串口的读写功能只需操作文件设备类:FileDescriptor即可,其他的事都由驱动来完成不用多管!当然,你想了解,那就得看驱动代码了。这里并不打算对驱动进行说明,只初略阐述应用层的实现方式。
/////////////////////////////
关于JNI的文章网上有很多,不再多做解释,想详细了解的朋友可以查看云中漫步的技术文章,写得很好,分析也很全面,那么在这篇拙文中我强调3点:
1、如何将编译好的SO文件打包到APK中?(方法很简单,直接在工程目录下新建文件夹 libs/armeabi,将SO文件Copy到此目录即可)
2、命名要注意的地方?(在编译好的SO文件中,将文件重命名为:libfilename.so即可。其中filename.so是编译好后生成的文件)
3、MakeFile文件的编写(不用多说,可以直接参考package/apps目录下用到JNI的相关项目写法)
////////////////////////////
这是关键的代码:
<span style="font-size:18px;"> int fd;
speed_t speed;
jobject mFileDescriptor;
/* Check arguments */
{
speed = getBaudrate(baudrate);
if (speed == -1) {
/* TODO: throw an exception */
LOGE("Invalid baudrate");
return NULL;
}
}
/* Opening device */
{
jboolean iscopy;
const char *path_utf = (*env)->GetStringUTFChars(env, path, &iscopy);
LOGD("Opening serial port %s with flags 0x%x", path_utf, O_RDWR | flags);
剩余20页未读,继续阅读
- 粉丝: 0
- 资源: 28
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展