回编译
‘壹’ APK反编译后回编译失败是为什么
、反编译=回编译后分别是
smali目录 回编译为 classes.dex 文件
res目录 回编译为 resources.arsc 文件
2、回编译顺序
在回编译时,会先检查“源”即resources
当你汉化文件,修改出错了(缺少一个符号也不行),
那么回编译会自动跳过编译res文件夹,直接回编译smali 。
所以,如果没有对smali(classes.dex)汉化,那么建议大家删掉这个文件夹,
这要会大大加快回编译速度。1、反编译=回编译后分别是
smali目录 回编译为 classes.dex 文件
res目录 回编译为 resources.arsc 文件
2、回编译顺序
在回编译时,会先检查“源”即resources
当你汉化文件,修改出错了(缺少一个符号也不行),
那么回编译会自动跳过编译res文件夹,直接回编译smali 。
所以,如果没有对smali(classes.dex)汉化,那么建议大家删掉这个文件夹,
这要会大大加快回编译速度。
3、出错问题1
在汉化时,往往会不小心删掉一些符号,如 "<" ">"符号等等。
<string name="app_name">File Manager</string>
<string name="app_name">文件管理器/string>
<string name="app_name"文件管理器</string>
这些小小的错误都会导致回编时译检查出错。
所以汉化时,注意对校,然后再回编译。
建议使用一些高级的文本编辑器,支持语法高亮视图的。
4、出错问题2
最近发现有些APK文件 反编译后,就算不汉化直接回编译,都会出错。
有可能的原因1,反编译后XML文件语法中@符号 前面多了"\" (\@ ),
用文本编辑工具 直接替换【\@】为【@】,应该可以解决。
建议使用最新版本的反编译工具。
5、建议大家使用新版本的APKTool工具,
当然如果新的有问题也可以试试旧的一、系统文件汉化再次强调
1、汉化Settings.apk(系统设置)、MMS.apk(信息)、Phone.apk(电话)、
等等系统文件,一定要先 安装构架,具体看另个文件
<关于APKTool工具反编译Settings.apk问题>。
2、系统文件汉化完后不需要签名,直接替换汉化后的文件,就可以了。
主要是,系统文件放在系统目录,无需再次读取签名获得权限,已经是高级了。
二、打包说明
1、通常汉化完回编译后,会自动生成所有APK内的文件,或者自动生成*.APK文件。
但是建议大家不要直接使用该文件,进了使用替换法,替换掉你汉化后的文件,
如:resources.arsc,如果修改过的图片,等等…
2、很多人对于APK文件 解压缩或压缩 都用“WinRAR”或“好压”,这里不推荐。
希望大家安装7-Zip这个压缩工具,对于zip格式的支持是最好的。而且很方便,
不需要重新关联apk 直接右键打开就行了。替换直接拖拉进去,就OK了一、回编译出错问题
(1.提示 strings.xml 最后一行错误,检查是否</string>符号错误;
在汉化时,往往会不小心删掉一些符号,如 "<" ">"符号等等。
<string name="app_name">File Manager</string>
<string name="app_name">文件管理器/string>
<string name="app_name"文件管理器</string>
(2.提示 strings.xml 最顶部含中文代码首行错误,编码格式不对,转换成 UTF-8;
(3.提示 public.xml 出错,检查改动过的 arrays.xml 是否代码有错误的地方;
二、一切能正常但无法回编译
还有一种情况,apktool最新版本能正常反编译一个apk文件,在未做任何修改的情况下,无法回编译。
这是就要注意了,可以尝试一下用低版本的apktool进行【反编译】,然后在用高版本的apktoo工具【回编译】。
这里向大家推荐用 【APKDB】 这个工具,很方便,反编译时可以选择apktool的版本。
‘贰’ mt管理器的回编译在哪里
这个软件真的很好用,比如想改个软件名字啊,美化啊,汉化啊,都可以,强烈推荐。MT管理器是一款文件管理器*延用java平台的双窗口操作模式,便捷的九宫格菜单操作*root操作:挂载磁盘读写/只读,修改文件权限、用户组,浏览系统限制目录(/data等)*批量复制、移动、删除、重命名、创建符号链接、修改权限*强大的搜索功能,支持对文件名及文件内容、大小进行搜索*显示apk图标、图片缩略图,支持缩略图缓存、显示ZIP内图片缩略图*内置文本编辑器、图片浏览器、音乐播放器、字体预览器、脚本执行器*完整的ZIP文件操作功能,可直接添加、重命名、删除ZIP内文件,免二次压缩*支持打开RAR文件及解压*APK编辑功能,包括编辑DEX,ARSC,XML,APK签名,zipalign优化*其它普通文件操作功能
‘叁’ 反编译,回编译什么意思有什么用!我在学习制作刷机包
原有的包进行修改
‘肆’ android studio 如何回编译一个APP
android studio中不能编译反编译出来的文件,android studio只能编译源代码。
1.反编译Apk得到Java源代码
首先要下载两个工具:dex2jar和JD-GUI
前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。
具体步骤:
首先将apk文件,将后缀改为zip,解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的;
解压下载的dex2jar,将classes.dex复制到dex2jar.bat所在目录。在命令行下定位到dex2jar.bat所在目录
运行 dex2jar.bat classes.dex
生成 classes.dex.dex2jar.jar
2.反编译apk生成程序的源代码和图片、XML配置、语言资源等文件
还是下载工具,这次用到的是apktool
具体步骤:
将下载的两个包解压到同一个文件夹下,应该会有三个文件:aapt.exe,apktool.bat,apktool.jar
1.解压缩下载的两个文件包,apktool-install-windows-r04-brut1.tar解压缩后得到的包里有aapt.exe 和apktool.bat.(注意要把apktool1.4.1.tar解压后的一个.jar 文件到解压后的\apktool-install-windows-r04-brut1文件夹里)
2.特别注意:你要反编译的文件一定要放在C盘的根目录里
‘伍’ 反编译之后无法回编译是怎么回事
使用apktool进行apk的反汇编时,没有出现问题(有问题的自行解决),
但是进行回汇编时出现:
F:\apktool>apktool b Hello Hello.apk
Exception in thread "main" brut.androlib.AndrolibException: brut.directory.PathN
otExist: apktool.yml
at brut.androlib.Androlib.readMetaFile(Unknown Source)
at brut.androlib.Androlib.build(Unknown Source)
at brut.androlib.Androlib.build(Unknown Source)
at brut.apktool.Main.cmdBuild(Unknown Source)
at brut.apktool.Main.main(Unknown Source)
Caused by: brut.directory.PathNotExist: apktool.yml
at brut.directory.AbstractDirectory.getFileInput(Unknown Source)
... 5 more
经验证是,反汇编时没有生成apktool.yml
进行反汇编时,改用命令apktool d -r xx.apk xx便可以解决(加上了-r选项)
‘陆’ 回编译出现这个该怎么破
正在回编译apk
I: Checking whether sources has changed...
I: Smaling...
I: Checking whether resources has changed...
I: Building resources...
C:\Users\Administrator\Desktop\Apktool\APK\res\values\styles.xml:61: error: Erro
r retrieving parent for item: No resource found that matches the given name *Wid
get.AppCompat.Base*.
C:\Users\Administrator\Desktop\Apktool\APK\res\values\styles.xml:101: error: Err
or retrieving parent for item: No resource found that matches the given name *Wi
dget.AppCompat.Base*.
C:\Users\Administrator\Desktop\Apktool\APK\res\values\styles.xml:149: error: Err
or retrieving parent for item: No resource found that matches the given name *Wi
dget.AppCompat.Base*.
C:\Users\Administrator\Desktop\Apktool\APK\res\values\styles.xml:192: error: Err
or retrieving parent for item: No resource found that matches the given name *Wi
dget.AppCompat.Base*.
C:\Users\Administrator\Desktop\Apktool\APK\res\values\styles.xml:208: error: Err
or retrieving parent for item: No resource found that matches the given name *Wi
dget.AppCompat.Base.DropDownItem*.
C:\Users\Administrator\Desktop\Apktool\APK\res\values\styles.xml:234: error: Err
or retrieving parent for item: No resource found that matches the given name *Wi
dget.AppCompat.Base*.
C:\Users\Administrator\Desktop\Apktool\APK\res\values\styles.xml:241: error: Err
or retrieving parent for item: No resource found that matches the given name *Wi
dget.AppCompat.Light.Base*.
C:\Users\Administrator\Desktop\Apktool\APK\res\values\styles.xml:260: error: Err
or retrieving parent for item: No resource found that matches the given name *Te
xtAppearance.AppCompat.Base*.
C:\Users\Administrator\Desktop\Apktool\APK\res\values\styles.xml:293: error: Err
or retrieving parent for item: No resource found that matches the given name *Wi
dget.AppCompat.Base*.
C:\Users\Administrator\Desktop\Apktool\APK\res\values-v14\styles.xml:52: error:
Error retrieving parent for item: No resource found that matches the given name
*Widget.AppCompat.Base*.
C:\Users\Administrator\Desktop\Apktool\APK\res\values\styles.xml:487: error: Err
or retrieving parent for item: No resource found that matches the given name *Th
eme.AppCompat.Base*.
Exception in thread "main" brut.androlib.AndrolibException: brut.androlib.Androl
ibException: brut.common.BrutException: could not exec command: [aapt, p, --min-
sdk-version, 9, --target-sdk-version, 19, -F, C:\Users\ADMINI~1\AppData\Local\Te
mp\APKTOOL2234454519160668885.tmp, -0, arsc, -I, C:\Users\Administrator\apktool\
framework\1.apk, -S, C:\Users\Administrator\Desktop\Apktool\APK\res, -M, C:\User
s\Administrator\Desktop\Apktool\APK\AndroidManifest.xml]
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:358)
at brut.androlib.Androlib.buildResources(Androlib.java:283)
at brut.androlib.Androlib.build(Androlib.java:206)
at brut.androlib.Androlib.build(Androlib.java:176)
at brut.apktool.Main.cmdBuild(Main.java:228)
at brut.apktool.Main.main(Main.java:79)
Caused by: brut.androlib.AndrolibException: brut.common.BrutException: could not
exec command: [aapt, p, --min-sdk-version, 9, --target-sdk-version, 19, -F, C:\
Users\ADMINI~1\AppData\Local\Temp\APKTOOL2234454519160668885.tmp, -0, arsc, -I,
C:\Users\Administrator\apktool\framework\1.apk, -S, C:\Users\Administrator\Deskt
op\Apktool\APK\res, -M, C:\Users\Administrator\Desktop\Apktool\APK\AndroidManife
st.xml]
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.jav
a:357)
at brut.androlib.Androlib.buildResourcesFull(Androlib.java:336)
... 5 more
Caused by: brut.common.BrutException: could not exec command: [aapt, p, --min-sd
k-version, 9, --target-sdk-version, 19, -F, C:\Users\ADMINI~1\AppData\Local\Temp
\APKTOOL2234454519160668885.tmp, -0, arsc, -I, C:\Users\Administrator\apktool\fr
amework\1.apk, -S, C:\Users\Administrator\Desktop\Apktool\APK\res, -M, C:\Users\
Administrator\Desktop\Apktool\APK\AndroidManifest.xml]
at brut.util.OS.exec(OS.java:89)
at brut.androlib.res.AndrolibResources.aaptPackage(AndrolibResources.jav
a:355)
... 6 more
按任意键返回目录
‘柒’ 反编译出源代码后,怎样修改并且编译回去
反编译完成并且修改代码完成后,输入代码:apktool d framework-res 即可完成回编译
回编译后的新的 apk在framework/dis 文件夹里面
如果反编译的是系统文件,比如,SystemUI.apk 那么必须进行挂载框架,反编译时,必须敲入一下命令:(然后再重复7-9步骤)
apktool if framework-res.apk
apktool if SystemUI.apk
对于三星手机(比如9100、9108/9100G),如果反编译SystemUI.apk要敲入一下命令进行框架挂载apktool if framework-res.apk
apktool if twframework-res.apk
apktool if SystemUI.apk
回编译的命令是 apktool b XXX (没有后面的apk后缀)反编译的命令是 apktool d xxx (有后面的apk)
‘捌’ 回编译这是什么意思
我发现。。。。
你自己看吧。。。。
1:反编译非系统apk前需要把APK命名为123.apk
2:反编译系统apk时需要将Rom的framework-res.apk放置在 此目录下,选择数字5执行安装! 如果是HTC的Rom,你还需要将com.htc.resources.apk也 安装一次!
3:反编译之前如果目录里有上次反编译产生的apk,framework 文件夹清除,否则不能正常反编译!数字7可以快速清理!
4: 路径默认放在D盘根目录下面,大家不要自己改动否则可能会出现一些文件丢失的情况!
‘玖’ 有什么软件可以直接反编译软件,而且还要可以回编译。
工具/原料
电脑必须装JAVA
JAVA电脑环境教程
apktool
方法/步骤
1. 配置好JAVA环境变量,下载:apktool 解压的文件放在C盘根目录的apktool文件夹里(apktool文件夹自己创立)
打开命令提示符,(开始-运行-输入cmd)
2. 输入:cd apktool 系统指令到了apktool文件夹(这里就是为什么要把解压的apktool解压的文件放到apktool文件夹的原因,当然你也可以自命名文件夹的名称,那么比如arc,那么指令就变成了:cd arc 前提是你必须把apktool解压的文件放到这个文件夹里面)
3. 使用RE管理器把系统里面的framework-res.apk 与 SystemUI.apk 提取出来放在apktool文件夹里面
4. 如果只是想反编译framework-res.apk
输入apktool if framework-res.apk(框架的建立)
5. 开始最重要的反编译,输入指令,apktool d framework-res.apk
(反编辑的APK一定要用没换过图片的,否则回编辑失败)
6. 最后反编译完成
7. 修改代码完成后,输入代码:apktool d framework-res 即可完成回编译
8. 如果反编译的是系统文件,比如,SystemUI.apk 那么必须进行挂载框架,反编译时,必须敲入一下命令:(然后再重复4-7步骤)
apktool if framework-res.apk
apktool if SystemUI.apk
9. 对于三星手机(比如9100、9108/9100G),如果反编译SystemUI.apk要敲入一下命令进行框架挂载apktool if framework-res.apk
apktool if twframework-res.apk
apktool if SystemUI.apk
10. 回编译的命令是 apktool b XXX (没有后面的apk后缀)反编译的命令是 apktool d xxx (有后面的apk)