Android知识点
Service设置为前台服务
Toast消息不重复显示
Android5.0以上隐式启动第三方应用的服务
AIDL的使用
生成二维码方法
ANT build.xml文件详解
service周期性工作
跳转到系统开启GPS
跨进程访问sharepreference
ping方法判断网络是否可用
Android 技术分享 - RTMP直播 和 Camera
设计基类 -- BaseActivity
正则表达式
关机 -- 通过反射机制
gradle配置日志打印信息
Application 多次实例化问题
Gsensor_方向感应实现
Android状态栏微技巧,带你真正理解沉浸式模式
Top Activity的包名获取
校验和
android 拷贝DB数据到内存卡
打开和关闭虚拟按键
Properties读取中文乱码解决方案
如何实现Activity窗口快速变暗
Android判断SD卡
Android 代码执行adb shell 指令
Android 动态添加权限
全局获取Application对象
Android中Hook Instrumentation的一些思考
获取Activity实例
Activity 启动延时加载方案
生成 frameworks/base/preloaded-classes文件
Bluetooth-蓝牙模块
Android事件传递机制详解
Android-tools知识点
Android博客
Android 调试宝典
遇到的难点问题
ubuntu
Android Framework
Android 规范和API Doc
开发接口文档
Java 知识点
工具使用
RK3588
MTK
Android Studio 知识
其他知识

Android

个人Android学习总结


生成 frameworks/base/preloaded-classes文件

<p>如何生成 frameworks/base/preloaded-classes文件</p> <p>1.修改WritePreloadedClassFile.java 文件 具体文件路径:frameworks/base/tools/preload/WritePreloadedClassFile.java</p> <p>该类中有两个比较重要的定义:</p> <p>static final int MIN_LOAD_TIME_MICROS = 1250;</p> <p>static final int MIN_PROCESSES = 10;</p> <p>备注:</p> <p>MIN_LOAD_TIME_MICROS:他是一个临界值,表示装载一个类,花费的时间大于1250微秒。</p> <p>MIN_PROCESSES:也是一个临界值,表示一个类至少被10个进程装载。</p> <p>Policy:策略类他会定义排除某些服务进程中,以及某些固定的类。</p> <p>这个函数主要工作如下:</p> <p>1.1、 创建preloaded-classes,写入注释信息(如第1步)</p> <p>1.2、 遍历root.loadedClasses(所有装载的类信息),把符合条件的Class放入预加载文件中。具体条件如下:</p> <p>1.2.1、 Policy.isPreloadable不属于策略排除之外的类。</p> <p>1.2.2、 names.size() &gt;= MIN_PROCESSES 至少被10个进程加载的类</p> <p>1.2.3、 (和1.2或关系) 至少被两个进程加载并且加载时间大于1250微秒</p> <p>1.3 、遍历root.processes装载类涉及的进程,内部的所有Operation(一个Operation包含一个类的加载开始时间,结束时间等),满足如下条件加入的类加入预加载文件。</p> <p>1.3.1、 proc.fromZygote()(该进程的父进程不为NUll并且是Zygote进程)&amp;&amp; !Policy.isService (该进程不属于Policy中制定的服务进程)</p> <p>1.3.2 、shouldPreload() (不属于策略排除之外的类,并且加载时间大于1250微秒)</p> <p>1.4 、这个函数就是所有Zygote进程中加载过的类并且不属于策略排除之外的类,都要加入到预加载文件中。</p> <p>1.5、 把前面三步中获取的需要加入预加载文件中的类toPreload写入预加载文件中。</p> <p>2.重新编译frameworks/base/tools/preload/中的所有源码</p> <p>source build/envsetup.sh lunch 24 mmm frameworks/base/tools/preload/ 可以看到编译完成之后生成的文件路径:./out/host/linux-x86/framework/preload.jar</p> <p>先将frameworks/base/preloaded-classes文件删除 然后在linux服务器终端android源码根目录下面这条命令:</p> <p>java -Xss512M -cp ./out/host/linux-x86/framework/preload.jar WritePreloadedClassFile ./frameworks/base/tools/preload/20100223.compiled</p> <p>就会在frameworks/base/下生成 preloaded-classes文件</p>

页面列表

ITEM_HTML