自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 android 11添加系统api供app使用

实现要求:添加系统api到sdk,公开给未签名app使用1.将代码添加到 frameworks/base/core/java 目录下,创建自己的包名,这个路径下可以自动识别,更新到current.txt,不用改编译规则比如:frameworks/base/core/java/qcd/app/Test.java(注意,包名不要以com开头,不要问为什么)2.设置基线检查,忽略自定义包名修改: frameworks\base\StubLibraries.bppackages_to document

2024-01-12 10:14:46 656

原创 Android Persistent自启机制

当应用启动完毕后就会调用到ActivityThread.java内的attach方法,方法内调用了AMS的attachApplication方法,之后再到attachApplicationLocked,该方法内部就会将应用移除mPersistentStartingProcesses列表,表明应用启动完毕,同时为应用并注册一个死亡监听器AppDeathRecipient,用于应用被异常杀死后的重启.之后在系统的启动过程中就会根据设置的这个persistent控制应用的启动。

2024-01-12 09:24:33 1267

原创 Android jar包编译及集成

使用方式如上,如果依赖到其他jar包,则是用static_libs:[HelloTest,]添加依赖编译,如果需要预加载到虚拟机,则需要配置了PRODUCT_BOOT_JARS添加到bootcalssloader路径当中。如果需要打包到systemimg,则需要将此jar包添加到PRODUCT_PACKAGES,此编译指令将jar包添加进了system分区,但是没有预加载,PRODUCT_BOOT_JARS指令会将jar包预加载到虚拟机中供客户端使用。Vendor分区:芯片上上分区,提供核心功能和服务。

2024-01-12 09:17:00 673

原创 关于Android framework jar包编译的几个问题

定义接口,集成在framework.jar参与编译,具体实现在services.jar,实现接口,处理具体代码逻辑,比如InputManagerInternal,ActivityManagerInternal。BootClassLoader 用来加载BOOTCLASSPATH下jar (framework.jar在这个路径)问题1:framework.jar里的类,为什么不能直接import services.jar里的类?问题3:目前framework.jar是如何调用services.jar的代码的?

2024-01-12 09:06:37 472

原创 tmux 使用

tmux kill-session -t 会话编号。tmux attach -t 会话编号。

2024-01-12 08:57:26 344

原创 Android 编译系统AIDL模块couldn‘t find import for class错误

例如,定义 com.example.IFoo 的文件 IFoo.aidl 可能位于文件夹层次结构 Something/something-else/com/example/IFoo.aidl 中。要从另一个构建目标(例如另一个二进制文件或 java)的 .aidl 文件生成代码,只需将 .aidl 文件的相对路径添加到 .aidl 文件即可。请记住,导入 AIDL 的工作方式是相同的,即使对于其他目录层次结构中的代码也是如此:将相对于签出根的包含根路径添加到。您的 Android.mk 中。

2023-11-27 10:35:07 766

原创 android 添加jar包 编译错误

framework.jar是加在了BOOTCLASSPATH路径中(先加载),但是新添加的jar包却依赖了SYSTEMSERVERCLASSPATH中的类,所以在编译framework.jar时,在BOOTCLASSPATH路径中找不到services.jar中的类,有可能SYSTEMSERVERCLASSPATH中的类还未加载,导致编译报错,这种情况是无法编译的。Android类加载路径有两个BOOTCLASSPATH,SYSTEMSERVERCLASSPATH,BOOTCLASSPATH西安加载。

2023-11-13 13:59:03 318

原创 Android studio 调整jar包顺序

第四步:app.iml 中,将 classes.jar的orderEntry放在最前面,over。第三步:project目录下build.gradle 中添加。第二步:app 目录下build.gradle 中添加。

2023-09-05 11:44:26 983

原创 MemoryFile 使用demo

MemoryFile 使用demo

2023-01-16 09:39:17 213

原创 malloc debug抓日志

malloc debug正常抓日志:1.adb root2.setenforce 03.cd /data/local/4.chmod 777 tmp5.setprop libc.debug.malloc 16.setprop libc.debug.malloc.program 进程名7.setprop libc.debug.malloc.options "backtrace leak_track"8.kill -9 进程号,重启进程9.复现问题10.kill -47 进程号...

2022-06-13 09:30:02 932

原创 build.gradle文件

// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript { repositories { maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } maven { url 'http://maven.aliyun.com.

2022-02-15 08:46:22 318

原创 GDT全局描述符

2022-01-03 18:56:50 222

原创 Canvas绘制layout.xml布局

