构建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-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 ...
2020-05-26
Android系统架构
Android系统架构在Android系统架构中,每一层都由多个模块组成,每个模块都有其特定的功能。以下是各层具体模块及其功能的详细介绍: 应用层(Applications) 包含用户直接交互的应用程序,如电话、短信、浏览器、联系人等。 第三方应用程序也是这一层的一部分,使用Java或Kotlin编写。 应用框架层(Application Framework) Activity Manager:管理应用生命周期和常见导航回退功能。 Window Manager:管理所有的窗口程序,提供多屏支持、通知栏信息等功能。 Content Providers:允许应用程序之间访问彼此的数据,例如读取联系人数据。 View System:构建应用程序的基本组件,包括列表、网格、文本框、按钮等UI元素。 Notification Manager:使所有应用可以在状态栏中显示自定义提醒。 Package Manager:负责管理应用程序包相关的操作,比如安装、卸载应用等。 Telephony Manager:提供对设备通话状态的管理和控制。 系统运行库层(Libraries + Androi...
2023-09-29
系统服务的实现方式
系统服务的实现方式 方式 实现语言 启动方式 调用方 适用场景 1. Java 系统服务 Java SystemServer 启动 Java 系统 App、SystemUI、Settings 逻辑简单,需与 AMS/PMS 交互 2. Native AIDL 服务 C++ init 启动(.rc) C++(如 frameworks/av)、Java(通过 Binder) 高性能、C++ 实现、跨语言调用 ✅ 3. 传统 Native Binder 服务 C++ init 启动 C++ 老项目、不依赖 AIDL 4. HIDL / AIDL (vendor) C++/Java hwservicemanager vendor HAL、system/vendor 主要用于 HAL 层,不推荐用于 system 内部服务 5. Socket / HAL / 共享内存 C/C++ 自定义 仅限本地进程 低延迟、无 Binder 开销,但不是标准系统服务 ✅ 二、针对你的场景:哪种最合适?你的...
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-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 的额外服务...
公告
欢迎来到我的博客,有任何疑问可以随时联系我交流讨论!






