当前位置: 手机中国论坛 > 荣耀论坛 > 荣耀3c论坛 > 教程 > 帖子正文

[教程] 如何合并odex文件到apk中

2014-07-28 17:25:56 24776 评论(177)

凡是Android系统的经验用户大都有这样一种想法:发现其他ROM中某款apk很不错,希望把这个apk文件移植到自己的系统中。但是ROM中的apk文件往往不完整,大都被分离成apk和odex文件。所以我们需要将odex文件整合到对应的apk文件中,生成一个独立的apk安装包。


一、准备工作:

1、下载以下附件中的文件。


2、提取ROM文件

1)提取/system/framework里面的: core.jar ext. jarframework. Jarandroid.policy. jarservices.jar。最好是把目录下所有的文件都提取出来,省的提示缺少文件包。


2)当然还要提取你想要安装的apk文件和对应的odex文件,位于/system/app下。假设这个文件是Music.apkMusic.odex


二、设置JDK6环境变量【重要】

成功设置JDK6环境变量关系到下面介绍代码运行的成败。

1.安装JDK6.exe,是JDK,不是JRE,请注意!

2.运行cmd,回车后看看再输入java,出来一堆java命令就表示配置成功了,无需进行环境设置。

【图片1】如何合并odex文件到apk中

如果出现java不是内部命令请看下面的java环境设置。

环境设置
1.进入计算机--属性--高级系统设置--环境变量
2.系统变量中 新建变量
变量名:JAVA_HOME 变量值:C:Program FilesJavajdk1.6.0_43
变量名:CLASSPATH 变量值: C:ProgramFilesJavajdk1.6.0_43libdt.jar;C:Program FilesJavajdk1.6.0_43libtools.jar;.
3.系统变量 找Path变量编辑,加上;C:ProgramFilesJavajdk1.6.0_43bin注意前面有个分号
4.全部完成后点击两次确定,就OK了。
5.运行cmd回车后看看再输入java,出来一堆java命令就表示配置成功了。

【图片2】如何合并odex文件到apk中


三、分解odex文件为class文件

1、把下载下来的smali-2.0.3.jar和baksmali-2.0.3.jar,以及从ROM中提取的所有文件,放到D:odex文件夹下,在ODEX下建立framework目录

2、执行cmd,在命令窗口中输入:

D:


cd odex

【图片3】如何合并odex文件到apk中

3、再输入如下代码并回车,注意空格:

java -jar baksmali-2.0.3.jar -x music.odex-d framework

【图片4】如何合并odex文件到apk中

命令完成之后,在D:odex下会生成一个out文件夹,其中包括所有的class文件。

【图片5】如何合并odex文件到apk中

如果出现问题,比如什么异常,缺少包什么的,就更到rom里面把出错信息里面要求的包拿出来,放到当前目录下。


你的baksmali 版本太高,需要参数-d 指定framework,

例如,你把baksmali放在了目录xxoo下面,然后再在xxoo下面建立目录framework,然后把系统的framework里面的东西统统放进这里。
然后命令这样写 java -jar baksmali.jar -x SystemUI.odex -d framework 就好了。


4、将class生成为classes.dex文件:

java -Xmx512M -jar smali-2.0.3.jarout -o classes.dex

【图片6】如何合并odex文件到apk中

命令完成之后,在D:odex下会生成一个classes.dex文件。

【图片7】如何合并odex文件到apk中

5、将classes.dex拖入music.apk中

这步最简单啦!用winRAR打开apk文件,左键点住classes.dex拖拽到music.apk中,点击确定即可。


【图片8】如何合并odex文件到apk中

6、最后一步,给apk签名:

解压下载的“签名,反反编译工具.rar”,运行【图片9】如何合并odex文件到apk中,按提示操作,生成的签名后的apk文件就可以用啦!


本帖有隐藏内容,需要回复楼主之后才能查看哦~

