[Android] 配置安卓模拟器,使得dex文件不被优化成odex
最近做一个模块,需要将apk里面加载的dex文件dump出来,所以需要配置让dalvik不要把dex文件优化成odex。
1. 配置build.prop
主要是通过修改文件/system/build.prop里面的配置。
(1) dalvik.vm.dexopt-flags
本参数控制Dalvik虚拟机的程序代码校验和优化。可填写的值有m、v和o。
m为标准选项,可以是m=y或m=n。若m=y则启用不安全代码的校验和托管代码的优化。兼容性和安全性最高。
v为校验选项,可与o并存。可以是v=a或v=n。若v=a则表示校验所有代码,v=n则关闭代码的校验。
o为优化选项,可与v并存。可以是o=v或o=a。若o=v则表示优化以校验过的代码,o=a则表示优化所有代码。
这里我们配置成:dalvik.vm.dexopt-flags=v=n,o=v,表示关闭代码校验,并只优化校验过的代码,也就是所有代码都不会被优化。
(2) dalvik.vm.checkjni
这里我们配置成:dalvik.vm.checkjni=false,这个会把checkjni设置成false
2. 把配置持久化到模拟器
(1) 首先重新挂载系统分区,使系统分区可写。如果不执行这个,会发现没法修改build.prop文件。
adb remount
(2) 接下来,进入模拟器的命令行:
adb shell
(3) 将配置写到build.prop:
echo "dalvik.vm.dexopt-flags=v=n,o=v" >> /system/build.prop
echo "dalvik.vm.checkjni=false" >> /system/build.prop
这样,配制就改到模拟器里面了,验证之后发现dex果然没有被转化成odex。
可是在重启模拟器之后,发现build.prop里面的改动都没有了。
在网上搜了一下,参考了这个stackoverflow的提问:http://stackoverflow.com/questions/15417105/forcing-the-android-emulator-to-store-changes-to-system
具体步骤如下:
(1) 将system.img复制到一个地方,
(2) 用下面的命令启动模拟器:
emulator -avd [你的模拟器名字] -qemu -nand system,size=[模拟器需要的空间,16进制],file=[刚才复制的目录]/system.img
例如:
emulator -avd Galaxy_Nexus -qemu -nand system,size=0x1f400000,file=/home/fx/.android/avd/Galaxy_Nexus/system.img
(3) 按照之前的步骤修改build.prop
(4) 用这个命令关闭模拟器:
adb -e emu kill
这样,下次正常启动模拟器的时候(不必再用上面步骤2里面的命令),发现修改的内容已经被持久化到build.prop里面。
3. 修改安卓源码
用上面的方法运行一段时间之后发现并不能完全避免dex被优化,具体原因没有找到,所以最后修改了安卓的源码,重新编译了一个img出来。
具体修改的是 /dalvik/vm/analysis/Optimize.c 文件,将里面的 dvmOptimizeClass 函数直接return。此方法测试有效,暂时没有发现问题。
[Android] 配置安卓模拟器,使得dex文件不被优化成odex的更多相关文章
- 【Android 逆向】手动构造dex文件
		public class Hello { public static void main(String[] args) { System.out.println("hello android ... 
- Win10安卓模拟器Visual Studio Emulator for Android使用简介(转)
		Visual Studio Emulator for Android是微软官方发布的独立版本的安卓模拟器,这款软件可以让安卓应用开发者更加轻松的用Visual Studio编写Android应用,据说 ... 
- 超简单,安卓模拟器手动root
		本文转载自:http://quantoubao.blog.163.com/blog/static/2083211702013870501987/ 安装Android SDK安卓模拟器的方法很简单,网上 ... 
- 浅析dex文件加载机制
		我们可以利用DexClassLoader来实现动态加载dex文件,而很多资料也只是对于DexClassLoader的使用进行了介绍,没有深入讲解dex的动态加载机制,我们就借助于Android4.4的 ... 
- 【Android】把外部文件拷贝的AVD安卓模拟器上的sdcard上,而且在AVD中浏览sdcard的文件
		首先.实现这一切的大前提是.你的AVD安卓模拟器,在启动之前.有设置好sdcard的大小,例如以下图.同一时候,你的AVD安卓模拟器,要处于启动状态.否则无法运行例如以下的操作. 这里以<[An ... 
- Android Studio 1.0.1 + Genymotion安卓模拟器打造高效安卓开发环境
		我们开发安卓大多是使用Eclipse和安卓SDK中自带的安卓模拟器.当然,Google早就推出了自己的安卓开发环境——Android studio,在不久前,Google发布了Android Stud ... 
- Hbuilder配置识别逍遥安卓模拟器
		最近在公司,需要开发一款智能家居APP,用到MUI框架,首先就是环境搭建,写好的APP页面,怎么跑在模拟器上运行? 我的开发环境: HBuilder版本:9.0.2.201803061935 逍遥安卓 ... 
- 【转】Android系统中的.apk文件和dex文件
		1. *.apk文件 APK是Android Package的缩写,即Android安装包.通过将APK文件直接传到Android模拟器或Android手机中执行即可安装. 使用Android打包工具 ... 
- VS2015配置安卓Android和iOS开发环境
		http://www.cjjjs.cn/paper/gzsh/627201502818357.aspx [摘要] 本文按照步骤一步步的介绍要下载安装的东西,都提供了下载地址.最后将所有需要的程序都打包 ... 
随机推荐
- Windoows窗口程序一
			编写窗口程序的步骤: .定义WinMain入口函数 .定义窗口处理函数(处理消息)WindowProc .注册窗口类RegisterClass .创建窗口(在内存中创建窗口)CreateWindow ... 
- Qt/C++ 构造函数与explicit
			1.默认构造函数 默认构造函数是指所有参数都提供了默认值的构造函数,通常指无参的构造函数或提供默认值的构造函数.如类Test1和Test2的构造函数 class Test1 { public: Tes ... 
- 关于Cocos2d-x中图集中图片的调用
			1.首先在Resources文件夹下要有打包好的图集文件和相同名称的plist文件. shoot.png shoot.plist shoot_background.png shoot_backgrou ... 
- Java 关于finally、static
			论坛上看到的两道题目,如下: //为啥运行结果是1 0 不是 0 0呢 谁能解释下啊 public class FinallyDemo { static int value = 0; static i ... 
- jquery 中json数组的操作(转)
			在jquery中处理JSON数组的情况中遍历用到的比较多,但是用添加移除这些好像不是太多. 今天试过json[i].remove(),json.remove(i)之后都不行,看网页的DOM对象中好像J ... 
- Oracle 12c安装详细步骤,带截图
			1,在官网上下载oracle的压缩文件,两个都要下载. 并两个同时选中解压在一个文件夹里面. 2,解压之后,如下图,点击setup.exe稍等一会儿 ,3,开始安装: 不选点击下一步,或者直接点击下一 ... 
- 【Java面试题】10 abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
			1.abstract是抽象的,指的是方法只有声明而没有实现,他的实现要放入声明该类的子类中实现. 2.static是静态的,是一种属于类而不属于对象的方法或者属性 3.synchronized 是同步 ... 
- ThinkPHP重写规则优化URL及Rewrite规则详细说明
			示例如下: http://www.topstack.cn/Article/detail/id/198.html 优化为 http://www.topstack.cn/article-198.html ... 
- js openwindow
			进入许多网站时,有弹出式小窗口,它们五花八门,使我们捉摸不透下面就来介绍用JS制作9种制作弹出小窗口: 1.最基本的弹出窗口代码 其实代码非常简单: < SCRI ... 
- Word公式装逼技巧,你绝对不会!
			Word论文排版是非常有技术含量的.只是纯文本格式时都有很多技巧,累倒一群人,更不用说还加上有数学公式了.有数学公式也就算了,问题是公式排版更是难上加难.想要在人前装逼一把?没有这些技巧你是绝对不行的 ... 
