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

全部博文(478)

文章存档

2019年(1)

2018年(27)

2017年(21)

2016年(171)

2015年(258)

我的朋友

分类: Android平台

2015-08-06 09:47:14

[FAQ14105]L版本打开WITH_DEXPREOPT宏后首次开机仍慢
2015-05-13

FAQ Content

[DESCRIPTION]
 
       参照 "[FAQ13573]L版本首次开机慢" 打开宏WITH_DEXPREOPT:=true后,首次开机无效果仍然慢;
      说明开机之后又去提取预置apk的odex文件(原本应该是在预编译阶段就生成的);
      主要原因是预置apk的Android.mk对32bit和64bit的配置不准确导致。
 
[SOLUTION]
搜索main log关键字dex2oat : /system/bin/dex2oat 
 ?这条log打印出就代表这个apk有在做dex2oat且是32还是64的指令集
 
     I dex2oat : /system/bin/dex2oat --zip-fd=11 --zip-location=/system/app/***.apk --oat-fd=12 --oat-location=/data/dalvik-cache/arm or arm64/system@app@**@**.apk@classes.dex --instruction-set=arm or arm64 --instruction-set-features=default --runtime-arg -Xms64m --runtime-arg -Xmx512m --swap-fd=13
 
 ?oat-location表示odex文件存储位置
 ?Instruction-set表示此apk的primaryCpuAbi对应的指令集(arm对应32bit / arm64对应64bit)
 
 
 请严格遵守
       1、对于64bit的芯片,若apk只32bit的lib或者只能作为32bit运行,请在预置apk时在android.mk中添加下边的TAG标记此apk为32bit:
                                     LOCAL_MULTILIB :=32 
           (比如出现上述做dex2oat arm的log,则需这样设定)
     
       2、而对于有源码无lib库的apk,请注释掉LOCAL_MULTILIB :=32 
            (比如出现上述做dex2oat arm64的log,则需这样注释掉)
 
       3、开机之后既提取arm又提取arm64的apk,请设定LOCAL_MULTILIB :=both
            (比如出现上述做dex2oat arm以及arm64的log,则需这样设定)
 
总之,对32bit 和 64bit 的apk做不同处理。
 
[FAQ13573]L版本首次开机慢
[FAQ14102]L版本开机提示“Android正在升级或启动”
[FAQ13232]L 预置apk
[FAQ13697]L 版本如何将第三方so库打包到apk
 
阅读(2229) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~