自定义博客皮肤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)
  • 资源 (1)
  • 收藏
  • 关注

原创 AOSP12非SDK接口限制放开

因工作原因需要将自己增加的一些接口暴露给第三方应用使用,此时我们需要改动AOSP源码。使用Android非sdk接口时。

2023-05-23 20:13:31 505 1

原创 [Android源码分析] 一.系统启动-init启动流程梳理

init启动流程梳理

2022-12-01 16:38:19 553

原创 Android调试技巧-java、c、c++调用栈查看方法

Android调试技巧-java、c、c++调用栈查看方法

2022-08-19 17:11:58 1663

原创 命令查看当前界面的Activity和Fragment

查看别人代码时,常常需要快速定位当前界面是哪实现的,为此我们可以使用如下命令:查看顶层Activityadb shell "dumpsys activity -v top | grep ACTIVITY"查看顶层Fragmentadb shell "dumpsys activity -v top | grep '#0: ' | tail -n 1"...

2022-04-15 17:09:28 3051

原创 记一次Android OOM问题

问题背景:新平台固件测试后,反馈一个OOM的问题。问题日志如下:3944 3959 I: Clamp target GC heap from 280MB to 256MB3944 3959 I: Alloc concurrent copying GC freed 0(0B) AllocSpace objects, 0(0B) LOS objects, 0% free, 256MB/256MB, paused 173us total 383.632ms3944 3944 I: WaitFo

2022-04-02 17:47:43 5963

原创 Android 证书安装流程分析

一.证书在源码中的路径5.1系统证书(命名是 openssl x509 -subject_hash_old -in filename)libcore/luni/src/main/files/cacerts7.1及以后系统证书/system/ca-certificates/files二.证书在固件中的路径/system/etc/security/cacerts三.手动安装流程设置-->安全-->从SD卡安装证书:在AndroidManif.xml里<Prefe

2021-12-06 18:09:45 6892

原创 Android Studio Arctic Fox使用问题汇总

一.Android Gradle plugin requires Java 11 to run.1.安装jdk 112.Android Studio - File -Settings按如下设置后,重启Android Studio二.Gradle面板没有Task任务列表Android Studio - File -Settings,取消"Do not build Gradle task list during Gradle sync"...

2021-11-19 15:49:03 2260

原创 [Android实战篇] 域名定位

上回讲到用tcpdump抓取系统网络访问记录[Android实战篇] 系统网络访问记录通过wireshark查看到系统访问了redirector.gvt1.com,但是是哪里访问的呢?有同学可能说这个容易,源码里全局搜索下,就能定位了。骚年,要是能直接搜索到地址也不会有这边文章了一.获取应用包名首先在netd中添加日志信息,注意高版本android可能需要修改selinux权限system/netd/server/DnsProxyListener.cpp添加一个通过pid获取ap..

2021-11-10 15:23:42 457

原创 [Android实战篇] 系统网络访问记录

之前使用过fiddler、Charles这些工具来抓包进行数据分析,但是这些工具通常只能抓取Http请求的。现在要抓取系统在亮屏状态时,所有的数据请求,这时可以用到linux下常用的tcpdump。一.tcpdump编译在AOSP源码的external/tcpdump路径下。注意如果lunch时,选择的是user,需要修改下Android.mk,把下面一行注释掉LOCAL_MODULE_TAGS := debug二.tcpdump使用编译好后,push到/system/xbin/下

2021-11-02 14:12:25 490

原创 Android加固实现,不落地加载(support 5.0-11)[全网完成度最高的开源方案]

标题要牛逼点,才有人看吧!apk加载方案相关文章不少,但是要么是一代(不落地)加载方案,要么二代方案做的不完善,Android高版本支持不了,或者不支持多dex等,反正就是存在各种小问题,离可以使用还有这一点点距离。按理说现在加固方案都到第四代了,没道理二代方案还没人开源吧,仔细想想可能是现在方案更先进了,当年的方案问题没人关注了,二来加固工具使用起来也方便,没必要自己搞一个。为了让后来人有个学习参考吧,这里把自己鼓捣的结果写出来,大家共同学习共同进步吧!--------------------

2021-10-15 16:27:38 2851 2

原创 Android加固在Android11上的问题

由于工作需求,近来要研究下apk加固。昨天在网上找了个加固代码,一顿操作下来,加固ok,在Android5和Android10上的机器上跑起来ok,到了Android11上安装出错。错误信息如下:adb: failed to install Xxxx.apk: Failure [-124: Failed parse during installPackageLI: Targeting R+ (version 30 and above) requires the resources.arsc of

2021-08-28 11:25:58 1308

原创 [Android IPC] 一.Messenger

Android最常用来快进程通讯的手段是AIDL,这个大家都很熟悉了。今天我们来介绍另一个比AIDL使用起来更简单的跨进程方式Messenger,其实Messenger的内部实现就是用的AIDL,那么为什么我还要介绍他呢?主要是为了后面要介绍的AsyncChannel打个基础,好了,快点进入正题吧!一.Messenger有什么用Messenger就是用来发送消息的,核心方法只有一个send。从这个方法来看,显然Messenger是单向的,那如果要双向通信怎么办。其实很简单,两边分别创建一个Mes

2021-08-26 00:15:26 89

原创 Android 7.1编译jack-server问题记录

错误信息FAILED: /bin/bash -c "(prebuilts/sdk/tools/jack-admin install-server prebuilts/sdk/tools/jack-launcher.jar prebuilts/sdk/tools/jack-server-4.8.ALPHA.jar 2>&1 || (exit 0) ) && (JACK_SERVERencoding=UTF-8 -XX:+TieredCompilation\" prebuilt

2021-08-16 13:56:39 333

原创 Android Input系统

本文基于Android7.1代码分析一.Input启动先上个流程图InputManagerService的创建是在SystemServer,截取下关键代码 inputManager = new InputManagerService(context); wm = WindowManagerService.main(context, inputManager, mFactoryTestMode != FactoryTest.

2021-08-04 21:42:01 264

原创 Ubuntu下fastboot命令无法使用解决方案

fastboot环境变量都设置好了,机器已进入bootloader模式,fastboot device提示< waiting for any device >解决方法: https://github.com/snowdream/51-android

2021-06-02 23:17:57 1115

原创 Android使用Fiddler抓包记录

本文是记录分析系统代理问题时,抓包工具的使用记录注意:手机和pc连接同一个局域网一.PC配置1. 配置fiddler允许监听https打开Fiddler,菜单栏选择 Tools-Options,按下图配置。首次配置时会提示是否信任fiddler证书,直接yes2.配置fiddler允许远程连接3.PC防火墙配置a).打开防火墙高级设置b).新建入站规则,选择"端口",下一步。设置"特定本地端口"为"8888",一直下一步即可4.查看本机ip...

