Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1372393
  • 博文数量: 478
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4833
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-28 11:12
文章分类

全部博文(478)

文章存档

2019年(1)

2018年(27)

2017年(21)

2016年(171)

2015年(258)

我的朋友

分类: Android平台

2015-10-19 14:15:03

[FAQ14132]开启WITH_PREODEX之后,如何减少第一次开机之后data分区的大小
2015-07-09
FAQs 4 of 10
修改ART mode减少ROM大小 (如GMO project / FOTA升级) MT8127/MT8163 如何开启WITH_PREODEX功能

内容

尽管打开了WITH_PREODEX之后,已经生成了odex文件,但是第一次开机的时候,android会去做patchoat的动作,会将odex文件重新简单修改,并放到/data/dalvik/$isa/目录下面。这样做主要是为了安全考虑,因为ELF文件被load进系统之后,如果每一次都映射同样的位置,很容易被hack利用这一点进行攻击。如果不考虑这种安全性问题,可以把这个属性给关闭。
 
1.关闭方法如下:
/art/runtime/globals.h
static constexpr bool kDefaultMustRelocate = false; //从而可以取消patch oat。

还要修改如下的地方,否有一些三方工具运行不起来:
/frameworks/base/core/jni/AndroidRuntime.cpp
#if 1 //将if 1改为#if 0,从而避免等待。
if (!bootOatDone) {
if (!strcmp(className, "com.android.internal.os.RuntimeInit")) {
   waitOatDone();
   bootOatDone = true;
   }
 }
#endif

 
2. 采用google方法添加PIC这个宏,作用同上:
 
WITH_DEXPREOPT := true
WITH_DEXPREOPT_PIC := true
 
(如出现adb install 命令不可用,请至PatchManagerService系统申请Patch: ALPS02151612(L1.MP3) or ALPS02146262)
 
 
这样修改之后既可以减小data分区的空间,又可以加快开机速度,但风险就是容易被hack利用固定映射地址进行攻击。
 
 
 
阅读(1955) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~