自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(141)
  • 资源 (8)
  • 收藏
  • 关注

原创 product 分区和权限

permissions.xml文件必须与特权应用位于同一个分区中。----之前有遇到过,应用在product分区,然后在system分区的permissions.xml文件中声明签名/特权权限导致不生效。在特权应用/system分区中放置permissions.xml文件不会将这些权限扩展到/product分区中的特权应用,即使前者是后者的扩展也不例外。在Android9及更高版本中,权限和列入白名单过程的更改会影响product分区上授予特权应用权限的方式。...

2022-08-01 14:25:29 1888 1

原创 查看Settings中的值

/package代表这个值是谁赋值的,如tv_user_setup_complete就是com.google.android.tungsten.setupwraith给赋值的。(如settings_system.xml,settings_secure.xml,settings_config.xml,settings_global.xml等)所有的Settings值都保存在/data/system/users/0/路径下的各个settings_xxx.xml文件中。3.设置(不存在就增加)一个指定的值。...

2022-07-25 18:54:00 1640

原创 开机动画制作及多分辨率适配

c115part1代表该片段显示1次,显示后暂停15*(1/60)=0.25s,该片段的显示图路径为bootanimation.zip/part1。p00part4代表该片段无限循环显示,与下一个片段间隔0s,该片段的显示图片路径为bootanimation.zip/part4。c10part0代表该片段显示1次,与下一个片段间隔0s,该片段的显示图路径为bootanimation.zip/part0。第2个数字为该片段重复显示的次数,如果为‘0’,表示会无限重复显示;...

2022-07-25 18:44:41 1300

原创 常用selinux debug方法

可以先dmesg-C,清空kernellog,然后执行相应的操作,接着再看dmesg,查看是否有selinux报错信息。cat/proc/kmsg|grepavc//查看kernel中的SELinux权限报错。cat/dev/kmsg|grepavc//查看kernel中的SELinux权限报错。

2022-07-25 18:32:05 519

原创 拷贝文件时FileNotFoundException:Permission denied

最后分析是跟要打开的文件(data/xxxxxlog/logcat.log)的权限有关,查看文件的权限,只是普通的-rw-------;通过chmod777/data/xxxxxlog/logcat.log后,可以拷贝不会报错。应用是系统应用,且sharedUserId为android.uid.system;该给的权限也都给了,selinux关闭后也有同样的问题。...

2022-07-25 18:10:19 931

原创 使用命令启动init.rc中的service:setprop ctl.start xxxservice

在串口中输入setpropctl.startxxxservice来启动init.rc中定义的service。通过property_set("ctl.start",service_xx);来启动init.rc中的service。

2022-07-25 17:01:09 910

原创 快捷编译----编译frameworks/base&services时不编译odex

