1. 内存作假
客户要求将 512M内存的手机显示成1G,并且第三方检测软件检测也是1G
我们读内存信息都是读取手机中的/proc/meminfo文件
此文件在kernel目录下的/fs/proc/meminfo.c
static int meminfo_proc_show(struct seq_file *m, void *v)函数
在 seq_printf(m, "MemTotal: %8lu kB\n"
字符串前,可以任意修改sysinfo里面的值
为了达到客户需要,添加了
i.totalram = i.totalram * 2;//此处是将实际ram大小扩大2倍,从512M变成1G
i.freeram = i.freeram*2;//总内存变大了,空闲内存也相应的改成2倍
cached = cached*2;
三行就行了
这样改有一个问题
如果实际是512M内存,android系统中的配置ro.config.low_ram为true,系统按照低内存模式运行,如果按照上述修改,是连系统都欺骗了,系统认为实际内存是1G的,就不会按照低内存模式运行。当内存不够或运行耗费内存比较大的应用的时候,系统会杀掉一些进程
解决方法:
只修改显示的地方(textview.java),不修改内核,这样第三方显示内容我们可以随意控制
如果有疑问,可以联系作者,