📢 1. 职业规划篇
来聊聊安卓职业规划?整机开发大专能做么?
📢 2.基础篇
基础篇.前言
基础篇.编译环境搭建
基础篇.源码目录简介
基础篇.系统 mk_bp 讲解
基础篇.开机动画定制
基础篇.定制桌面壁纸、导航方式
基础篇.系统属性、api 使用
基础篇.名称修改、名词介绍
基础篇.用 bugreport 带你看 Crash 和 ANR
基础篇.Provision 源码分析
📢 3. 系统应用篇
系统应用篇.开机向导制作一
系统应用篇.开机向导制作二
系统应用篇.Settings 导航切换分析
系统应用篇.开机向导导航切换一
系统应用篇.开机向导导航切换二
系统应用篇.gms 制作集成
系统应用篇.开机向导适配 GMS
系统应用篇.Launcher3 结构剖析一
系统应用篇.Launcher3 结构剖析二
系统应用篇.Launcher3 结构剖析三
系统应用篇.Launcher3 图标加载流程一
系统应用篇.Launcher3 图标加载流程二
系统应用篇.Launcher3 桌面布局定制
系统应用篇.解密 Partner、google PAI 机制
系统应用篇.Partner 机制预制壁纸、默认布局
系统应用篇.Launcher 双排 Hotseat 定制一
系统应用篇.Launcher 双排 Hotseat 定制二
系统应用篇.Launcher 双排 Hotseat 定制三
系统应用篇.Launcher Taskbar 简介以及调出
系统应用篇.SystemUI 篇_用工具教会你看布局、进程
系统应用篇.SystemUI 结构讲解一
系统应用篇.SystemUI 结构讲解二
系统应用篇.SystemUI 的启动流程
系统应用篇.SystemUI 导航栏创建一
系统应用篇.SystemUI 导航栏创建二
系统应用篇.SystemUI 自定义导航按键
系统应用篇.SystemUI 快捷面板下拉流程
系统应用篇.SystemUI 定制禁用锁屏下拉通知栏
系统应用篇.SystemUI 通知注册流程
系统应用篇.SystemUI 通知发送流程
📢 4. 系统篇
系统篇.SystemServer 篇_应用与系统进程间关系
系统篇.SystemServer 简介、自定义 Service 服务一
系统篇.SystemServer 简介、自定义 Service 服务二
系统篇.SystemServer 简介、自定义 Service 服务三
系统篇.SystemServer 简介、自定义 Service 服务四
系统篇.SELinux 问题解决套路一
系统篇.SELinux 问题解决套路二
系统篇.ActivityManagerService 简介
系统篇.WindowManagerService 简介一
系统篇.WindowManagerService 简介二
系统篇.PackageManagerService 简介一
系统篇.PackageManagerService 简介二
系统篇.FW 实战 - Letterbox 定制应用方向一
系统篇.FW 实战 - Letterbox 定制应用方向二
系统篇.分屏流程一
系统篇.分屏流程二
📢 5. 性能篇
(省)低内存优化
性能篇 (省). 低内存查杀机制
性能篇 (省).SystemServer 与 LMK 的 socket 通信
性能篇 (省). 内核进程 LMKD
性能篇 (省). 内存分析
性能篇 (省). 内存泄漏定位与解决
(稳)稳定性优化
性能篇 (稳).WatchDog 检测机制一
性能篇 (稳).WatchDog 检测机制二
性能篇 (稳). 深入 Crash 捕获器流程一
性能篇 (稳). 深入 Crash 捕获器流程二
性能篇 (稳). 深入炸弹 ANR 流程一
性能篇 (稳). 深入炸弹 ANR 流程二
(快)开机优化
性能篇 (快). 开机耗时分析
性能篇 (快). 开机耗时优化
性能篇.实战优化方案分享
framework交流,答疑:251662478
在 AOSP (Android Open Source Project) 编译过程中,很多开发者会遇到 missing separator 这样的报错:
Makefile:12: *** missing separator. Stop.
如果你也碰到了这个问题,不要慌!这通常是 Makefile 语法错误导致的。今天我们就来深挖 missing separator 报错的 根本原因,并教你 如何快速修复! 💡
🚨 missing separator 报错的常见原因
Makefile 的 语法规则非常严格,尤其对 缩进和分隔符 要求特别高。如果 Makefile 里出现 错误的缩进、拼写错误或者非法符号,编译时就会报 missing separator。
❌ 错误案例 1:缩进错误
Makefile 里,规则部分必须使用 Tab 缩进,而不能用空格:
all:
echo "Hello, Android!"
❌ 错误点:使用了 4 个空格 缩进,导致 missing separator。
✅ 正确写法(使用 Tab 缩进):
all:
echo "Hello, Android!"
❌ 错误案例 2:缺少冒号 :
Makefile 规则必须以 目标 + 冒号 : 开头:
all
echo "Hello, Android!"
❌ 错误点:all 后面少了 :,Make 无法解析规则。
✅ 正确写法:
all:
echo "Hello, Android!"
❌ 错误案例 4:非法字符
有时候,拷贝的 Makefile 可能包含 隐藏字符(比如 Windows 换行符 ^M):
all:^M
echo "Hello, Android!"^M
❌ 错误点:Makefile 必须是 Unix 格式,Windows 格式可能导致解析错误。
✅ 解决方案:
用 vim 打开 Makefile 并转换格式:
:set fileformat=unix
用 dos2unix 命令转换:
dos2unix Makefile
🔧 missing separator 报错的快速修复方法
如果遇到 missing separator,可以 按照以下步骤排查:
检查缩进(必须使用 Tab,不能用空格)。
检查规则格式(目标后面要有 :)。
检查 Makefile 的换行符(转换为 Unix 格式)。
使用 make -d 调试,看看具体报错位置:
make -d
📌 总结
💡 只要掌握 Makefile 语法规则,就能轻松修复 missing separator 报错! 🚀