avatar
文章
108
标签
35
分类
15
首页
归档
标签
分类
友链
关于
Fleming's Blog
搜索
首页
归档
标签
分类
友链
关于

Fleming's Blog

将 raw 资源复制为临时文件
发表于2023-11-14|Code
将 raw 资源复制为临时文件123456789101112131415161718192021import java.io.*fun copyRawToCache(context: Context, @RawRes rawId: Int, fileName: String): File? { val cacheFile = File(context.cacheDir, fileName) if (cacheFile.exists()) { // 可选:避免重复复制(注意更新策略) return cacheFile } return try { context.resources.openRawResource(rawId).use { input -> cacheFile.outputStream().use { output -> input.copyTo(output) ...
系统服务的实现方式
发表于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 开销,但不是标准系统服务 ✅ 二、针对你的场景:哪种最合适?你的...
构建jni_libs
发表于2023-09-16|系统
构建jni_libs 系统 App 本来就不该用 SDK 模式 —— SDK 模式是给第三方 App 或 SDK 库用的。 模式 特点 可见模块 平台模式(无 sdk_version) 用于构建系统镜像、系统 App 可见所有模块,包括 “libc++_shared” SDK 模式(有 sdk_version) 用于构建面向第三方 App 的库 只能依赖 NDK/SDK 公共模块,如 “ndk_libc++_shared”
开发方向之Framework层
发表于2023-06-04|系统
开发方向之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...
分区存储获取文件
发表于2023-03-24|系统
分区存储获取文件从 Android Jetpack 的 Activity Result API 开始,推荐使用 ActivityResultLauncher 来处理活动结果(如启动文件选择器或拍照等操作)。相比于传统的 startActivityForResult() 方法,ActivityResultLauncher 提供了更简洁、现代化的 API。 以下是使用 ActivityResultLauncher 和 Storage Access Framework (SAF) 获取文件的完整示例代码: 1. 使用 ActivityResultLauncher 启动 SAF 文件选择器123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android...
适配34广播动态注册
发表于2023-02-08|Code
适配34广播动态注册在target 适配到34之后, 要注意registerReceiver方法的第三个参数必须设置RECEIVER_EXPORTED或RECEIVER_NOT_EXPORTED,否则报错。12345678910111213141516/** * 适配14,动态注册需要加flag * @param context * @param receiver * @param filter */fun registerReceiverCompat( context: Context, receiver: BroadcastReceiver, filter: IntentFilter) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { context.registerReceiver(receiver, filter, RECEIVER_NOT_EXPORTED) } else { ...
蓝牙项目启动权限和蓝牙定位开关的问题
发表于2023-02-08|经验
蓝牙项目启动权限和蓝牙定位开关的问题蓝牙项目启动,想要顺利地使用蓝牙扫描和连接,分两种情况 Android 6以上到Android 12以下需要动态申请定位权限ACCESS_COARSE_LOCATION和ACCESS_FINE_LOCATION,两个都要申请 Android 12以上需要动态申请BLUETOOTH_SCAN和BLUETOOTH_CONNECT 完成上述权限申请后,还需要在6-12判断蓝牙和定位是否打开,12以上不需要打开定位也可以 申请动态权限,拒绝就提示进设置,同意就走下一步 判断蓝牙和定位开关是否打开
Android的支持库整理
发表于2023-02-08|经验
Android的支持库整理Android 支持库(Support Libraries)是一个集合,包含了多个不同的库,每个库都支持特定的 Android 版本和功能。随着时间的发展和技术的进步,这些库也在不断演变。以下是 Android 支持库的主要分类及其用途: Compatibility Libraries (兼容性库) v4 (support-v4):提供了核心兼容性功能,如 Fragment、ViewPager 等,使得开发者可以在低版本 Android 上使用较新的 API 功能。 v7 (appcompat-v7, recyclerview-v7, cardview-v7, 等):提供了更高级的 UI 组件和行为,如 Material Design 组件(Toolbar、CardView)、RecyclerView 等。 Material Components Library (材料组件库) material (material-components):包含了 Material Design 组件,如 BottomNavigationView、Floatin...
新版logcat的过滤关键字
发表于2023-02-08|经验
新版logcat的过滤关键字 package:匹配记录日志的软件包名,其中特殊值mine匹配当前打开项目对应的应用log。 level:与指定或者更高级别的日志匹配,比如debug或者error,输入level后as会自动提示可以选择。 tag: 匹配日志的tag字段 message:匹配日志中我们自己填写的message的部分。 age:让窗口中只保留最近一段时间的log,值为数字加单位,s表示秒,m表示分钟,h表示小时,d表示天 is: 这个键有两个固定的value取值,crash匹配应用崩溃日志,stacktrace匹配任意类似java堆栈轨迹的日志 process:匹配记录日志的进程名 正则相关tag:GUI 表示tag中包含“GUI”字符的-tag:GUI 表示tag中不包含“GUI”字符的 tag=:GUI 表示tag中等于“GUI”字符的(完全匹配)-tag=:GUI 表示tag中不等于“GUI”字符的 tag~:^(http)(com/)$ 表示tag中满足正则规则的(以http开头以com&...
Soong 构建系统原理
发表于2022-08-26|系统
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 的编译流程(原理详解)✅ 阶段...
1…345…11
avatar
Fleming Chen
不积跬步无以至千里,不积小流无以成江海。——《荀子·劝学》
文章
108
标签
35
分类
15
Follow Me
公告
欢迎来到我的博客,有任何疑问可以随时联系我交流讨论!
最新文章
AI编程工具全景对比2026-06-05
PJSIP Android 原生库与 Java 绑定编译指南2026-05-14
AI提示词生成技巧2026-05-06
交叉编译的含义2026-04-14
adb性能分析2026-04-08
分类
  • ADB12
  • Code19
  • Flutter1
  • Git10
  • Grep1
  • Linux5
  • React1
  • Repo2
标签
MVP sip Message 音频 EditText AlertDialog SQLite adb Markdown 学习路线 git unity 日常 系统 AsyncTask LruCache 开发工具 IDE 自学 Android 代码 扩展 缓存 Handler linux Dialog 系统广播 架构 UI flutter 数据库 react BroadcastReceiver Android Studio 经验
归档
  • 六月 2026 1
  • 五月 2026 2
  • 四月 2026 3
  • 二月 2026 2
  • 一月 2026 2
  • 八月 2025 3
  • 七月 2025 5
  • 六月 2025 1
网站信息
文章数目 :
108
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2016 - 2026 By Fleming Chen框架 Hexo 6.1.0|主题 Butterfly 5.5.4
搜索
数据加载中