自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 Android enforce_permissions_exceptions问题

先检查Enforce_permissions是否为true,如果为true,再检查aidl文件是否在ignoredAidlPermissionList列表里,如果不在列表里,那么添加"-Wmissing-permission-annotation -Werror" flag,后续检查的时候,如果不满足权限要求,就会报错。里面添加了很多原生framework的aidl文件豁免白名单,把我们自己的aidl文件添加进去就可以了。

2024-05-11 10:47:51 254

原创 ubuntu下使用反编译工具jadx

将下载的zip文件解压, 进入到jadx-1.5.0/bin目录,主要使用的就是jadx和jadx-gui这两个工具(如果是win环境,直接双击jadx.bat和jadx-gui.bat文件)jadx可以反编译出资源文件、原始java文件、AndroidManifest文件等。ubuntu环境下载这两个zip文件都可以,.(2)使用jadx反编译apk文件。(1)获取jadx工具包。

2024-05-09 09:31:43 335 1

原创 Android STS 问题分析

可以看出,分析STS问题的重中之重就是找到对应的Security Patch,确认对应的Patch是否合入并生效,下面主要分析如何找到对应的Security Patch。这种类型的fail项一般显示为:android.security.sts.CVE_2022_20124#testPocCVE_2022_20124。找到对应的Security Patch之后,确认Patch是否合入并生效,这就是STS一般的处理流程。(1)检查对应的Security Patch是否合入,没有合入则合入对应的Patch。

2024-04-02 11:27:39 216

原创 Android Framework Overlay

product/overlay/framework-res__auto_generated_rro_product.apk(如果是PRODUCT_PACKAGE_OVERLAYS方式引用)vendor/overlay/framework-res__auto_generated_rro_vendor.apk(如果是DEVICE_PACKAGE_OVERLAYS方式引用)在.mk文件中搜索PRODUCT_PACKAGE_OVERLAYS或者DEVICE_PACKAGE_OVERLAYS关键字。

2024-03-26 18:28:22 258

原创 解决Android U上应用无法安装问题

最近在做Android U的升级项目,有一款跑分软件A1 SD Bench在U以前的平台可以安装,但是在U上无法安装,显示:This app isn\'t compatible with your TV.方案一、修改应用的targetSdkVersion>23。

2024-03-25 09:59:56 678

原创 Android 引用共享库的方式

所有的android软件包(如android.app,android.content,android.view和android.widget)都在默认库中,所有应用程序都会自动链接。但是,某些新增的jar包位于不自动链接的单独库中,应用程序不会自动链接,下面主要分别介绍应用程序和jar包引用共享库的方式。dependency对应的就是共享库Test.jar,这样就成功为jar包链接共享库了。这种就是一个jar包引用另外一个共享库jar。com.xxx.xxx表示共享库的名称。2.jar包链接共享库。

2024-03-22 17:40:32 232

原创 AndroidRuntime: java.lang.NoClassDefFoundError: Failed resolution of:xxx问题分析(源码环境)

该元素告诉系统将库的代码包含在包的类加载器中。在这个路径下查找java 库中对应的类是否存在,如果不存在,那么说明你需要的类没有编译出来,需要进一步确认类为什么没有编译出来,是路径错误或者是拼写原因,或者时引用时的注释问题。这种会把后面的一起注释掉,所以这种添加多个jar包时尽量不要注释,直接删掉,或者将需要的jar包挪到最上面,避免因注释而导致下面的jar包无法被添加。这种方式引用的java库在编译时可以找到,但并不打包到本模块,在运行时需要从别的地方查找,所以一般会生成一个单独的jar包。

2024-03-22 17:15:42 499

原创 ProtoLog动态日志

ProtoLog是从Android R开始引入的日志框架,使用此框架,我们可以对指定类别的日志进行动态的开启或暂停。目前,主要是wm相关的动态日志。可以看到当使用命令开始收集日志,操作设备后,停止收集,会在/data/misc/wmtrace/目录下生成一个wm_log.pb文件,使用enable命令启用proto log时,还需要通过start命令将log输出到wm_log.pd文件中。在设备中的/system/etc/目录下有个protolog.conf.json.gz文件。