2021-05-15 16:49:15 183

原创 [Android的Init进程一]启动脚本init.rc

Android Init语言由五个大类的语句组成,Actions, Commands, Services, Options, Imports。1.Actionson <trigger> <command> <command> <command>2.Commands3.Servicesservice <name> <pathname> [ <argument> ]* &lt

2021-04-28 20:12:23 142

原创 Android native crash定位

目录一.应用开发1.模拟环境2.crash定位脚本演示3.脚本说明二.系统开发本文针对Android应用开发和系统开发分别提供了两款native crash定位工具。一.应用开发下载地址:1.模拟环境本文使用Android Studio 4.1版本,按默认配置创建一个jni工程。模拟native crash,修改natvie-lib.cpp2.crash定位脚本演示通过logcat查找tombstoneI/BootReceiver: Copying /data/tombston

2021-03-16 12:35:11 878

原创 Android getDeviceId流程分析

1.首先来看getDeviceIdframeworks/base/telephony/java/android/telephony/TelephonyManager.javapublic String getDeviceId() { ... ITelephony telephony = getITelephony(); if (telephony == null) return null; return telephony.getDeviceId(m

2021-03-15 17:50:15 946

原创 Android 分析EventLog

一.查看EventLog使用命令:logcat -b events二.logtags生成2.1开机event log分析1.获取开机时的event log:logcat -b events | grep boot_progress输出:I boot_progress_start: 20726I boot_progress_preload_start: 23255I boot_progress_preload_end: 26806I boot_progress_system_ru

2021-02-26 11:52:41 1234

原创 android进程间通讯aidl新增接口的异常处理

一.引出问题在系统定制过程中,我们常常使用aidl来提供接口给客户使用。因为接口的sdk通常是通用的一份,并且sdk的aidl文件是最完整的(包含接口一到接口n),而各个机型不一定完全实现了所有接口,比如下图机型A服务端的aidl文件只包含部分接口(比如只有接口一到接口五)。如果在机型A上调用了接口六,此时我们应该能够抛出异常告知客户该接口未实现。二.如何告知客户接口未实现1.机型及时同步最新的aidl文件,服务端在未实现的接口处抛出异常,sdk里捕获异常。这个方案首先排除,首先如果机型比较多

2020-10-20 12:45:41 1268

原创 [Android调试工具] 一.Systrace使用记录

环境配置安装 Python2.7,并添加到 PATH 环境变量安装 Android SDK 工具使用方法以下命令会调用 systrace 来记录设备活动,并生成一个名为 mynewtrace.html 的 HTML 报告。此类别列表是大多数设备的合理默认列表python systrace.py -o mynewtrace.html sched freq idle am wm gfx view binder_driver hal dalvik camera input res如需查看已连接设

2020-06-30 14:20:03 194

原创 Android studio坑记录

自定义注解处理器不起作用gradle版本换成5.0以下的so打包,debug版本无问题,release版本在/data/data/xx/lib下没有so必须以lib开头

2020-06-17 00:41:10 104

原创 Android储存BMP格式图片

BMP格式可参考这片文章:点击跳转上代码 public static byte[] convertBitmap2Bmp(Bitmap bitmap) { if (bitmap == null) { return null; } int w = bitmap.getWidth(); int h = bitmap.getHeight(); int wWidth = ...

2020-04-23 17:16:36 1384

原创 [Android源码浅析]一.编译系统(上)

基于nexus6,AOSP 7.1.1源码本文需要的shell基础一.编译命令二.envsetup.sh1.定义函数2.生成编译配置列表3.执行source build/envsetup.sh三.lunch1.lunch命令格式2.lunch中的重要函数3.lunch函数说明四.make本文需要的shell基础为了分析Android编译系统,需知道少量shell基础知识。以下两篇可对比查阅...

2020-04-11 21:24:13 270

原创 shell编程语法

shell编程

2020-04-05 15:47:45 279

原创 Android Makefile调试记录

Makefile 调试记录1.输出log2.判断文件路径是否存在3.执行shell脚本时的坑1.输出log可以使用warnning:$(warning "内容")2.判断文件路径是否存在ifeq ($(shell if [ -d $(TOPDIR)path ]; then echo "exist"; else echo "notexist"; fi;), exist)todoend...

2019-08-05 19:49:31 143

转载 Unix指令

Unix指令

2016-12-15 13:55:31 175

so_crash_analyse

Android native crash定位脚本。

2021-03-16

空空如也

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

TA关注的人

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