- 博客(5)
- 收藏
- 关注
原创 EXPORT_FUNCTION导出函数
EXPORT_FUNCTION 通常用于在共享库(如 .so 文件)中导出函数,使得这些函数可以在其他程序中被调用。在 C 和 C++ 中,导出函数的方法因平台和编译器而异。
2024-10-11 17:07:13
673
原创 双系统下加载同一个so,导致同时存在两个实例的解决办法
一个进程使用flock将文件锁住,另一个进程可以直接操作正在被锁的文件,修改文件中的数据,原因在于flock只是用于检测文件是否被加锁,针对文件已经被加锁,另一个进程写入数据的情况,内核不会阻止这个进程的写入操作,也就是建议性锁的内核处理策略。在多个进程同时操作同一份文件的过程中,很容易导致文件中的数据混乱,需要锁操作来保证数据的完整性,这里介绍的针对文件的锁,称之为“文件锁”-flock。单一文件无法同时建立共享锁定和互斥锁定,而当使用dup()或fork()时文件描述词不会继承此种锁定。
2024-08-10 13:48:14
343
原创 Android 如何单独编译一个so
在Android系统中,单独编译某个特定的HAL(硬件抽象层)模块,比如audio.usb.default.so,通常涉及到几个关键步骤。这个过程需要对Android构建系统有一定的了解,尤其是对于AOSP(Android Open-Source Project)源代码的编译流程。下面是简化的步骤指南,用于指导如何单独编译audio.usb.default.so模块:
2024-07-22 16:55:33
846
原创 AudioRecord return status -38 错误分析
再一追查果然如此,在audiopolicy,具体实现是在audioflinger创建audiorecord中,当一个录音流已经打开对应的声卡设备节点,另外一个录音流不应该再次开启这个节点,否则此时判断num_open_inputs > 0就会通过。这个方法将profile结构体中的card和device赋值为-1,即未打开声卡设备节点。刚开始不是以为是profile加载问题吗,于是开始重点追查profile_is_cached_for这个方法,这个方法具体实现在audio_utils.cpp中。
2024-05-21 16:34:41
1073
1
原创 Ubuntu中打开Android Studio报错:Error occurred during initialization of VM Initial heap siize
ubunt中打开Android Studio闪退,通过命令启动失败报错如下原因分析:顾名思义,应该是VM参数有问题,通过上网搜索发现绝大多数文章都是说修改studio64.vmoptions文件中Xms和Xmx参数,但是我发现修改android-studio目录下的studio64.vmoptions没有生效。于是继续排查,直到发现某篇博文。说大致意思是在根目录下有个.AndroidStudio目录,目录中有关于studio64.vmoptions的配置文件。然而我在查找问题的时候把这个文件夹删除了,
2022-06-20 15:29:37
2741
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人