自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (3)
  • 收藏
  • 关注

原创 [Android开发技巧] 通过avc日志自动生成selinux策略

当我们添加一个新的进程、或者移植一个新的平台时,日志中存在大量的selinux报错,根据日志手动添加selinux策略的方法就显得很笨且麻烦了。利用linux系统给我们提供的audit2allow工具,我们只需要抓取完整的日志,过滤出avc相关的报错,即可根据这些日志一次性生成对应的策略,然后添加到对应的te文件即可

2024-04-17 14:44:20 228

原创 [ Android实战 ] 通过uri删除文件

Android通过 uri 删除文件

2023-04-23 17:01:02 700

原创 [ Android 编译 ] Android.bp 根据条件添加宏定义

如果不需要添加控制逻辑,只是单纯地添加宏定义,直接在 Android.bp 对应模块的 cflags / cppflags 中添加 "-DXXX" 即可。但是如果需要添加控制逻辑,由于 bp 文件跟 mk 文件不同,它是纯粹的配置,没有分支等流程控制,所以只能通过编写 Go 语言实现。之前没接触过 go 语言,但是编程语言都是相通的,百度一下相关的文章,根据自己的实际情况进行修改,磕磕绊绊地也算是完成了这个需求,这里记录一下实现的整个流程。

2022-09-29 18:30:00 2866

原创 [ Android 编译 ] 如果不指定LOCAL_CERTIFICATE,默认使用哪个key进行签名

在未修改源码编译环境的情况下,系统源码中编译的应用,如果没有指定 LOCAL_CERTIFICATE:1、在 user 模式下就是用 build/target/product/security/releasekey.x509.pem 进行应用签名。2、在 eng / userdebug 模式下用 build/target/product/security/testkey.x509.pem 进行应用签名。

2022-09-28 10:04:40 2147 4

原创 [ Android 调试技巧 ] 为什么 content update 命令修改设置不生效?

开发以及定位问题的过程中,遇到 ContentProvider 相关的问题时,可以通过 adb shell content 的命令来进行调试。直接执行这个命令会在命令行打印它的用法(只截取了最常用的 update 和 query 的说明):...

2022-08-29 20:56:34 1045

原创 [ Android 调试技巧 ] 为什么 service list 打印出来的服务信息为空?

之前在开发调试以及定位问题的时候,经常会用到 `adb shell service list` 这个指令,用来查询系统服务,确认系统服务是否正常运行。但是执行命令过程中,经常会发现部分服务打印出来的信息为空。随便截取了命令执行结果的部分:...

2022-08-26 23:07:40 1533

原创 [ Android实战 ] 判断文件是否为软链接或硬链接

先介绍下硬链接和软链接的区别(这里只是简单科普一下,虽然不准确,但是方便理解,具体的解释可以自行百度):硬链接:假设 A 是 B 的硬链接,可以理解为 A 和 B 指向同一个文件 C。修改 A 或 B 时,都会进行同步,影响另一个文件的内容;删除 A 或 B,都不会影响另一个文件,只是节点链接数会减 1。。软链接:假设 A 是 B 的软链接,可以理解为 A 是 B 的快捷方式。修改 A 时,实际修改的是 B 的内容;删除 A 对 B 没有任何的影响;而如果删除 B,虽然 A 仍然存在,但是会导致 A 指

2022-03-05 10:06:50 2690

原创 [ Android实战 ] selinux 策略修改不生效的问题解决

前段时间移植系统应用到新平台的时候,发现存在一个selinux的问题。按照平时的方式加了对应的selinux策略后,依然会报同样的selinux权限错误。因此借此机会研究了一下selinux的问题,写下了此篇博客。

2022-03-01 23:33:30 7601 2

原创 [Android 源码分析] dumpsys 调试工具相关介绍

[Android 源码分析] dumpsys 工具相关介绍引言常见用法源码分析引言dumpsys 是 Android 系统中的一个可执行程序,可以用于查询系统状态、定位问题,调试过程中经常会用到。常见用法指令作用dumpsys -l列举所有支持 dumpsys 指令的服务dumpsys activity top查询最上层的应用dumpsys media.camera查询 Camera 的信息和使用情况dumpsys meminfo查看内存使用情况

2022-01-05 23:08:20 1748

原创 [ Android实战 ] java.lang.UnsatisfiedLinkError: No implementation found for xxx 问题解决

[ Android实战 ] java.lang.UnsatisfiedLinkError: No implementation found for xxx 问题解决背景日志分析解决问题总结尊重原创,转载请注明出处!创作不易,如有帮助请点赞支持~背景最近又开始调之前烂尾的一个项目,在我们的产品上调试一个外设。当时调到一半,基本功能已经调通了,结果因为某些原因停滞了。。。前几天,领导又要求重新调试。回过头来看项目,好家伙,一年多前写的代码已经基本不认识了,一看SDK,和之前调试的代码相比,API

2021-12-25 11:44:19 3400 3

原创 [ Android源码分析 ] PackageManagerService 系列—— childPackages 到底是啥

在研究 PKMS 源码的时候,有一个概念让我很在意,就是 "childPackages",在安装应用的流程中到处可见 childPackages 的身影,但是自己在开发过程中从来没有接触过它,网上资料也少得可怜,根本不知道是用来干嘛的。作为 PackageManagerService 系列的第一篇,今天我们先来看一看 childPackages 到底是啥?

