Framework学习_3集成自定义应用 目录结构说明/vendor/ ├── vendor_product.mk ├── apps/ # 应用统一管理目录 │ ├── product.mk # 应用列表声明文件 │ ├── FirstDemo/ # 应用目录 2026-03-02 linux > aosp
Framework学习_2添加product 添加Product 配置文件,类似应用开发中的build.gradle中的渠道包,用于将系统编译成不同的镜像文件 # 模拟器相关的produ文件 build/target # 实际硬件相关的product文件 device/ aosp_x86_64-eng: build/target/borad/generic_x86_64/BroadConfig.mk build/target/produ 2026-03-01 linux > aosp
Framework学习_1系统编译流程 AOSP 构建系统解析: AndroidProducts.mk 的识别与加载机制在 Android 构建系统中,AndroidProducts.mk 是定义设备配置的核心文件。本文将详细解析其如何通过 环境初始化 和 宏函数解析 被系统识别并加载。 1. 构建环境初始化阶段执行 envsetup.sh 脚本 当运行以下命令时: source build/envsetup.sh 构建系统会执行以 2026-02-28 linux > aosp
linux工具配置 ssh配置# 安装ssh sudo apt install openssh-server # 开机自欺服务 sudo systemctl enable ssh # 重启ssh服务 sudo systemctl restart ssh 配置静态ip# 启用systemd-networkd sudo systemctl start systemd-networkd # 安装vim sudo apt- 2026-01-18 linux > ssh
Flow学习 Flow Flow中存在冷流和热流 ,冷流(Cold Flow)和热流(Hot Flow)的核心区别在于数据生产的触发时机和消费者关系,二者分别适用于不同的异步数据流场景。 一、冷流(Cold Flow)定义与特性 惰性执行:仅在调用 collect() 时开始生产数据,每次收集都会重新执行流构建逻辑(如 flow { ... } 块内的代码)。 一对一关系:每个消费者独立获 2025-07-19 Android > Flow > Kotlin
android常见操作 android 清单文件添加标识 清单文件添加对应配置 <meta-data android:name="commit_id" android:value="${commit_id}"/> build.gradle 添加 buildTypes { release 2024-12-18 Android > gradle > kts
记一次android-10.0.0_r41编译 ubuntu版本: 18.04.6 参考资料: AOSP 清华大学开源软件镜像站 【阳光沙滩】Android Open Source Project入门课程 【AOSP】手把手教你编译和调试AOSP源码 Android10.0编译 make api-stubs-docs-update-current-api问题 1.安装必需的软件包 AOSP 9.0 或更高版本sudo apt-get 2024-09-15 Android > AOSP #Linux #Git #Repo
记一次原生AB分区OTA升级实现 系统需要实现软件ota功能 具体代码实现UpdateEngine mUpdateEngine = new UpdateEngine(); UpdateParser.ParsedUpdate mParsedUpdate; try { mParsedUpdate = UpdateParser.parse(new File(Environment.getDataDirectory( 2024-07-12 Android #OTA #UpdateEngine
记一次WIFI 密码错误判断实现 需求: wifi密码错误、弹出提示 在网上找了半天大部分都是以下方式实现的 public class NetworkStateReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String a 2024-07-09 Android #WIFI
Switch 自定义样式 最终效果 minHeight,switchMinWidth调整switch开关高度、宽度 android:thumb 开关按钮上原型滑块的样式 android:track 开关按钮下面导轨的样式 <Switch android:layout_width="48dp" android:layout_height="24 2024-03-27 Android
git远程仓库已有初始化文件 git远程仓库已有README等初始化文件 本地项目未commit git init git remote add origin xxx(项目地址) git pull origin master 本地项目已commit git remote add origin xxx(项目地址) git pull origin master --allow-unrelated-histories 2024-01-30 Git
Gradle失败解决方式 解决网络等问题导致Android Studio 下载 Gradle失败腾讯镜像:https://mirrors.cloud.tencent.com/gradle/阿里镜像:https://mirrors.aliyun.com/gradle/选择以上镜像,下载项目对应版本 gradle.zip # 切换到gradle 目录 cd /Users/用户名/.gradle/wrapper/dists 如下 2023-12-31 Gradle
Mac JDK环境配置 安装JDK 进入azul下载对应版本、安装 https://www.azul.com/downloads/ 查看安装路径 /usr/libexec/java_home -V # 输出以下内容 Matching Java Virtual Machines (2): 16.0.2 (arm64) "Azul Systems, Inc." - "Zulu 1 2023-07-21 Mac
AudioRecord 学习 音频基础 声音是一种由物体振动引发的物理现象,如小提琴的弦声等。物体的振动使其四周空气的压强产生变化,这种忽强忽弱变化以波的形式向四周传播,当被人耳所接收时我们就听见了声音。 波形 声音是由物体的振动产生,这种振动引起了周围空气压强的振荡,我们称这种振荡的函数表现形式为波形 频率 声音的频率的周期的倒数,它表示的是声音在1s内的周期数,单位时赫兹(Hz,1000Hz表示每秒振动1000次 2023-06-23 Android #AudioRecord #音频
Vue 全局配置 WebSocket 服务端可以主动向客户端推送数据,浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输 创建文件/xx/global.js,且在main中引用// global.js 文件 export default { ws: {}, setWs: function(newWs) { 2023-05-09 Vue > JS