2023-11-22 15:19:56 314

原创 requestFocus无法获取焦点

调用此方法可以将焦点集中到特定view或其子view之一。可以看到,如果我们只通过调用requestFocus()方法去获取焦点,那么如果当前处于touch mode,并且view没有设置foucusableInTouchMode="true"属性则无法获取焦点。问题描述:插入鼠标后,滑动鼠标,然后调出系统的关机菜单,菜单无法获取焦点,即使使关机菜单的view主动调用requestFocus方法,仍然无法获取到焦点。1.代码中主动调用view.requestFocusFromTouch()方法。

2023-11-17 10:14:46 230 1

原创 Context

我们在实际开发中,当我们需要访问资源或者启动一个Activity都会用到Context。那么这个Context到底是什么呢?它代表当前程序的运行环境。Context是一个抽象类,里面定义了很多有关应用程序环境的全局信息的接口。通过这个类,我们可以访问访问应用程序的资源和类;以及对应用程序级操作的调用,例如启动Activity、广播和接收intent等。

2023-10-31 15:55:36 61 1

原创 窗口类型Window type

我们在实际过程中,经常会遇到不同的窗口,Activity、Dialog、Toast、输入法界面等,窗口可以分为三大类:Application Window、Sub Window、System Window。下面简单介绍下窗口的三大类型。窗口类型定义在WindowManager.java的内部类LayoutParams中,类型如下。

2023-10-23 16:05:10 100

原创 跳转到google应用商店的APP详情界面

【代码】跳转到google应用商店的APP详情界面。

2023-10-10 14:47:29 591 1

原创 如何在Android.mk文件里添加log

launch product之后,则会打印出PRODUCT_PACKAGES的值。编译时,在lunch product阶段就能打印出日志。想打印PRODUCT_PACKAGES的值,只需要添加。

2023-09-14 16:17:48 669 1

原创 overlay配置global key不起作用问题

最近在做Android 高版本的TV项目,需要做自定义的global key,主要是在global_keys.xml的overlay文件里配置自定义的按键处理器。原生的这个文件路径在frameworks/base/core/res/res/xml/global_keys.xml,我们自定义的overlay目录在device/product/common/overlay/frameworks/base/core/res/res/xml/global_keys.xml以前低版本项目也做过同样的功能,直

2023-09-13 15:37:31 264 1

原创 dumpsys power的属性含义

【代码】dumpsys power的属性含义。

2023-08-30 14:29:50 250

原创 linux下go环境搭建

当前最新版本是go1.21.0版本,可以看到linux系统需要下载的是go1.21.0.linux-amd64.tar.gz包。然后通过source $HOME/.profile或者source /etc/profile使配置生效。将以下行配置添加到 $HOME/.profile 或 /etc/profile。如果/usr/local路径存在go文件夹,需要先删除这个文件夹。通过go version查看go语言是否安装成功。输入:go run HelloWorld.go。5.运行go文件例子。

2023-08-29 15:37:59 1035 1

原创 ANR机制----基于Android R流程

5秒内无法响应屏幕触摸事件或键盘输入事件= null?return -1;:在执行前台广播(BroadcastReceiver)的函数时10秒没有处理完成,执行后台广播为60秒没有处理完成。:前台服务20秒内,后台服务在200秒内没有执行完毕。:ContentProvider的publish在10s内没进行完。

2023-08-28 17:05:27 193 1

原创 Android.bp/mk的常见语法对比

Android.mk和Android.bp文件中的一些常见属性的对应关系可以参考:build/soong/androidmk/androidmk/android.go文件。vendor: true或者。

2023-08-24 15:07:39 537 1

原创 golang学习网址

官网:The Go Programming Languagegolang学习中文网:https://studygolang.com/golang标准库文档:Go语言标准库文档中文版 | Go语言中文网 | Golang中文社区 | Golang中国

2023-08-09 10:35:23 112 1

原创 Android 11----SystemConfig.java解析