2021-12-18 15:47:25 1344

原创 YUV 数据和 Bitmap 互相转换

YUV 数据和 Bitmap 互相转换

2021-12-17 19:25:05 4769

原创 关于 try-catch-finally 的总结

try-catch-finally 在开发中会经常用到,但是具体到一些场景,如果对它的理解不够深,就没法对代码的逻辑执行进行把控。以下的几种场景,你们都能正确地知道它的执行结果吗?

2021-12-17 14:40:46 465

原创 [ Android实战 ] android query: BufferQueue has been abandoned 问题解决

[ Android实战 ] android query: BufferQueue has been abandoned 问题解决背景日志分析尊重原创,转载请注明出处!背景最近在我们的 Camera 应用上发现一个问题,Camera 应用有一个设置页面,进入设置页面后连续按 back 键退回到预览页面,再退出应用回到桌面,概率性出现应用停止运行的崩溃问题。经过一天的定位,终于找到了问题的所在并修复了此问题,好久没写实战博客了,因此专门写一篇记录一下。日志分析抓了一份崩溃时候的日志,其中关键

2021-12-16 17:11:19 4780

原创 [ Android源码分析 ] Android注册、发送和接收广播流程总结

Android 广播发送和处理流程引言引言前段时间由于一个客户应用问题,研究了一下 Android 广播的发送和处理流程,专门写了一篇博客:开机时通过广播启动应用,但是很长时间才能接收到,如何解决?。但是由于当时的目的是为了解决静态注册的问题,所以博客中对动态注册广播的流程,以及很多的细节都忽略了,但是这一块同样很重要,所以又写一篇博客,对广播发送过程中静态注册和动态注册的差异做一个详细的分析。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加

2021-12-10 09:30:00 796

原创 [ Android源码分析 ] Android 广播队列中的 mParallelBroadcasts 和 mOrderedBroadcasts

[ Android源码分析 ] Android 广播队列中的 mParallelBroadcasts 和 mOrderedBroadcasts前言广播发送广播队列分发消息mOrderedBroadcasts 的串行是如何实现的尊重原创,转载请注明出处!前言在前面的博客 [ Android实战 ] 开机时通过广播启动应用,但是很长时间才能接收到,如何解决? 中,我们知道广播发送时,会根据广播类型广播发送Android 中的广播分为普通广播(sendBroadcast)、有序广播(sendOr

2021-12-07 14:09:18 665

原创 [ Android源码分析 ] 动态注册在源码中是如何实现的

[ Android源码分析 ] 动态注册在源码中是如何实现的前言应用实现方式动态注册调用流程发送广播给动态注册接收器总结尊重原创,转载请注明出处!前言静态注册的源码分析过了,动态注册的流程分析自然也得跟上。应用实现方式动态注册在应用中是通过调用 ContextWrapper.registerReceiver 来实现的。代码实现方式如下:IntentFilter filter = new IntentFilter();filter.addAction("com.example.broad

2021-12-03 21:10:15 1998

原创 [ Android源码分析 ] 静态注册在源码中是如何实现的

[ Android源码分析 ] 静态注册在源码中是如何实现的前言测试发送广播流程广播分发流程解决方案思考系统层面应用层面总结转载请注明出处!前言前段时间在做一个项目,在适配客户应用的过程中发现一个问题:客户在自己的 A 应用(Launcher 应用)中发送了一个广播,希望能启动另一个静态注册了该广播的应用 B。但是实测过程中发现,开机完成后 A 应用起来了,广播也很快发出了。但是过了 40~50 秒,B 应用才启动并接收到广播!这显然很不正常,按照之前的认知,通过广播启动应用在 Androi

2021-11-30 12:05:24 1618

原创 [ Android实战 ] 开机时通过广播启动应用,但是很长时间才能接收到,如何解决?

[ Android实战 ] 开机时通过广播启动应用,但是很长时间才能接收到,如何解决?背景测试发送广播流程广播分发流程解决方案思考系统层面应用层面总结转载请注明出处!背景前段时间在做一个项目,在适配客户应用的过程中发现一个问题:客户在自己的 A 应用(Launcher 应用)中发送了一个广播,希望能启动另一个静态注册了该广播的应用 B。但是实测过程中发现,开机完成后 A 应用起来了,广播也很快发出了。但是过了 40~50 秒,B 应用才启动并接收到广播!这显然很不正常,按照之前的认知,通过广

2021-11-23 15:32:22 5030

gson jar包合集.zip

手上的gson jar包合集,包括以下版本:gson-1.7.2、gson-2.2.4、gson-2.3、gson-2.7、gson-2.8.0、gson-2.8.1、gson-2.8.4、gson-2.8.5

2021-11-23

gson-2.2.4.jar

当前使用最火的json解析开源框架 Gson是一个Java类库,用于将Java对象转换为它们所代表的JSON数据,也可以用于将一个JSON字符串转换为对应的Java对象。

2017-09-15

Json-lib依赖的所有jar包下载

json-lib解析所需要的所有jar包。包括commons-beanutils-1.8.0.jar、commons-collections-3.2.1.jar、commons-lang-2.4-1.jar、commons-logging-1.1.1.jar、ezmorph-1.0.6-sources.jar、json-lib-2.4-jdk15.jar

2017-09-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除