- 博客(10)
- 收藏
- 关注
原创 android底层开发学习笔记十(Android系统定制)
在Android目录(fspad-733-6.0/androidM)中执行pack命令,生成boot-resource.fex文件(./tools/pack/out/boot-resource.fex)存放路径:fspad-733-6.0/androidM/out/target/product/astar-fspad_733/system/media。1、添加目录:~ /fspad-733-6.0/androidM/device/farsight/farsight-733。
2025-04-28 22:23:58
1792
原创 android底层开发学习笔记九(hal层架构-2)
2、点击app,可以看到c_open,c_ioctl,c_close和hal_open,hal_ioctl,hal_close的日志都打印了,说明c库层能通过stub调用hal层代码。2、定义结构体struct led_device_t,封装hal_open,hal_ioctl, hal_close等函数,并且集成 struct hw_device_t;2、修改c_open,c_ioctl,c_cloae代码,通过代理人调用hal层接口。二、编译hal层库代码:编写Android.mk。
2025-04-27 20:51:25
273
原创 android底层开发学习笔记八(hal层架构-1)
封装这些函数,同时第一个成员包含struct hw_device_t (继承struct hw_device_t ),这样可以通过返回给上层c库的struct hw_device_t 地址访问自定义的结构体led_device_t(struct hw_device_t 指针强转成led_device_t指针,结构体第一个变量的地址就是结构体的地址),进而调用led_device_t中的ioctl, read, wirte函数。1). 并不是所有的硬件设备都有标准的Linux Kernel的接口;
2025-04-26 18:37:06
706
原创 android底层开发学习笔记七(JNI机制下-2)
上一篇在x86架构的虚拟机上实现了一个java程序,调用底层驱动,接下来要实现一个java应用,可以调用底层驱动,在arm设备上运行。6)将libnative.so放到平板的/vendor/lib或/system/lib目录中。2)声明本地实现的方法:java_open, jaca_ioctl, java_close。5、修改c代码库对led设备文件进行操作,并重新编译,放到设备的/system/lib目录中。1、创建一个LedService类,实现控制Led灯的方法,以便LED-APP调用。
2025-04-20 22:30:20
465
1
原创 android底层开发学习笔记六(JNI机制下-1)
文件系统中可以看到/dev/myled0 已经生成,在c实现的代码中通过这设备文件控制驱动。b、字符设备注册:初始化注册字符设备,并绑定字符设备的操作方法fops。一、目标:实现三层调用--java调用上层c代码,上层c代码调用底层驱动。1、目标:java代码调用驱动的open, ioctl,close函数。以上实现了java对c代码的调用,和c代码对驱动的调用。二、三个层次:Java代码,c代码,底层driver代码。4、修改c代码,c中对以上设备节点进行操作。a、实现c代码对应的函数。
2025-04-19 21:18:22
347
原创 android底层开发学习笔记五(JNI机制上)
JNI 是 Java 语言的一个重要特性,它使得 Java 程序能够调用和被 C/C++ 程序调用,从而充分利用 Java 的跨平台特性和 C/C++ 的高性能特性。3)java如何调用c库中的Jni_onload函数,或者c库中的Jni_onload函数怎么知道是哪个类调用了Jni_onload函数。通过javah,利用.class文件生成JNI的.h文件(生成后的JNI头文件包含了java函数在JNI层的声明)1)实现原理:直接告诉native函数其在JNI中对应函数的指针(Jni_onload);
2025-04-17 14:26:04
1657
原创 android底层开发学习笔记四(Android启动流程)
rcS中调用mount -s 挂载内存文件系统(fstab中所有设备),内存文件系统有/dev或者/proc,它们是能显示内存信息的文件,这些文件在fstab中记录。init进程的路径:linux@ubuntu:~/fspad-733-6.0/androidM/system/core/init$ vi init.cpp。~/fspad-733/androidM/system/core/rootdir/init.zygote32.rc,用于启动zygote服务。
2025-04-07 00:42:50
421
原创 android底层开发学习笔记三(Android系统代码下载、编译和烧写)
工具链:linux@ubuntu:~/fspad-733-6.0/lichee/out/sun8iw5p1/android/common/buildroot/external-toolchain。sudo vi /etc/environment,将:/home/linux/external-toolchain/bin添加到path变量。将external-toolchain复制到家目录中:/home/linux/external-toolchain/bin。2、设备进入到fastboot模式,有两个方法。
2025-04-06 01:29:07
1595
原创 android底层开发学习笔记二(Android模块的编译)
LOCAL_MODULE_PATH:=$(LOCAL_PATH)/lib(编译静态库的路径不能指定,只能存放在默认编译输出的路径中)#LOCAL_LDFLAGS:=-L $(LOCAL_PATH)/lib -ladd(-l+add库名)LOCAL_MODULE_PATH:= $(LOCAL_PATH) 指定编译生成文件存放的路径。LOCAL_LDFLAGS:=$(LOCAL_PATH)/lib/libadd.so (写全路径)LOCAL_SRC_FILES := hello-jni.c 指定源文件。
2025-04-05 16:39:25
550
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