编译frameworks/base和services的时候,修改一下android.bp,不编译odex:Android.bpandroid_app{ //添加下面配置dex_preopt:{...

2022-05-09 20:37:14 585

原创 Android R上curl和wget等无法使用的解决办法

1.问题sh脚本文件中使用到了curl和wget,在编译的时候出现了异常:11:00:44 Disallowed PATH tool "curl" used: xxx ... ...11:00:44 See https://android.googlesource.com/platform/build/+/master/Changes.md#PATH_Tools for more information....11:00:44 Disallowed PATH tool "wget" used: x

2022-03-05 15:38:59 4111

原创 2022,新的一年,加油

2021,过得很艰难。卖房,买房,巨亏就不说了,还差点被中介坑走中介费,甚至都找了当律师的同学,还好保留了证据,最后中介公司撤诉。。。公司欠薪,本来应该开始欠薪的时候就撤的,奈何太单纯相信了公司,结果欠薪三个多个月。。。接着急急忙忙找工作,离职,准备仲裁,大龄女程序员找工作的辛酸史就不细说。。。父亲肾结石手术,镇上医生误诊把淋巴结说成疑似癌症担心受怕,还好去大医院检查没事,湿疹持续半年很严重看很多医生吃很多药没有好转,还好最后找了个熟人老医生,湿疹得到了控制。。。孩子在迪卡侬买东西的时候

2022-01-18 20:13:28 2073 1

原创 Activity相关类及startActivity流程总结----基于Android Q

1.Activity相关类介绍(1)ActivityRecordActivity由ActivityRecord表示。一个ActivityRecord对应一个Activity,保存了一个Activity的所有信息。一个Activity可能会有多个ActivityRecord,因为Activity可以被多次启动,这个主要取决于其启动模式。ActivityRecord中存在着大量的成员变量,包含了一个Activity的所有信息.ActivityRecord中的成员变量task表示其所在

2021-12-24 12:48:49 2136

原创 PackageManagerService介绍----基于Android Q

1.PKMS功能概述PackageManagerService是系统的核心服务之一,负责系统中Package的管理,应用程序的安装、卸载、信息查询等。2.类继承结构图IPackageManager:接口类,定义了服务端和客户端通信的函数以及Stub(从Binder派生并实现IPackageManager接口),在编译过程中由IPackageManager.aidl文件生成。PackageManagerService: 继承 IPackageManager.stub,具体实现功能类,是

2021-12-24 10:27:40 3436

原创 Apk安装流程----基于Android Q

基于Android Q,以普通三方应用通过PackageInstaller进行安装的安装流程为例来进行分析。1.Apk文件结构2.PackageInstaller中的Activity介绍以及流程(1).相关Activity介绍InstallStart:入口,以及通过不同的协议(content,package等)启动InstallStaging或是PackageInstallerActivity。content uri: InstallStagingpackage uri: Pa.

2021-12-24 10:02:19 3295

原创 Android bp 介绍

filegroup: 文件组(功能相对独立的一组源文件集合,可供编译目标srcs直接使用)name:编译目标名称java_library:编译目标jarinstallable:是否可安装(控制是否输出or只编译中间件)compile_dex: 是否进行odex优化;sdk_version: sdk版本srcs:源码路径;aidl: 编译所依赖的aidl;libs: 编译所依赖的动态库;...

2021-12-23 14:15:29 1094

原创 DirectBootAware分析

1.android:directBootAware在Android M及之前,在开机启动到锁屏界面时,所有程序阻塞,等待用户解锁(即使未设置开机密码,也需要滑屏解锁)后才会继续。Android N引入的新特性:Direct Boot Mode:设备启动后进入的一个新模式,直到用户解锁(unlock)设备此阶段结束。Direct Boot模式下,仅限于运行一些关键的、紧急的APP,比如:Apps that have scheduled notifications, such as alarm cloc

2021-12-23 14:10:39 4816

原创 预置app时mk文件中的编译问题

1.预置应用的时候,没有指明LOCAL_MODULE_CLASS的值,编译出现了异常:build/make/core/base_rules.mk:200: error: vendor/xx/presetresources/presetapp/XXXXX: LOCAL_MODULE_CLASS must contain exactly one word, not ""有的Android.mk文件中有指定LOCAL_MODULE_CLASS的值(一般是预置.apk文件的时候),有的Android.mk文件中

2021-12-23 11:20:33 1591

原创 应用对系统的跨进程调用次数太多,超过了系统规定的阈值,导致应用被Kill

1.问题描述:【Super Cleaner-Antivirus..】【必现】【非单机问题】点击进入软件,软件闪退2.根本原因从log来看,是由于应用发送了太多Binder给系统,也就是应用对系统的跨进程调用次数太多,超过了系统规定的阈值,导致应用被Kill。05-29 12:04:32.364 1218 1374 E ActivityManager: Uid 10109 sent too many Binders to uid 100005-29 12:04:32.365 1218 1374

2021-12-23 09:47:40 3302

原创 安装应用手机内部存储不足时弹框流程

安装应用时,手机内部存储空间不足的弹框流程:1.手机内部存储空间阈值为500M:StorageManager.java中: /** * Return the number of available bytes at which the given path is * considered running low on storage. * * @hide */ public long getStorageLowBytes(File

2021-12-23 09:31:03 1337

原创 adb常用命令

1.adb shell screenrecord /sdcard/demo.mp4 //录屏 adb shell /system/bin/screencap -p /sdcard/screenshot.png //截图2.adb logcat -b events -v time > logEventxxx //打印event log3.adb shell am stack list //打出栈信息从而判断...

2021-12-22 15:34:38 3740

原创 ninja编译

1.ninja命令安装:项目中执行~/KXXXAA1/android/:mkdir -p ~/bin ~/lib64cp prebuilts/build-tools/linux-x86/bin/ninja ~/bin/cp prebuilts/build-tools/linux-x86/lib64/libc++.so ~/lib64/cp prebuilts/build-tools/linux-x86/lib64/libjemalloc.so ~/lib64/bashrc文件最后增加命令f

2021-12-22 15:25:01 1317

原创 修改多用户图标后OTA升级没生效

1.问题:修改多用户中机主的图标,刷机生效了,但是OTA升级没生效。2.具体描述直接替换的资源:/frameworks/base/core/res/res/drawable/ic_account_circle.xml刷机是OK的;未修改之前的版本差分升级到修改后的版本的framework-res.apk,和直接刷机到修改后的版本的framework-res.apk,反编译后,ic_account_circle.xml是一样的,说明ota以后资源已经更新了,但是显示效果并没有生效。3.分析由于

2021-12-15 16:46:39 1202

原创 通知栏提示应用正在运行通知----如何屏蔽此通知

1.问题:打开应用,通知栏提示“xx应用”正在运行,且应用只要在运行,此通知一直显示,不会消失,手动也不能删除,除非杀死应用,如新浪财经的提示:2.此通知弹出的逻辑 关于前台服务: 在系统内存资源不足的情况下,会优先杀掉低优先级的进程。对于只有service的进程,有些情况对于用户来说是可感知的app。往往不希望被系统所杀,比如正在听音乐。 系统默认service都是后台的,可以通过startForeground()把该service提升到foreground优先级,那...

2021-12-15 13:53:09 4559

原创 签名权限没有申明导致机器起不来的问题

常见的一些signature|privileged permissions:DELETE_PACKAGESINSTALL_PACKAGESMANAGE_USERSUPDATE_APP_OPS_STATSBATTERY_STATSWRITE_SECURE_SETTINGSWRITE_MEDIA_STORAGE...等等这部分权限也需要在AndroidManifest文件中声明。在AndroidManifest文件中声明后,需要在frameworks\base\data\etc\priva

2021-12-15 10:10:53 1702

原创 Android 11 权限更新

在 Android 11 中,用户能够针对位置信息、麦克风和摄像头指定更精细的权限。此外,如果以 Android 11 或更高版本为目标平台的应用在一段时间内未使用,系统就会重置这些应用的权限。如果应用使用系统提醒窗口或读取与电话号码相关的信息,可能需要更新它们声明的权限。单次授权从 Android 11 开始,每当应用请求与位置信息、麦克风或摄像头相关的权限时,面向用户的权限对话框会包含仅限这一次选项。如果用户在对话框中选择此选项,系统会向应用授予临时的单次授权。 自动重置未使用的应...

2021-10-15 14:04:52 2606

原创 判断应用是否在最上层运行的几种方法

方法一:通过获取最上层Activity的包名来进行对比private String getTopActivityPkgName() { String topPkgName = ""; //get top activity package name ActivityManager am = (ActivityManager) mContext.getSystemService(mContext.ACTIVITY_SERVICE); ComponentName comp =...

2021-05-14 15:22:05 1327 1

原创 系统预置三方应用so库加载失败:System.err: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol...

1.问题:预置三方应用到system/app目录,且保持应用的签名即LOCAL_CERTIFICATE := PRESIGNED;预置成功后,使用应用过程中,应用闪退。但是直接安装(adb install或是把apk放在文件管理器中然后进行安装)不存在此问题。2.关键Log:12-22 19:33:30.664 10290 10290 W System.err: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol

2020-12-29 14:25:00 5295 7

原创 开机重启桌面小部件widget加载慢

问题:开机启动/重启的时候,桌面小部件widget加载慢。原因:开机启动/重启手机的时候,系统拉起相应进程(需要widget的进程)的时间比较晚,导致创建widget的时候有延迟。修改:frameworks\base\services\appwidget\java\com\android\server\appwidget\AppWidgetServiceImpl.javaprivate void sendEnableIntentLocked(Provider p) { Intent in...

2020-12-28 17:03:39 1165

原创 Android权限 - AppOps介绍

1.介绍frameworks\base\core\java\android\app\AppOpsManager.javaframeworks\base\services\core\java\com\android\server\appop\AppOpsService.java/** * API for interacting with "application operation" tracking. * * <p>This API is not generally intended

2020-12-19 17:28:31 6421 6

原创 dumpsys activity 相关命令解析

相关命令:adb shell dumpsys activity-------------------AMS所有信息adb shell dumpsys activity activities--------Activity组件信息adb shell dumpsys activity services----------Service组件信息adb shell dumpsys activity providers---------ContentProvider组件信息adb shell dumpsys

2020-12-19 14:38:15 2007 1

原创 悬浮窗启动应用延迟: Activity start request from 10144 stopped

1.问题进入百度地图,开启导航,按home键回到桌面,此时在桌面出现一个百度地图的悬浮窗,点击小窗口进入百度地图;进入到百度地图主界面用时较长。2.log及分析按home键回到桌面,在桌面出现一个百度地图的悬浮窗:表示APP在后台运行;按Home键回到桌面,在桌面点击百度地图图标进入,不会延时启动;//点击悬浮窗10-22 09:01:10.040 6357 6357 I View : performClick --this:android.widget.LinearLayout{...

2020-10-22 17:34:42 1452

原创 应用启动速度优化总结

1.应用启动的三种方式(1)冷启动冷启动代表app从数据完全被擦除的状态启动的过程,在此之前,app所属的进程还未被创建。冷启动一般发生在系统重启后或者app被系统杀死后app首次被启动。冷启动分为以下三个步骤:①加载并启动app;②启动后展示系统配置的空白Window;③创建app进程。在创建完app进程后,则会进行下面几个步骤:①创建app用到的对象;②启动主线程(UI线程);③创建app的main activity;④加载activity的view;⑤布局屏幕;⑥完成首帧的绘制(2)温

2020-10-22 17:31:01 1673

原创 Android权限 - 动态权限申请系统流程

话不多说直接上流程图:1.checkSelfPermission2.requestPermissions因为都不是很复杂的流程,所以也咩有太多需要说明的,除了以下两点需要稍微知道下,算是自己记录下:1.在checkSelfPermission流程中调用到ActivityManager(frameworks\base\core\java\android\app\ActivityManager.java)中的方法checkComponentPermission比较重要在这个方法.

2020-05-08 19:19:28 1257 1

原创 Android权限 - PermissionsState BasePermission等相关类介绍

1.PermissionInfo对应的是AndroidManifest(这里的AndroidManifest.xml是指\frameworks\base\core\res\AndroidManifest.xml))文件中permission标签。如在使用READ_CALL_LOG权限的时候,那么系统就可以知道READ_CALL_LOG权限相应的PermissionInfo。/*** I...

2020-05-05 16:35:42 1612

原创 Android权限 - avc权限问题

1.一般来说,如何确认是Selinux权限引起的问题?通过命令adb shell getenforce,查看Selinux状态adb shell getenforceEnforcing //1Permissive //0如果为Enforcing,则使用命令adb shell setenforce 0,设置成Permissive mode,如果设置成Permissive mode后没有问...

2020-05-05 11:09:22 4112

原创 Android权限 - 默认授予应用运行时权限方法

在DefaultPermissionGrantPolicy.java文件中,进行默认授权;* This class is the policy for granting runtime permissions to* platform components and default handlers in the system such* that the device is usabl...

2020-04-30 17:12:54 2683

原创 Android权限 - 查看应用权限信息

1.通过命令查看应用权限:adb shell dumpsys package "xxx.xxx.xxx" //如adb shell dumpsys package com.tencent.androidqqmail重要的权限debug命令。得到的信息的具体解释见以下内容。2.应用中权限的分类:(1).自定义权限Permissions: Permission [com.and...

2020-04-30 16:54:30 10276

原创 Android权限 - 动态权限申请步骤

动态权限申请步骤1.清单配置需要的权限:在AndroidManifest.xml中申请需要的权限如:<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.snazzyapp"> <uses-permission andr...

2020-04-30 16:07:41 3520 1

原创 Android权限 - 权限分类

1.andriod6.0权限 andriod6.0系统把权限分为两个级别:  (1)Normal Permissions,即普通权限,这类权限不会潜藏有侵害用户隐私和安全的问题,比如,访问网络的权限,访问WIFI的权限等;  (2)Dangerous Permissions,即危险权限,这类权限会直接威胁到用户的安全和隐私问题,比如说访问短信,相册等权限。  权限组:普通权限是单条...

2020-04-30 15:56:17 6204

原创 adb shell stop & adb shell start

在调试的过程中,经常遇到需要修改系统属性值:setprop xxx.xxx.xxx,但是修改后,如果重启就没效啦。而且如果没重启,会遇到属性值在代码中不生效,重启后,属性值又还原的矛盾;且有时候又确实需要修改属性值后重启机器的需求,如修改了setenforce的值但是又想系统重启下重启则值会还原。那怎么办呢?使用下面两个命令来解决这个烦恼吧~可以打开新世界哦~adb shell stop...

2019-10-17 16:17:38 8269

原创 uid gid pid appid等的区别

1.uidandroid中uid用于标识一个应用程序。uid在应用安装时被分配,并且在应用存在于手机上期间,都不会改变。一个应用程序只能有一个uid,多个用户可以使用sharedUserId 方式共享同一个uid,前提是这些应用的签名要相同。Uid是在apk安装的时候确认的,具体代码可以参考:frameworks\base\services\core\java\com\android\se...

2019-09-16 16:53:09 3457

原创 应用app把user系统识别为root设备导致不能正常使用

最近遇到的一个比较怪异的问题:中国建设银行app的4.1.6版本开始,把我们的user版本识别为root设备,导致中国建设银行app不能正常使用。(银行类app会比较容易出现这类问题)解决思路:1.对于系统来说,三方应用应该只能是通过判断属性值来确定系统是否是root设备,所以最开始在SystemProperties.java中的get方法都加上log,这样只要应用获取了哪个属性,都会...

2019-06-27 20:34:01 6609

空空如也

空空如也

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

TA关注的人

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