这个方法主要是对目录的权限进行检查,然后遍历目录下的文件,其核心方法还是调用readPermissionsFromXml()方法读取xml类型文件里面的各个节点,例如:premission、features、library等,然后将解析的结果分别放到SystemConfig对应的数据结构里。platform.xml文件放到最后读取。SystemConfig.java是PKMS里一个很重要的类,用来解析一些系统配置信息的,然后将解析的结果赋值给SystemConfig里的各个数据结构,供我们查询。

2023-07-24 11:35:08 672

原创 FrameworkStatsLog

所以FrameworkStatsLog本质上也是用于将数据传递到statsd上,我们可以通过调用FrameworkStatsLog.java里的write()方法来对事件进行打点。genrule是用来生成文件的,当编译引用它的jar包时,会生成对应的文件,所以FrameworkStatsLog.java这个文件可能是按照某种编译规则生成的。(1)tools:表示可在命令行下运行的jar包,即指定main()入口的jar包,这里是。执行tools指定的jar包的cmd命令,使用这个命令可执行jar包。

2023-07-19 19:52:16 1242 1

原创 android 11 Handler消息机制

我们都知道进程间通信一般是用binder、文件、AIDL等,那么线程间通信一般是如何进行的呢?一般通过Handler消息机制来进行线程间的通信,标准的一个场景就是子线程进行耗时操作(网络、下载等),完成后发送消息去通知主线程更新UI。Handler消息机制中主要有四大成员,它们的主要功能如下:Handler:消息处理器。可以发送消息Handler.sendMessage()和处理消息Handler.handleMessage()。Message:消息对象。线程间通信的数据单元,Message可携带数据。

2023-07-18 16:33:40 665 1

原创 Launcher界面的启动流程

基于Android R源码流程。

2023-07-13 16:57:57 328

原创 stop应用无法收到广播问题

原因:Android在3.1以后将新安装并且从未被启动的应用置为“STOPPED”状态,这种状态指那些安装了但从未启动过的apk,或在settings中被force stop的apk,这种状态下的应用是无法接收到广播的(IntentResolver.buildResolveList)。1.excludingStopped:设置了FLAG_EXCLUDE_STOPPED_PACKAGES标识,默认设置,所以一般情况下stopped应用都无法接收到广播。包含stopped状态下的package。

2023-07-13 16:51:39 368

原创 源码里mk文件转换成bp文件

可以使用源码里的out/soong/host/linux-x86/bin/目录下存在androidmk文件进行转换。2.如果out/soong/host/linux-x86/bin/目录下不存在androidmk文件。1.如果out/soong/host/linux-x86/bin/目录下存在androidmk文件。./androidmk android.mk文件路径 > 需要生成的android.bp文件名称。先m -j blueprint_tools生成androidmk文件。继续第一种情况的步骤。

2023-07-13 16:42:51 589

原创 四大组件对OOM_ADJ的影响

(1)若进程A查询进程B的provider得到Cursor,在进程A关闭Cursor之前,ActivityManager会保持provider connection,此时B的OOM_ADJ将提升至与A相同。(1)若进程A bind 住进程B 的service,ActivityManager会将B的重要性提升至与A 相同。如果A使用完服务后,忘了调用unbindService(),B的重要性就降不下来,极端情况是,若A是常驻的,会导致B也变成常驻了,引发系统性内存问题.执行onReceive() 时。

2023-07-13 16:14:13 237

原创 force-stop流程

(1).onForceStopPackage():强制停止该package,主要是没有绑定进程的activities,绑定进程的activity会随着进程消亡而消亡,第一步执行这个方法主要是为了防止这个package中中没有绑定进程的activity重新启动该package。一般地force-stop会指定包名,该方法会遍历当前所有运行中的进程mProcessNames,以下条件同时都不满足的进程,则会成为被杀的目标进程:(也就是说满足以下任一条件都可以免死)可以通过adb命令和设置中的入口来使用。

2023-07-13 16:07:48 1863

原创 AMS流程分析

基于android R流程,代码较多。

2023-07-13 14:56:55 434

空空如也

空空如也

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

TA关注的人

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