谢谢楼主,楼主威武! 登录 | 注册

最新评论(177)
林培胜 LV.1 发表于:2014-08-04 03:31:54 来自:PC端
看帖顶帖这是必须滴!强烈支持楼主!
回复
方土 LV.1 发表于:2014-09-01 13:28:49 来自:PC端
感谢分享
回复
rqgtrqgt LV.1 发表于:2014-09-02 16:08:02 来自:PC端
什么都要回复啥!
回复
??(^o^)/~ LV.1 发表于:2014-09-22 12:35:05 来自:PC端 5#
谢谢大神
回复
2378485874 LV.1 发表于:2014-09-26 22:51:04 来自:PC端 6#
无奈,本人不知
回复
qianqun LV.1 发表于:2014-10-01 16:12:06 来自:PC端 7#
支持,你,备用
回复
pxiyi LV.1 发表于:2014-10-18 19:06:19 来自:PC端 8#
如何合并odex文件到apk中
回复
夏目的温柔 LV.1 发表于:2014-11-15 11:25:19 来自:PC端 9#
顶!!!!!!!!!
回复
黄函正 LV.1 发表于:2014-11-17 15:19:03 来自:PC端 10#
,按提示操作,生成的签名后的apk文件就可以用啦
回复
wj-11 LV.6 发表于:2014-11-19 00:06:44 来自:PC端 11#
这是必须滴
回复
gdnh2 LV.1 发表于:2014-11-22 20:19:26 来自:PC端 12#
神贴啊,很详细
回复
雨天〃唱情歌 LV.1 发表于:2014-11-22 21:23:35 来自:PC端 13#
ijhthrt6
回复
蒋喆 LV.1 发表于:2014-11-27 00:03:12 来自:PC端 14#
kjjjjjjjj
回复
sac036 LV.1 发表于:2014-11-28 02:41:36 来自:PC端 15#
强烈支持楼主!
回复
壮成一道雷 LV.1 发表于:2014-11-28 16:15:00 来自:PC端 16#

看帖顶帖这是必须滴!强烈支持楼主!
回复
-007 LV.1 发表于:2014-11-29 22:16:00 来自:PC端 17#
最好不是骗回复的
回复
蚂蚁在跑 LV.2 发表于:2014-12-03 09:05:46 来自:PC端 18#
哦哦哦哦哦哦哦哦哦哦哦哦哦
回复
lirong6845 LV.1 发表于:2014-12-03 21:32:58 来自:PC端 19#
为什么我不能反编译。总是出错。
Error occurred while loading boot class path files. Aborting.
org.jf.util.ExceptionWithContext: Cannot locate boot class path file /system/fra
ework/core.odex
at org.jf.dexlib2.analysis.ClassPath.loadClassPathEntry(ClassPath.java:2
7)
at org.jf.dexlib2.analysis.ClassPath.fromClassPath(ClassPath.java:161)
at org.jf.baksmali.baksmali.disassembleDexFile(baksmali.java:67)
at org.jf.baksmali.main.main(main.java:280)
回复
52SJZG LV.1 发表于:2014-12-05 13:07:10 来自:PC端 20#
我来学习学习了,谢谢分享!
回复
jajat LV.1 发表于:2014-12-05 22:35:50 来自:PC端 21#
看。。。。。。。。。。。。。。。。。
回复
sxp雨落 LV.1 发表于:2014-12-06 23:25:23 来自:PC端 22#
试试看
回复
policewj LV.1 发表于:2014-12-08 19:55:12 来自:PC端 23#
看帖顶帖这是必须滴!强烈支持楼主!
回复
tj3695490 LV.1 发表于:2014-12-15 22:32:00 来自:PC端 24#
希望能对我有帮助
回复
jgwhater100 LV.1 发表于:2014-12-16 11:54:09 来自:PC端 25#
ZHICHI~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
回复

您需要注册登录后,才能回帖哦! 登录 | 注册

热帖排行