1.打开dalvik中preload的log开关
- // dalvik/vm/oo/Class.c
-
#define LOG_NIDEBUG 0
-
#define LOG_CLASS_LOADING 1
2.修改frameworks/base/tools/preload/MemoryUsage.java,使其中的CLASSPATH与BOOTCLASSPATH一致
- private static final String CLASS_PATH = "-Xbootclasspath"
-
+ ":/system/framework/core.jar"
-
+ ":/system/framework/apache-xml.jar"
-
+ ":/system/framework/bouncycastle.jar"
-
+ ":/system/framework/ext.jar"
-
+ ":/system/framework/framework.jar"
-
+ ":/system/framework/android.policy.jar"
-
+ ":/system/framework/services.jar"
-
+ ":/system/framework/core-junit.jar"
-
+ ":/system/framework/loadclass.jar";
3进入frameworks/base/tools/preload/loadclass,编译该模块并推入
4在ZygoteInit中注释掉preloadClass方法或者置空frameworks/base下的preloaded-classes文件
5 adb logcat | tee logcat.txt截取从开机开始的logcat
6 java -cp /path/to/preload.jar Compile logcat.txt logcat.compiled生成compiled文件
7 java -cp /path/to/preload.jar WritePreloadedClassFile logcat.compiled生成preloaded-classes文件
阅读(8761) | 评论(0) | 转发(0) |