原创 FFmpeg help 命令的一些中文翻譯

Help options: 幫助選項 --quiet# 信息輸出顯示 --list-decoders# 可用解碼器 --list-encoders# 可用編碼器 --list-hwaccels# 可用硬件編解碼器 --list-demuxe

原创 Mac 下使用 NDK 交叉編譯 ffmpeg

編譯環境如下: 電腦 Mac Os 13.1 NDK 版本: android-ndk-r17c ffmpeg 版本: ffmpeg-4.1.2 ( 開發環境都是最新的, 編譯環境可以不需要最新 ) 直接使用 github 上的一個

原创 JNI 中的異常處理

一般會有兩種異常 Native 層代碼出現的異常. Native 層調用 Java 層代碼時, Java 層出現異常 第一種又分爲兩種解決方案, 分別是在 Native 層自己處理, 進行補救. 或者是將異常拋出到 Java 層, 由

原创 簡單理解 Parcel 基本原理

Android 中 parcelable 和 parcel 的關係及源碼可以看這篇文章, 不在多做描述, 只是根據源碼結合之前學到的寫出一個簡單的 Parcel. 目錄結構如下: 1. 定義 Native 方法 首先是先定義一個 Z

原创 JNI 中的線程

相關結論 JNIEnv 無法跨線程, 可以跨函數. jobject 無法跨線程, 無法跨函數. JavaVM 可以跨線程,跨行數. 在實際開發中, 很有可能在 JNI 中做一些耗時操作, 就需要在 JNI 中用到子線程. 下面用

原创 常量指針/指針常量/常量指針常量的區別

常量指針, 允許重新指向, 但是不允許修改指向地址的值 指針常量, 不允許重新指向, 但是可以修改指向地址的值 常量指針常量, 都不允許. int main17(){ int number1 = 100; int num

原创 使用 JNI 時 JAVA 對應的簽名

boolean -------- Z short -------- S float -------- F byte -------- B int -

原创 Android 導入 So 庫的流程

本章內容用來記錄導入so庫的流程, 會以 Fmod爲例. 點擊直達FMOD官網 1. 新建好工程後將 FMOD 的頭文件複製到工程中 2. src 目錄下新建 jniLibs 文件夾, 將各 CPU 架構對應的 so 庫複製進去. 3

原创 Android ServiceManager 代理對象的獲取

OK, 上章內容學習分析了 ServiceManager 的註冊過程. 簡單來說分爲三個步驟 調用函數 binder_open 打開設備文件 /dev/binder 以及將它映射到本進程的地址空間. 調用函數 binder_become_

原创 Android ServiceManager 的啓動流程

本章學習內容:學習 ServiceManager 的啓動流程 前言 ServiceManager 是 Binder 進程間通信機制的核心組件之一, 它扮演者 Binder 進程間通信機制上下文管理者的角色, 同時負責管理系統中的 Servi

原创 Android 啓動流程圖 (一)

閱讀順序, 先看Binder機制, 接着對照此圖看ServiceManager的啓動和獲取, 先了解基礎啓動流程, 後面的文章都會再次基礎上進行增加, 例如AMS的啓動和註冊等.

原创 Android ActivityManagerService 註冊到 Service Manager 的流程(中)

接上一章. 33.binder_thread_read 源線程, 即 AMS, 從上一章的第 32 步函數 binder_transaction 返回第 29 步 binder_thread_write 之後, 繼續返回到第 28 步 b

原创 Android ActivityManagerService 註冊到 Service Manager 的流程(上)

前面兩章學習分析了 ServiceManager 的啓動流程與獲取它代理對象的流程, 本章節開始對 Service 組件啓動後註冊到 ServiceManager 的流程進行分析. 前言 Service 組件是在 Server 進程中運行的

原创 Android Service Manager 的啓動流程

本章學習內容:學習 Service Manager 的啓動流程 前言 Service Manager 是 Binder 進程間通信機制的核心組件之一, 它扮演者 Binder 進程間通信機制上下文管理者的角色, 同時負責管理系統中的 Ser

原创 Android Service Manager 代理對象的獲取

OK, 上章內容學習分析了 Service Manager 的註冊過程. 簡單來說分爲三個步驟 調用函數 binder_open 打開設備文件 /dev/binder 以及將它映射到本進程的地址空間. 調用函數 binder_become