构建jni_libs
发表于|更新于|系统
|浏览量:
构建jni_libs
- 系统 App 本来就不该用 SDK 模式 —— SDK 模式是给第三方 App 或 SDK 库用的。
| 模式 | 特点 | 可见模块 |
|---|---|---|
| 平台模式(无 sdk_version) | 用于构建系统镜像、系统 App | 可见所有模块,包括 “libc++_shared” |
| SDK 模式(有 sdk_version) | 用于构建面向第三方 App 的库 | 只能依赖 NDK/SDK 公共模块,如 “ndk_libc++_shared” |
文章作者: Fleming Chen
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Fleming's Blog!
相关推荐
2020-12-01
分区镜像刷写规则
分区镜像刷写规则在 Android 开发或系统定制中,修改了哪些代码/模块,就需要刷写对应的镜像分区。这是因为 Android 系统被划分为多个逻辑/物理分区(如 boot、system、vendor、super 等),每个分区承载不同层级的组件。 下面从 代码改动类型 → 对应需要刷写的镜像 进行详细说明: 🧩 一、Android 分区结构简要回顾(Android 10+ 动态分区) 分区 内容 是否可单独刷写(传统) 在动态分区中 boot 内核(kernel) + ramdisk(init、fstab 等) ✅ 是 ✅ 仍独立 system AOSP 核心框架、系统 App(Settings、SystemUI)、Java/Kotlin 代码 ✅(旧)❌(新,合并进 super) 合并到 super vendor 芯片厂商闭源驱动、HAL 实现、专有库(如 camera HAL、audio HAL) ✅(旧)❌(新) 合并到 super product OEM 定制 App、配置(如 Google Pixel 的额外服务...
2023-06-04
开发方向之Framework层
开发方向之Framework层Framework层开发是Android系统开发中的一个关键领域,它涉及到对Android框架的理解和定制化修改。这个层次的开发通常需要开发者具备深厚的Java知识以及对整个Android系统架构有全面的理解。以下是关于Framework层开发的一些具体介绍: Android Framework概述Android Framework是位于Linux内核之上的一个抽象层,它为应用程序提供了各种服务和API。这些服务和API使得开发者能够构建丰富的用户界面、处理数据、管理资源等。Framework的核心组件包括Activity Manager Service (AMS)、Window Manager Service (WMS)、Content Providers、View System等。 主要关注点 核心服务:理解并能修改AMS、WMS等核心服务的工作机制对于Framework层开发至关重要。例如,AMS负责管理应用进程的状态,而WMS则负责管理屏幕上的窗口。 IPC(Inter-Process Communication)机制:Android使用B...
2022-08-26
Soong 构建系统原理
Soong 构建系统原理非常好的问题!我们来深入解析 AOSP 的 Soong 构建系统,它的编译原理、设计思想以及与传统构建系统的区别。 🌟 一句话总结 Soong 是 Google 为 AOSP 量身打造的下一代构建系统,它使用 Go 语言编写,基于 Ninja 构建引擎,通过 Android.bp 文件描述模块依赖和构建规则,目标是替代旧的 Make 系统(Android.mk),实现更快、更清晰、更可维护的系统级编译。 🔧 Soong 的核心组成 组件 作用 soong_ui 用户接口,替代 make,调用 soong_build soong_build (Go) Soong 的核心逻辑,解析 Android.bp Blueprint Soong 的底层框架(由 Google 开发),用于解析 .bp 文件 Android.bp 构建配置文件(类似 JSON 的语法) Ninja 实际执行编译命令的底层引擎 Kati 将旧的 Android.mk 转成 Ninja 规则(兼容层) 🔄 Soong 的编译流程(原理详解)✅ 阶段...
2019-01-13
Binder机制
Binder机制这是一个非常深入的问题。答案是:在现代 Android 架构(Project Treble)中,对于供应商(Vendor)进程来说,使用 vndbinder 几乎是强制性的。 以下是原因以及如果不使用它会面临的后果: 1. 为什么“必须”用它?Android 将 Binder 通信分成了三个独立的“世界”(Domains),它们物理上隔离,使用不同的设备驱动: **/dev/binder (Framework 域)**:仅供 System 分区进程(如 ActivityManager)使用。 **/dev/vndbinder (Vendor 域)**:专门供 Vendor 分区进程(如你的 musicanalyzer 和各种 HAL)互相通信。 **/dev/hwbinder (Hardware 域)**:主要用于旧版的 HIDL 接口。 强制原因:Google 的 VTS (Vendor Test Suite) 测试有一项硬性规定:禁止 Vendor 进程直接连接到 /dev/binder。 如果你尝试让 musicanalyzer 注册到系统的 serv...
2020-05-26
Android系统编译
Android系统编译编译 Android 系统(AOSP - Android Open Source Project)是一个复杂但结构化的过程,涉及多个步骤和工具。以下是 在 Linux 环境下 编译 AOSP 的基本指令流程,适用于官方支持的设备或通用系统镜像(如 aosp_arm64-eng)。 🧰 一、准备工作1. 安装依赖环境(Ubuntu 20.04/22.04 推荐)1234sudo apt updatesudo apt install git-core gnupg flex bison build-essential zip curl zlib1g-dev \ gcc-multilib g++-multilib libc6-dev-i386 libncurses5 libxml2-utils xsltproc \ unzip fontconfig python3 python3-pip repo repo 是 Google 提供的一个管理多个 Git 仓库的工具。 📁 二、初始化代码库1. 创建工作目录并进入1mkdir ~/aosp ...
2025-06-04
开发方向之音视频
开发方向之音视频音视频开发在Android平台上是一个复杂的领域,涉及到多媒体数据的处理、传输和播放等多个方面。以下是针对音视频开发更详细的介绍,包括关键组件、常用框架与库以及一些具体的实现细节。 关键组件 MediaCodec: MediaCodec API允许开发者访问Android设备上的硬件加速编解码器。它支持音频和视频的编码和解码。 开发者可以使用此API来创建高效的媒体应用,如视频编辑器或实时视频通话应用。 MediaExtractor: MediaExtractor用于从媒体文件中提取轨道(音频或视频)。它可以解析多种格式,并提供对媒体数据的直接访问。 适用于需要对媒体内容进行分析或转换的应用场景。 MediaPlayer: MediaPlayer提供了播放本地或网络上的音频和视频的基本功能。它是Android中最简单的播放控制方法。 对于大多数基本的播放需求,MediaPlayer已经足够使用。 AudioTrack/AudioRecord: AudioTrack用于播放PCM格式的音频数据,而AudioRecord用于录制PCM格式...
公告
欢迎来到我的博客,有任何疑问可以随时联系我交流讨论!






