Android应用如何加载framework的Class到自己的JVM?应用JVM与Zygote JVM是什么关系?

 放肆的微笑-扯痛了忧伤 发布于 2022-11-02 15:46
//在android.os.Build.java中添加如下方法。
static int count = 0;
static String MD5 = getMd5();
static String getMd5(){
       count++;
       return "" + count + getrandomStr();
}

在应用中,通过Build.MD5访问,写了3个测试程序,读的值中count都是1,但随机字符串有时相同,有时不同。

对于此现象我理解:
相同的情况: Build.java加载到Zygote的JVM中的时候已经初始化了。后面的App 通过Fork获取了与Zygote一样的JVM 的Build.class。并没有重新加载,所以随机字符串是一样的。

不相同的情况:app的JVM中没有Build.class,Build.java被重新加载了,MD5也就重新被赋值了,所以count依然是1,但随机数变化了。

1 请大家帮忙看看,分析的是不是对?
2 以上的不同造成的原因是什么? APP是如何处理Framework.jar中的class加载问题的? APP的JVM与Zygote的JVM有什么关系?

此问题我困扰了几天,没有进展,麻烦大家帮忙下。有任何思路,都可以告诉我。
多谢。

1 个回答
  • 不会吧,Android JVM高手在哪里~~~~

    2022-11-04 08:58 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有