try { mCanvas = mSurfaceHolder.lockCanvas(); if (mCanvas != null) { LayoutInflater inflater = LayoutInflater.from(getContext()); View v = inflater.inflate(R.layout.clock, null, false); ...

2021-12-22 09:35:57 1048

原创 【无标题】Android 添加layer图层

@@ -2036,6 +2036,39 @@ class AppWindowToken extends WindowToken implements WindowManagerService.AppFree } else if (mLetterbox != null) { mLetterbox.hide(); }+ //adddddddd+ android.view.Surface mTestSu..

2021-12-20 17:26:27 1822

转载 android9duochuangkoubiji

一、概述:AndroidQ上面原生的多窗口功能支持四种模式:全屏、分屏、画中画、FreeForm模式。多窗口主要涉及ActivityManagerService、WindowManagerService、Input三个模块。///二、原理框架Android原生多窗口是多Stack方案,即存在多个ActivityStack。ActivityStack是一个抽象的栈,每个栈都有自己的屏...

2019-10-16 20:44:20 718

原创 笔记:系统的上下文切换情况

过多的上下文切换,会把 CPU 时间消耗在寄存器、内核栈以及虚 拟内存等数据的保存和恢复上,缩短进程真正运行的时间,成了系统性能大幅下降的一个 元凶。过多的上下文切换,会把 CPU 时间消耗在寄存器、内核栈以及虚 拟内存等数据的保存和恢复上,缩短进程真正运行的时间,成了系统性能大幅下降的一个 元凶。vmstat 是一个常用的系统性能分析工具,主要用来分析系统的内存使用情况,也常用来分析 CPU...

2019-09-09 23:34:26 612

原创 笔记:cpu上下文,上下文切换

CPU 上下文:CPU 寄存器,是 CPU 内置的容量小、但速度极快的内存。而程序计数器,则是用来存储 CPU 正在执行的指令位置、或者即将执行的下一条指令位置。它们都是 CPU 在运行任何任务前,必须的依赖环境。CPU 上下文切换:就是先把前一个任务的 CPU 上下文(也就是 CPU 寄存器和程序计数器)保存起来,然后加 载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数...

2019-09-08 22:24:30 127

转载 android代码调试

关于android系统代码调试http://weishu.me/2016/05/30/how-to-debug-android-framework/https://blog.csdn.net/murphykwu/article/details/52117907androidStudio创建java工程https://blog.csdn.net/glydxm/article/details/5131...

2018-06-01 21:55:27 318

原创 Binder笔记

Binder介绍    Linux内核的基本知识:    1.进程隔离/虚拟地址空间    在操作系统中为了保护某些进程互不干扰,就设计了一个叫进程隔离的技术,而这个技术就是为了避免进程A可以操作进程B的数据的情况下所实现的。进程的隔离实现,它用到了虚拟地址空间,进程A的虚拟地址空间和进程B的虚拟地址空间其实是不同的,这样就防止了进程A的数据可以写到进程B里面。操作系统当中,不同进

2018-01-14 20:16:05 266

原创 子线程handler与handlerThread

一般情况下在子线程中创建Handler如下: Handler handler; //创建全局变量 Thread mThread = new Thread(new Runnable() { public void run() { Looper.prepare(); handler = new

2017-06-30 12:49:03 503

原创 c语言中静态库动态库的创建与使用

在c程序中存在两种库文件,分别为静态库文件与动态库文件也叫共享库文件,系统的库文件存放路径为 usr/lib目录下:静态库文件就是一些.o目标文件的集合,以.a结尾。静态库在程序链接的时候使用,连接器会将程序中使用到的函数的代码从库文件拷贝到可执行文件中,一旦链接完成,在程序执行的时候就不需要静态库了。静态库的创建:首先看一下源文件fun.c#include int

2017-06-29 15:07:06 2576

原创 linux下实现jni的方式

linux下实现jni的方式用JNI实现一个经典的“Hello World”程序。该程序在Java中通过JNI调用c函数实现“Hello World”的输出。创建该程序分为以下步骤:1、创建一个Java程序(HelloWorld.java)定义原生的c/c++函数。 创建java文件,声明native方法2、用javac编译HelloWorld.java生成HelloWorld.cl

2017-06-02 17:12:26 557

原创 笔记:关于adb push不生效

Android编译是否生成odex的设置默认编译odex版本,如果需要非odex版本,请将device/huawei/k3v2_s10/BoardConfig.mk如下两个变量的值修改为:DISABLE_DEXPREOPT := trueWITH_DEXPREOPT := false其它说明A. device/hisi/k3v2oem1/下面的配置文件不再使用,对应的配置文

2017-05-02 23:01:20 7071

原创 笔记 intent隐式启动的两个注意事项

隐式启动activity:intent进行匹配时需要3个属性, action category 和data,通常情况下首先在清单文件里注册 action 和 categ

2017-04-25 10:48:19 1381

原创 android 7.0 Settings 省电模式

Settings 省电模式:开启省电方式有两种:第一种 自动开启,点击Turn on automatically,弹出下拉选项,选择never, at 5% battery, at 15% battery第二种 手动开启,点击SwitchBar开关即可设置先说第一种:关键字段:/packages/apps/Settings/res/values/strings.xml

2017-04-24 13:01:10 6065 2

原创 android系统资源添加

android添加系统资源源文件路径: /frameworks/base/core/res/res编译后路径: /out/target/product/项目名称/system/framework/framework-res.apkR.Java文件: /out/target/common/R/com/android/internal/R.Java资源的添加:如在framework-res

2017-04-21 15:00:12 2343

原创 java 泛型介绍

1.泛型的基本概念:泛型是JDK 1.5的一项新特性,它的本质是参数化类型(Parameterized Type)的应用,也就是说所操作的数据类型被指定为一个参数,在用到的时候在指定具体的类型。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。2.泛型中标记符的含义: E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Ja

2017-04-20 16:24:15 469

原创 Android Settings 快速搜索

Settings 之 SearchIndexablesProvider首先需要在清单文件中注册action为"android.content.action.SEARCH_INDEXABLES_PROVIDER"的provider,如下: <provider android:name=".search.SettingsSearchIndexablesProvid

2017-04-20 16:15:47 3530 1

转载 关于ActivityThread和ApplicationThread的解析

文章仅仅用于个人的学习记录,基本上内容都是网上各中资料,此处摘录过来以自己的理解学习方式记录一下。       ActivityThread和ApplicationThread的理解在你阅读源代码尤其和进程启动,service、activity启动等相关的代码时,就能发现其重要性了。1、ActivityThread.        在Android中它就代表了And

2017-04-06 23:52:39 11103 4

转载 Android消息机制源码分析

Android源码分析之--消息机制源码分析前言:为什么要学习Android源码?很多读者,尤其是初学者特别抗拒去看源码,这里我说明一下为什么要

2017-04-06 23:46:46 642

原创 注解(Annotation)注解处理器

关于Annotation的解释,下面这张图讲得很详细,可以详细研究一下

2017-04-01 16:22:11 698

原创 Java反射机制常用方法

Java反射机制常用方法:1. 得到某个对象的属性 public Object getProperty(Object owner, String fieldName) throws Exception { Class ownerClass = owner.getClass(); Field field = ownerClas

2017-04-01 15:26:03 768

原创 android依赖注入注解的实现

android依赖注入,注解功能,本demo实现view注入,点击事件注入.首先实现两个注解类:@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.FIELD)public @interface InjectView { //只接收一个int类型的值,用于表示view的id public @IdRes int valu

2017-04-01 15:06:54 2510 2

转载 CSDN如何转载别人文章

1、找到要转载的文章,用chrome浏览器打开,右键选择审查元素2、在chrome中下方的框里找到对应的内容,html脚本中找到对应的节点,选中节点,网页上被选中内容会被高亮显示,然后右键菜单选中 Copy as HTML3、进入个人”管理博客”主界面,选择”写新文章“,编辑界面的地方选择工具条上的源代码,将chrome中复制的内容贴进来

2017-04-01 00:29:59 494

原创 笔记: Field 与 Method

java.lang.reflect.FieldAPI解释:Field 提供有关类或接口的单个字段的信息,以及对它的动态访问权限。反射的字段可能是一个类(静态)字段或实例字段。它的使用是从反射开始的,通常是通过Class对象来获取Field实例:  Class.getFields(), Class.getField(String), Class.getDeclaredFields(), Clas

2017-03-31 17:02:37 1732

原创 性能优化—内存泄漏

两个概念:内存泄漏:可以解释为,内存不在GC掌控之内。OOM: 即out of memory内存溢出(当应用占用的heap资源超过了Dalvik虚拟机分配的内存就会内存溢出),内存泄漏多了就会导致内存溢出。1.什么是内存泄漏?     当一个对象已经不需要再使用了,本该被回收时,而有另外一个正在使用的对象持有它的引用从而导致对象不能被回收。这种导致了本该被回收的对象不能被回收而停留

2017-03-24 01:36:21 542 1

原创 DevicePolicyManager使用

1.在清单文件注册receiver <receiver android:name=".MyAdmin" android:permission="android.permission.BIND_DEVICE_ADMIN">  //这个权限必须要申请 <meta-data android:name="android.app.device_admin"

2017-03-23 14:46:43 2163

原创 android 7.0 Downloadprovider 下载流程

1.Downloadprovider 源码路径 Download的源码编译分为两个部分,一个是DownloadProvider.apk, 一个是DownloadProviderUi.apk.这两个apk的源码分别位于 packages/providers/DownloadProvider/ui/src packages/providers/DownloadProvider/src 其中,D

2017-03-22 13:58:50 5200 1

原创 判断或者获取栈顶Activity

private boolean isTopRunningTask(Context mContext, String taskName) {    if(TextUtils.isEmpty(taskName)){        return false;    }    ActivityManager am = (ActivityManager) mContext.getSystemServ

2017-03-22 09:32:40 832

原创 插件化-apk动态加载

加载assets目录下的sdcard.apk中的资源文件package com.example.plugin_test;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.lang.reflect

2017-03-21 16:54:55 575

android9多窗口下载.doc

笔记

2019-10-13

git_note_note

git note, 个人学习的内容,个人学习的内容。个人学习的内容。

2018-10-11

android layerstack

2021-06-25

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

TA关注的人

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