一、APK生成odex文件方法:

编译开源GIT上的build/tools/dexpreopt/dexopt-wrapper这个,使用dexopt-wrapper即可,操作步骤

将dexopt-wrapper放到/data/local目录中,使用adb shell执行linux命令行,使用cd命令进入/data/local目录,

cd /data/local

./dexopt-wrapper devdiv.apk devdiv.odex

二、合并odex和 少dex的apk 为完整的apk文件

1. 下载 http://smali.googlecode.com/files/smali-1.2.5.jar 和 http://smali.googlecode.com/files/baksmali-1.2.5.jar


2 .通过odex生成class文件

java -jar baksmali-1.2.2.jar -x devdiv.odex

执行完上面这行命令后,会生成一个out 文件夹里面是devdiv.odex的class文件。出现问题,根据提示可以从rom的 /system/framework core.odex, ext.odex, framework.odex, android.policy.odex, services.odex这5个文件也放在同一目录(也可以放在别的目录,通过设置BOOTCLASSPATH指定,默认就是当前目录)。

3. 通过class生成classes.dex 文件。

java -Xmx512M -jar smali-1.2.2.jar out -o classes.dex

4. 将classes.dex放到apk文件

因为apk是zip的mime编码类型,使用winzip或winrar直接拖入到apk改名为zip的压缩包中即可。

5. 不要忘记了签名,使用jdk中的arsigner和keytool打包重新签名即可。

反编译在froyo系统中需要下载最新的smali 和baksmali ,否则会以下错:

分解odex时出错:
C:/Program Files (x86)/Java/jre6/bin>java -jar baksmali-1.2.2.jar -x NewsReader.odex

UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.RuntimeException: bad magic value: 64 65 79 0a 30 33 36 00
at org.jf.dexlib.DexFile.<init>(DexFile.java:382)
at org.jf.baksmali.main.main(main.java:249)

更多相关文章

  1. Binder机制原理学习笔记(4)_ServiceManager启动Binder分析
  2. Android升级到2.3之后遇到的问题
  3. android 蓝牙文件
  4. Android使用xml文件中的array资源
  5. 利用 Android(安卓)Studio 阅读 Android(安卓)源码
  6. Android挂载本地硬盘为SD卡操作指南
  7. Android平台下简单Widget的搭建过程
  8. android dataBinding详解
  9. 通过Android命令自动编译出build.xml文件

随机推荐

  1. android按钮的操作例子,简单大家看明白_基
  2. android 自定义View开发实战(四) 圆角矩
  3. Android(安卓)-- AppWidget 高级篇
  4. Android P签名机制和系统权限
  5. Android:java.lang.SecurityException: P
  6. Android-SQLite3基本操作指令集合
  7. Android下pm 命令详解
  8. Android快速开发-选项卡
  9. Android成长之路-Android组件_EditView例
  10. 遇到的Android eclipse 问题