有时候,某些应用并不太常用,放在ROM里面占空间挺可惜的,不如把它变成一个单独的APK安装包,想用的时候再装来的更方便些。这种时候,就需要把优化成APK文件和Odex文件组成的程序重新合并起来。
需要用到的工具是smali,一个开源的java处理软件
http://code.google.com/p/smali/downloads/list
下载里面的baksmali和smali的jar文件到工作目录,把ROM里面的core.odex, ext.odex, framework.odex, android.policy.odex, services.odex这5个文件也放在同一目录(也可以放在别的目录,通过设置BOOTCLASSPATH指定,默认就是当前目录)。
我们以teeter为例子,ROM里面拿出来的可能是2个文件,teeter.apk + teeter.odex。
第一步,分解odex文件:
java -jar baksmali-1.2.1.jar -x teeter.odex
如果没其他问题,会在工作目录生成一个out的目录,里面是分解出来的一些文件,我们在此不深究这些文件的作用。
第二部,把分解得到的文件变成classes.dex:
java -Xmx512M -jar smali-1.2.1.jar out -o classes.dex
这样,我们就得到了一个有用的classes.dex文件,用WinZip或者WinRAR打开teeter.apk文件,把这个classes.dex 放进去,最后再用signapk把最新得到的这个包含classes.dex的apk重新签署一下,就生成一个可以安装的单独APK程序了。
就这么简单。
来源:http://zenz.ourcafe.mobi/archives/188
分享到:
相关推荐
通过class生成classes.dex 文件。 java -Xmx512M -jar smali-1.2.6.jar out -o classes.dex 4. 将classes.dex放到apk文件 因为apk是zip的mime编码类型,使用winzip或winrar直接拖入到apk改名为zip的压缩包中...
3. 通过class生成classes.dex 文件。 java -Xmx512M -jar smali-1.2.6.jar out -o classes.dex 4. 将classes.dex放到apk文件 因为apk是zip的mime编码类型,使用winzip或winrar直接拖入到apk改名为zip的压缩包...
在`dex2jar`目录下运行`dex2jar.sh classes.dex`,生成`classes.dex.dex2jar.jar`。 4. **使用JD-GUI查看反编译结果** 启动`JD-GUI`,加载`classes.dex.dex2jar.jar`,查看反编译后的Java源代码。 **回编译步骤*...
这将生成一个新的classes.dex文件。 5. 创建新的APK: 接下来,你需要将新的classes.dex文件替换原始APK中的classes.dex,然后使用ZIP工具(如7-Zip或WinRAR)重新打包APK。确保保留APK的原始结构,包括META-INF...
若执行成功,将在当前目录下生成`classes.dex.dex2jar.jar`文件。 4. **使用JD-GUI查看反编译后的.jar文件** 启动JD-GUI,并加载上一步生成的.jar文件,即可查看反编译后的Java代码。 5. **使用AutoSign对APK...
java -jar baksmali-2.0.3.jar -x android.odex java -jar smali-2.0.3....3. 将class生成为classes.dex文件。 命令:java -Xmx512M -jar smali-2.0.3.jar out -o classes.dex 4. 把classes.dex放入apk里面。
所谓Odex,是由android软件中的classes.dex生成的,Odex化即是把那个文件预先提取出来作用是能加快软件加载速度和开机速度。不过Odex也有缺点,那就是有时候加刷东西会出现问题。 简单说,原本系统恢复出厂设置后第...
部分手机厂商为防止自己程序,被移植到其他手机上,将classes.dex与APK文件分离,转化成一个odex文件,这样想要用分离后的程序,就要连着framework下的文件一起复制到别的手机上,这样就会无法开机 将odex 文件转成...
在Android系统中,Odex(Optimized DEX)文件是一种经过优化的Dalvik Executable格式,用于提高应用程序的运行效率。然而,对于开发者而言,Odex文件是加密和混淆的,这使得对APK进行调试和修改变得困难。"Deodex"...
NULL 博文链接:https://hellorheaven.iteye.com/blog/1212724
- **xUltimate**:用于转换odex文件至classes.dex。 - **Smali/Baksmali**:用于反编译与重新编译.dex文件。 - **APKTool**:用于反编译APK文件。 - **dex2jar**:用于将.dex文件转换为.jar文件,便于使用Java反...
因此需要将修改后的apk包再用dexopt-wrapper优化apk包后生成出odex文件,然后删除apk包里的classes.dex,并在相同目录下放置与apk包同名的odex文件。 按照原system目录的文件结构组织好后,目录复制到linux环境下...
3. **合并Odex到Apk**:在反编译的Apk结构中创建一个特定的目录,例如`classes.dex`或`lib`,并将Odex文件移动至此目录。这一步可能需要对Apk的结构有一定了解,确保Odex文件放置在正确的位置。 4. **重新打包Apk**...
- 对于预置应用,在系统编译后生成优化文件,以.ODEX结尾。 - 对于非预置应用,包含在APK文件中的DEX文件会在运行时被优化,优化后的文件将被保存在缓存中。 - **Dalvik虚拟机实例管理**:每个Android应用都在...
1. **解析D EX**:系统读取APK中的classes.dex文件,这是应用的主要字节码文件。 2. **优化编译**:Dalvik虚拟机的Just-In-Time (JIT)编译器将D EX中的字节码转换为本地机器码,优化了执行效率。 3. **存储ODEX**:...
"/path/to/new/dex/file/classes.dex", "/data/data/your.package.name/app_lib", // ODEX输出位置 null, // 附加库路径,一般为空 context.getClassLoader()); // 父ClassLoader,通常使用应用的Base...
1. **获取APK源代码**:首先,你需要拥有应用的源代码或者APK文件,因为ODEX文件是从DEX文件中生成的,而DEX文件存在于APK的classes.dex文件中。 2. **反编译APK**:使用工具如`apktool`来反编译APK,这将生成一个...
- **DexOpt优化的限制**:DexOpt是一个在Android系统启动时对Dex文件进行优化的过程,它会生成一个Optimized Dex(ODex)文件以提高运行效率。在早期版本中,DexOpt将每个类的方法ID存储在一个链表中,但由于链表...
以Qzone方案为例,在Android Dalvik机器上安装时,apk中的classes.dex会被优化成odex文件。如果在优化过程中,相关联的类都在同一个DEX文件中,就会被打上CLASS_ISPREVERIFIED的标志。如果后续通过补丁将某些类移动...
工具简介apktool/ apk的反编译,编译工具,代码为smali格式signtool 签名工具,命令为 signed.sh yours.apk,生成yours-signed.apkdex2jar 将apk中的classes.dex 转换成jar包,然后通过JD-GUI 分析代码,转换出的...