Android
文章平均质量分 57
凯文的内存
誓要去 入刀山 浩气壮 过千关 豪情无限 男儿傲气...
展开
-
Android Settings增加多击事件,增加开发者模式打开难度
对付这种需求本来有多种方案,比如通过PKMS里边加一些签名或者包名校验,防止三方apk后装,之前的博客里有记录过该方法,本篇只针对settings打开开发者模式的方式做复杂化处理,因为这个入口如果完全屏蔽对开发者可能不太友好。这个改动设置一个标志位,在30s内点击相关栏10次才会设置,30s后次数自动清零重新累计,在该标志位设定后,原有的开发者模式多击才会生效,这里只是讲一个方法,具体哪个栏目可以灵活控制。软件平台:Android11。硬件平台:QCS6125。原创 2024-07-29 10:48:59 · 239 阅读 · 0 评论 -
android11 屏蔽usb通过otg转接口外接鼠标设备
考虑到屏蔽的层面可以从两个层面去做,一个是驱动层面不识别,一个就是Android系统层面不识别加载,本篇只讲后者。需求:Android设备通过接usb转接线连接鼠标功能屏蔽。可以看到,底层驱动识别后,EventHub也识别了设备一些类型属性,软件平台:Android11。硬件平台:QCS6125。原创 2024-07-18 18:48:34 · 636 阅读 · 0 评论 -
android 使用系统工具bootchart统计开机时长
然后,打开png图片,即可查看开机总时长,及关注的进程启动的时间点、系统资源占用等信息。需求:统计系统优化前后的启动时长差异。软件平台:Android11。硬件平台:QCS6125。原创 2024-07-09 14:15:31 · 391 阅读 · 0 评论 -
高通平台Android11 添加新分区的方法
鉴于此,决定重新创建一个分区,将logcat后台记录的日志文件全部移到此分区,由于此分区不参与recovery的双清操作,因此可保证系统再次启动后,该分区依然有recovery模式之前的日志文件,用来排查导致进入recovery模式的原因。我们这个分区的size定义为100M大小,这个可根据自己需要做调整。依次添加的为:生命device节点类型、添加到file上下文、添加开机阶段fsck的操作权限(否则挂载不上)、添加init进程访问节点权限、添加shell访问挂载目录的权限、添加vold挂载节点的权限。原创 2024-04-22 17:39:56 · 1352 阅读 · 0 评论 -
android11 添加实时记录logcat日志保存到data目录
这就实现了开机自启动记录logcat,并且设置了每个logcat文件的大小,和一共报错多少个logcat日志文件。需求:设备即将上线,需要后台实时采集logcat日志,保存到相应目录下,方便app端上传到服务器,从而分析问题。延伸开发:APP可在发现异常时,主动上传该日志,或者拿到问题设备,将日志取出分析。软件平台:Android11。硬件平台:高通QCS6125。原创 2024-03-19 17:24:09 · 542 阅读 · 0 评论 -
Android11 将logcat日志定位到uart串口输出
重新编译刷机即可验证,注意如果串口日志仍不是全量则需要确认内核printk的级别,shell进设备,执行echo 7 > proc/sys/kernel/printk,可以将内核日志级别设置为最低,即基本上所有等级的日志都会输出到串口。需求:如题,串口需要输出logcat的系统全量日志,我这里边是把logcat日志定向到了/dev/kmsg从而使logcat跟kmsg一样通过串口输出。软件平台:Android11。硬件平台:QCS6125。原创 2023-11-16 10:52:45 · 674 阅读 · 0 评论 -
Android11 添加adb后门
逻辑就是,三个物理按键短时间按的次数各达到三次,就设置一个prop属性,在连接usb线后,直接可adb shell调试。软件平台:Android11。硬件平台:QCS6125。原创 2023-10-18 16:42:21 · 867 阅读 · 0 评论 -
Android11 移植memtester压测内存
需求如题,从网上下载了memtest源码压缩包,准备放到系统源码编译,然后push到板子上执行,结果,编译出来一堆问题,报build err。编译好后push到android设备里面,测试前需先在android看里面设置环境变量。原创 2023-10-18 11:41:36 · 650 阅读 · 0 评论 -
默认开启“停用HW叠加层”开关,强制GPU渲染
因为开机默认状态,不会加载开发者模式的页面,因此在开发者模式的控制类是无法修改默认的,只能在开机必走的阶段执行使能,这里我选择的是FallbackHome这个类,每次在launcher启动之前都会调用这里,故选择该类。编译验证,刷机即可发现在开发者选项中,该项值已经默认打开了。原创 2023-02-05 15:18:08 · 7587 阅读 · 0 评论 -
Android11 修改默认系统语言为中文
不难看出,所谓的设置默认语言,只是把相应的语言配置到首位即可。原创 2023-01-30 16:46:25 · 1689 阅读 · 2 评论 -
Android11 添加HIDL接口编译报错
可以看到在prebuilts目录生成了两个lsdump文件,cd到相应目录,git status看到文件确实被修改了,git commit这俩文件即可,这样其他人sync下来,直接就会build通过而不再报这个错误。软件平台:Android11。硬件平台:QCS6125。原创 2023-01-16 10:28:25 · 2243 阅读 · 0 评论 -
android 添加vndbinder控制接口
可以大概看出,是vndservice可执行程序通过vndbinder调用同样注册vndbinder的display.qservice服务,后边跟的参数38代表功能接口的ID号即为一个方法,再往后的i32为该功能的参数数据类型定义为int32,再往后尖括号就是参数值。需求描述:通过adb命令行,同注册为vndbinder的服务通信,调用其相关接口,注册vndbinder的服务在HW层实现。在执行上述指令的同时,打开logcat日志,可以看到“======”标示的日志输出,代表数据通路没问题。原创 2022-12-24 11:10:40 · 1016 阅读 · 0 评论 -
android11添加自定义静态广播无法获取解析
android11添加自定义静态广播原创 2022-08-04 10:16:58 · 3395 阅读 · 0 评论 -
android studio中App项目,添加系统签名
AS添加系统签名3. 把x509.pem公钥转换成pkcs12格式:密码都是:android4.生成platform.keystore二 在Androidstudio的App项目中添加该证书1.2.以上,添加完成,这样通过AS即原创 2022-07-05 15:04:35 · 1031 阅读 · 0 评论 -
匿名共享内存(Ashmem)的使用
Android 进程间传输较大数据的方式转载 2022-03-24 11:22:57 · 1137 阅读 · 0 评论 -
Android11 全编译后无法生成framework.jar的解决方案
Debug 系统应用时,导入到 AS 会有大量报红代码,基本都是 framework 和新增模块的,需要导入对应的 jar 包才方便代码查看和跳转。一般来说,使用 Android 源码全编译之后,会生成 out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/classes.jar 。这个就是我们需要的 framework.jar (重命名一下),导入到 AS 里后,相关的代码就不会报红了。但有些代码编译之后没有生成这个,生成原创 2022-01-06 16:38:18 · 3996 阅读 · 1 评论 -
Android9.0 Framework层添加key事件
近日,开发新需求,内核层需要上报定制事件,简单来看就是使用系统现成儿定义好的,却没有使用的,结果这样操作后,发现上层UI会不自主的响应,返回或者上下左右控件切换等最终决定,在之前的键值范围新定义事件,就需要Framework层进行同步新增定制需求说完,直接上代码:diff --git a/api/current.txt b/api/current.txtindex 0e35fd6f86e..48e642d6d01 100644--- a/api/current.txt+++ ...原创 2021-08-25 10:30:53 · 539 阅读 · 0 评论 -
Android bootanimation制作和调试
bootanimation 动画替换调试1、创建bootanimation文件夹, 拷贝part0、part1、desc.txt三个文件到该文件夹里。2、在文件夹下执行 zip -r -0 bootanimation.zip part0 part1 desc.txt 命令3、使用adb 拷贝bootanimation.zip 替换机器中 /system/media/ 中的bootanimation.zip。(这一步需要root权限和重新挂载/system/分区)4、执行 setprop s.原创 2021-07-28 15:43:32 · 658 阅读 · 0 评论 -
Android9.0默认禁用锁屏功能
技术点Mark:完成的功能如题,diff --git a/system.prop b/system.propindex 252281f..0ffd005 100755--- a/system.prop+++ b/system.prop@@ -78,3 +78,6 @@ ro.hwc.disable_rotate_for_lcm=1ro.vendor.mtk_wfd_support=1ro.vendor.mtk_wfd_sink_support=1ro.vendor.m..原创 2021-07-28 10:26:42 · 505 阅读 · 0 评论 -
Android9.0系统中添加自定义系统服务给APP调用
软件平台:Android9.0硬件平台:Mtk8175 近日开发了一个产品需求,APP端需要控制硬件LED灯,由于是多个APP需要调用,固计划将控制接口做成System Service级别的服务,APP可以通过跨进程调用相关的方法,话不多说,开干:1、在frameworks/base/core/java/android/app/目录添加aidl接口文件,内容如下:/*** Lamp brightness controller*/package android.app...原创 2021-07-22 14:51:50 · 4860 阅读 · 2 评论 -
Android9.0 监听开机广播
软件版本:9.0Go硬件平台:MTK8175近日,需要在如上平台监听开机广播,Android高版本限制了开机广播监听的权限,这次我添加到了SystemUI中,方法如下:进入SystemUI源码目录,添加src/com/android/systemui/media/GeiniBroadcastReceiver.java类,内容如下:/** Copyright (C) 2010 The Android Open Source Project** Licensed under原创 2021-07-12 13:12:31 · 1519 阅读 · 0 评论 -
Android 8.1 应用安装过程总结
整体介绍一个 Android 应用安装到手机上大致分为四种情形:系统应用,在设备每次启动时完成安装通过 adb install 命令安装应用市场安装,封装安装过程(略)第三方应用安装或双击安装包,会启动系统应用引导安装无论采用哪种安装方式,最终的安装过程都会走到 PackageManagerService,由这个类来完成一系列的工作。PackageManagerService 实际上是一个系统服务,负责提供系统上所有应用的管理,包括安装、优化、查询和卸载,这个类最终会通过 socket 与转载 2021-05-25 15:35:54 · 1450 阅读 · 0 评论 -
Android 源码 installd 启动流程分析
installd 进程具有 CAP_DAC_OVERRIDE 特权(Privilege)。对于具有 CAP_DAC_OVERRIDE 特权的进程,Linux 会跳过文件的读、写和执行权限的检查。所以,installd 可以访问任何目录下的文件。system 用户则会受限。而 PackageManagerService 属于系统进程,system 用户并没有访问应用程序目录的权限,这就需要委托给 installd 处理。SystemServer 类 startBootstrapServices() 方转载 2021-05-21 19:29:21 · 911 阅读 · 0 评论 -
Ubuntu操作系统MTK刷机工具失败解决方案
Ubuntu平台MTK刷机工具报错:近来搭建Ubuntu环境开发,使用mtk平台的刷机工具下载到download DA就卡死,界面如下:试了各种方案,百思不得其姐,最后反馈给MTK,他们技术给出了答复如下:烧录前在ubantu上执行service ModemManager stop后重试,结果OOOOOOOOOOOOOOOKKKKKK了~~~~~~Mark一下!!!...原创 2021-04-22 17:36:14 · 1144 阅读 · 0 评论 -
Android虚拟机Art和Dalvik的区别
Android4.4版本以前是Dalvik虚拟机,4.4版本开始引入ART虚拟机(Android Runtime)。在4.4版本上,两种运行时环境共存,可以相互切换,但是在5.0版本以后,Dalvik虚拟机则被彻底的丢弃,全部采用ART。总之,一句话总结就是:采用ART预先加载代替用时查找以提升应用的性能。ARTART 是一种执行效率更高且更省电的运行机制,执行的是本地机器码,这些本地机器码是从dex字节码转换而来。ART采用的是AOT(Ahead-Of-Time)编译,应用在第一次安装的时候,转载 2020-11-30 20:29:42 · 1640 阅读 · 0 评论 -
android账号管理与同步机制
在应用中,很多app都有登陆注册功能,这样可以更好的管理个人信息,很多时候人们会使用sharepreference保存账户信息,把他经过加密写入文件中,这样既方便有简单。但是这样真的好吗?当服务器数据更新时,当一个应用具有多个账号时候,管理起来很不方便,并且安全性也不可靠。在Android2.0中加入了一个新的包android.accounts,该包功能十分强大,主要包括了集中式的账户管理API,...转载 2020-03-12 19:09:59 · 1580 阅读 · 0 评论 -
深入理解ContentProvider共享数据更新通知机制
前面一篇文章 深入理解Android四大组件之一ContentProvider 讲了ContentProvider的简单使用和它的启动过程.这里接着讲解一下关于ContentProvider共享数据更新通知机制.数据更新通知是很有必要的,比如我们在第二个应用程序中添加了一个联系人(接着上一篇文章例子),返回到显示主界面时,我们不会去更新列表数据,所以就没有刚刚添加的联系人信息,这样数据不同步...转载 2020-03-12 19:04:41 · 560 阅读 · 0 评论 -
MVP和MVC架构的区别
MVC模式和MVP模式的区别MVC模式: 1. MVC的所有通信都是单向的。 2.view传送指令到controller(用户也可以直接将指令传到controller)。 3.controller完成业务逻辑后要求model改变状态。 4.model将新的数据发送到view,用户得到反馈。MVP模式: MVP模式将Cont...转载 2020-01-15 09:22:56 · 337 阅读 · 0 评论 -
Android8.1 OTA升级之后Settings 新添加键值没有初始化
软件平台:Android8.1硬件平台:展讯问题:系统升级后,新添加的Settings键值没有更新至系统,经查发现Settings的数据库更新在SettingsProvider有更新触发条件,就是SETTINGS_VERSION和currentVersion两个值,这俩值是一个同步递增的过程,如果SettingsProvider更新了一些键值,而不递增SETTINGS_VERSION的值,...原创 2019-12-20 09:48:29 · 1341 阅读 · 1 评论 -
Battery驱动及framework架构分析(android4.2)
Battery驱动及上层数据流程fe原创 2014-08-19 10:42:11 · 1320 阅读 · 0 评论 -
Android之init启动流程(一)
本文着重分析android-init启动liuch原创 2014-08-21 14:41:19 · 1098 阅读 · 0 评论 -
Android wifi 从连接态自动断开的解决办法(dhcp导致)
对wifi部分的代码流程已经看了段时间,前两天终于解决了工作中遇到的一个wifi问题,问题描述及解决过程如下:硬件平台:iMx53软件平台:Android2.3bug描述:1,选中热点,输入密码之后,会显示“正在获取ip地址。。。”,之后变为已保存而没有连接。2,系统在wifi连接的前提下,重新上电,无法自动连接已保存的wifi热点。3,系统wifi连接后,过一段时间自动断原创 2014-08-11 11:33:00 · 10658 阅读 · 1 评论 -
Android之init启动流程(二)
Android启动部分本文接演init启动之Android部分原创 2014-08-22 10:21:39 · 798 阅读 · 1 评论 -
Android 编译出kernel的uImage无法正常载入
现象:硬件平台烧完机后,原创 2014-08-11 16:09:43 · 1118 阅读 · 0 评论 -
Android init开启的service简介
Android service启动分析原创 2014-08-26 14:49:30 · 2054 阅读 · 0 评论 -
android Settings添加多击事件
android每个版本都保函开发者无处不在的调侃的味道,今天浅谈多击“固件版本”preference之后,触发的机器人图片或动画。Android4.4版本的代码实现如下:if (preference.getKey().equals(KEY_FIRMWARE_VERSION)) { System.a原创 2014-12-04 09:31:48 · 1111 阅读 · 0 评论 -
android添加copy_files
软件版本:android4.4.3编译包过:$(shell cp -rf $(LOCAL_PATH)/logredirect $(TARGET_OUT)/bin/logredirect)原创 2015-02-09 09:36:45 · 629 阅读 · 0 评论 -
android4.4添加第三方apk
系统版本:android4.4添加某一第三方的apk至系统中,比如exaple.apk。如果在device目录的mk文件中如此添加:PRODUCT_PACKAGES += \ example \ 进行build会报错,印象中好像是从build/core/Makefile出来的错误,提示"use BUILD_PREBUILT instead"现将BUILD_PREBUILT的原创 2015-02-26 14:10:46 · 1626 阅读 · 0 评论 -
android4.4如何开机横屏
软件环境:android4.4硬件平台:marvell 之前调试过在android4.0上将屏幕开机旋转90度,找到了契合点,调整起来还是相对简单,只需设置一个名称为ro.sf.hwrotation = 90即可,android的surface系统显示的时候会读取该系统属性的值,从而将显示界面旋转,但是android4.4的surfaceflinger机制做了调整,自始至终没有发原创 2015-02-26 14:59:02 · 2549 阅读 · 1 评论 -
android4.4 framework添加第三方调用接口
近日,将第三方可执行文件封装成接口,移植到了系统中。现将曲折的成功之路做一个总结,与大家共享。软件平台:android硬件平台:marvell第三方可执行文件:AA, BB;工作需求:两个文件必须按顺序依次执行,完成功能,在framework层要提供相应的api接口,供应用程序调用。由于此接口与wifi相关,因此framework层面将接口添加到了WifiApManager.j原创 2015-03-11 15:12:57 · 3081 阅读 · 0 评论