
Android
文章平均质量分 52
Android framework
SleepyPat
化整为零
有的放矢,心无旁骛
展开
-
[Android] 使用JNI 出现 signal 4 (SIGILL)时,确保每个函数都有 return 语句
出现这个问题,大部分情况下时 JNI 函数及其调用的 底层 C/C++ 函数缺少 return 语句。原创 2025-02-21 11:39:59 · 148 阅读 · 0 评论 -
[Android] Graphic Buffer 的申请
MediaCodec 支持 texture mode,即MediaCodec解码video完毕后把 yuv 数据填入 GPU 共享出来的 graphic buffer 里面,app 会把 video 的 yuv数据 和 ui 的数据通过通过软件渲染组件(opengl等)发送给GPU 进行一并渲染。这样做的效率较低,但是稳定性较好。且性能取决于GPU的性能。原创 2024-11-08 21:02:25 · 1098 阅读 · 0 评论 -
[Android] android 里的共享内存
hidl_memory 是一种对共享内存的封装,可以用来让 framework 层和 HAL 层进行数据共享。:内存的类型,通常是 "ashmem" (匿名共享内存,常用) 或者 "mmap_fd"。:一个文件描述符fd,指向共享内存。原创 2024-11-07 11:05:59 · 247 阅读 · 0 评论 -
[Android] NDK 里 ANativeWindow 和 Surface 之间的关系
在MediaCodec里面可以看到 Configure 和 SetSurface 都是接收一个 sp<Surface> 入参的,而回归到 NDK 侧,则可以发现,传递给 AMediaCodec_Configure 和 AMediaCodec_SetSurface 的确是 ANativeWindow 指针,因此 ndk 里面必然进行了某种转换。由此可见, Surface 类是 ANativeWindow 的子类。原创 2024-08-06 16:59:18 · 390 阅读 · 0 评论 -
[Android] Surface SurfaceView SurfaceHolder 三者之间的关系
Surface 是绘制对象,SurfaceView是一个组件,SurfaceHolder是SurfaceView操作Surface的接口。虽然SurfaceView里面包含Surface,但是SurfaceView无法直接操作Surface,需要借由SurfaceHolder这个接口类来操作。原创 2024-07-26 14:06:33 · 347 阅读 · 0 评论 -
[其他] OpenJDK 下载路径
Qt 6.4 在配置 Qt for Android 的时候会需要使用到 java 11, 而11 是收费的,因此可以使用 openJDK 来代替,下载路径为:原创 2023-03-22 15:45:39 · 149 阅读 · 0 评论 -
[Android] 使用 android 自带的 hidl 共享内存接口,Ashmem
Android 提供了 一个共享内存服务 android::hidl::allocator::V1_0::IAllocator / android::hidl::memory::V1_0::IMemory, 通过这个接口可以向 android 直接请求共享内存。使用此方法可以更加方便和安全地在 android 系统中使用共享内存,而不需要使用 posix c 的共享内存模块。原创 2024-04-29 11:17:16 · 651 阅读 · 0 评论 -
[Android] 基于binder的共享内存
Android里的binder机制是基于共享内存实现的跨进程间通讯,其作为驱动程序为上层应用提供高效的IPC。Android同样提供了基于 binder 的实际内存管理和使用模块。通过这个模块可以按照binder的框架写法直接使用 raw 共享内存。这是 binder 机制的一种共享内存泛化使用,而不仅仅是使用共享内存实现IPC和RPC。原创 2024-04-28 12:06:56 · 336 阅读 · 2 评论 -
[Android] Client->NuPlayer
startuml@enduml。原创 2024-02-07 18:02:24 · 1222 阅读 · 0 评论 -
[Android] NuPlayer回调通知直至App
font color="green">处理来自Client的回调。原创 2024-02-05 17:06:09 · 793 阅读 · 0 评论 -
[Android] SDK->NuPlayer
[Android] SDK->NuPlayer。原创 2024-01-30 16:19:19 · 741 阅读 · 0 评论 -
[Android] libmedia-libmediaplayerservice 框架
【代码】[Android] libmedia-libmediaplayerservice 框架。原创 2024-01-26 18:41:16 · 469 阅读 · 0 评论 -
[Android] android架构中对于硬件封装的演化(HAL/HIDL/AIDL)
前言:Android 架构在硬件封装上经历了 3 个阶段,2次大演化。分别是 HAL 阶段,HIDL 阶段 和 AIDL 阶段。HAL 阶段:[?,8.0)这个阶段中,HAL 为底层硬件的抽象层,或者说 Wrapper 层/Helper层HAL层的所有对象都是 .so动态库,这些动态库的最主要行为就是包装对硬件设备的访问逻辑。比如如果一个硬件的驱动为 /dev/device0,那么针对这个device的 HAL 层对象就是对 /dev/device0 的访问。HAL的子阶段。原创 2024-01-24 10:28:50 · 1191 阅读 · 0 评论 -
[Android] AOSP 源码编译
Build Android system and Kernel images - Code Inside OutAOSP, led by Google, is an open source operating system for mobile devices. Andoid now aday can run on many different devices, including Vehicle Infortainment systems. Android Automotive has the base原创 2024-01-05 10:09:46 · 603 阅读 · 0 评论 -
[Android] 如何在Android中执行自己编译的可执行文件
1.push文件到 /data/localadb push file /data/local2.增加可执行权限adb shell chmod +x /data/local/file3.运行adb shell ./data/local/file原创 2023-12-27 19:36:29 · 1263 阅读 · 0 评论 -
[Android] Android.mk 转 Android.bp
Android 提供了一个工具androidmk ,可以把 Android.mk 转换成 Android.bp。原创 2023-12-25 10:59:31 · 774 阅读 · 0 评论 -
[Android] 如何把自定义的 可执行文件/库文件/apk 放到系统目录下
PRODUCT_PACKAGES += 可执行文件名/动态库名字/静态库文件名字/apk文件名字。可执行文件:/system/bin。库文件:/system/lib。原创 2023-12-25 10:24:53 · 670 阅读 · 0 评论 -
[Android] ubuntu虚拟机上搭建 Waydroid 环境
略。原创 2023-12-17 20:20:08 · 4507 阅读 · 0 评论 -
[Android] c++ 通过 JNI 调用 JAVA函数
Calling Java from C++ with JNI - CodeProject原创 2023-11-28 17:03:14 · 624 阅读 · 0 评论 -
[Android] Amazon 的 android 音视频开发文档
https://developer.amazon.com/zh/docs/fire-tv/audio-video-synchronization.html#22-getplaybackheadposition-api-level-3https://developer.amazon.com/zh/docs/fire-tv/audio-video-synchronization.html#22-getplaybackheadposition-api-level-3原创 2023-11-20 15:27:30 · 338 阅读 · 0 评论 -
[Android] libcutils - native 获取/设置 property
Android 的property系统类似于linux的环境变量,但是更加精细。可以通过adb 设置和读取 property,同时也可以在代码 (JAVA/C++/C) 中设置和获取属性。这有助于我们在运行时控制代码执行逻辑。比如打开 测试开关 或者 dump源数据文件。原创 2023-11-17 11:11:49 · 728 阅读 · 0 评论 -
[Android] 隧道音画同步模式
源码中的media_codecs.xml。系统中的media_codecs.xml。原创 2023-11-17 09:39:29 · 293 阅读 · 0 评论 -
[Android] Android CVE search website
Versions of Google Android : Versions and number of related security vulnerabilities List of all versions of Google AndroidDetailed list of all versions with known security vulnerabilities of product. You can easily find the exact version you are looking f原创 2023-11-08 11:58:03 · 224 阅读 · 0 评论 -
[Android Audio] 音频格式
Android支持的音频格式原创 2023-09-21 16:54:24 · 248 阅读 · 0 评论 -
[Android] 关于Android 源码的编译
的,因此在编译 aosp 的代码时,理论上只会生成 system.img 文件(./out/target/product/xxx/system.img),但是 android 编译为了保证完整性,会从网络上下载一个配套的 vendor.img 放入 ./out/target/product/xxx/。vendor.img 是 各个厂家自定的部分,是私有的,因各个厂家自己实现的不同而不同,这属于特意化范畴。Android 镜像由两个 image 组成 system.img 和 vendor.img。原创 2023-09-26 10:15:37 · 468 阅读 · 0 评论 -
[Android] AndroidManifest.xml 详解
【2】service生命周期:Service只继承了onCreate(),onStart(),onDestroy()三个方法,第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执行onDestroy()方法,如果Service已经启动了,当我们再次启动Service时,不会在执行onCreate()方法,而是直接执行onStart()方法。应用程序运行的进程名,它的默认值为元素里设置的包名,当然每个组件都可以通过设置该属性来覆盖默认值。原创 2023-09-07 10:02:14 · 9011 阅读 · 3 评论 -
[Android] 通过JNI 让 JAVA 调用 android native 接口
JNI (java native interface) 是一个库,可以让 java 代码和其他语言互动,比如 java 通过 JNI 调用融合了 jni库的 c/c++ 代码,注意,这里要求 c/c++代码中必须通过链接 jni 库并按照 JNI 规范定义一套可供 JAVA 调用的接口,也就是说 c/c++ 中想要暴露给 JAVA 的接口一定要按照 JNI 规范来定义。jni 库对 c/c++ 的头文件为 #include <jni.h>原创 2023-08-15 11:00:09 · 704 阅读 · 0 评论 -
[Android] Nuplayer 的 notifyListener 消息类型
enum media_event_type { MEDIA_NOP = 0, // interface test message MEDIA_PREPARED = 1, MEDIA_PLAYBACK_COMPLETE = 2, MEDIA_BUFFERING_UPDATE = 3, MEDIA_SEEK_COMPLETE = 4, MEDIA_SET_VIDEO_SIZE = 5, MEDIA_STARTED = 6,原创 2023-08-02 16:45:39 · 189 阅读 · 0 评论 -
[Android] 媒体播放框架(Media JAVA/NATIVE/JNI libmedia libmediaservice Nuplayer)
【代码】[Android] 媒体播放框架(Media JAVA/NATIVE/JNI libmedia libmediaservice Nuplayer)原创 2023-07-24 13:30:51 · 189 阅读 · 0 评论 -
[Android] Android源码下载 及 编译
上述异常是因为repo版本和python不匹配造成,如果出现上述异常,则在后续执行repo的时候都需要机上 python3 以指定 python 解释器。3.关联仓库(只是关联仓库信息,不会同步到本地磁盘)如果需要其他分支,则改变 -b 的参数,见。2.配置 git 信息(已经配置则跳过)4.同步代码到本地磁盘。原创 2023-04-23 17:36:08 · 349 阅读 · 0 评论 -
[Android] Android版本 和 SDK / NDK / Qt 版本对应关系
Android NDK r16b(2017 年 12 月)Android NDK r13b(2016 年 10 月)Android NDK r10d(2014 年 12 月)Android NDK r22b(2021 年 3 月)Android NDK r20b(2019 年 6 月)Android NDK r14b(2017 年 3 月)Android NDK r12b(2016 年 6 月)Android NDK r11c(2016 年 3 月)Android NDK r11b(2016 年 3 月)原创 2023-03-16 11:49:32 · 7605 阅读 · 0 评论 -
[Android] Android 开发环境搭建 及 Ndk的使用
github : GitHub - obentul/ndk-samples: Android NDK samples with Android Studio推荐使用android studio推荐使用android studioANDROID_HOME = SDK 安装目录ANDROID_NDK_HOME = NDK 安装目录切换到对应的 sample 工程下,执行 ./gradlew assembleDebugapk会被输出到同级的 /app/build/outputs/apk/debug原创 2023-05-31 13:36:26 · 665 阅读 · 0 评论 -
[Android FrameWorks][ AV ][ DRM ] drm关键类uml
drm关键类uml原创 2023-02-10 11:11:55 · 135 阅读 · 0 评论 -
[Android] AMessage AHandler ALooper
ALooper 会创建一个线程,在线程处理函数中循环调用注册给自己的 AHandler 的 onMessageReceived 消息;AHandler 当且仅当做父类使用,子类通过继承父类并实现其 onMessageReceived 虚函数的方式定义自己的消息处理逻辑,每个AHandler都必须指定一个ALooper;AMessage 是消息的载体,AMessage必须和AHandler一起使用,如果构造AMessage的时候没有指定AHandler,那么就必须通过setTarget来手动指定一个处理本AM原创 2022-06-18 14:35:50 · 698 阅读 · 0 评论