最近在玩手机的时候,发现老多程序都不能安装在sd卡上,这样使手机内存变的越来越小,于是就查了一下。需要将manifest.xml文件反编译,然后再打包签名。
下面先说说反编译吧。
首先介绍.dex的反编译,下面这几步只能反编译java文件
工具下载:需用到dex2jar和JD-GUI这2个工具
dex2jar下载地址:http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zipJD-GUI下载地址:windows版JD-GUI:http://laichao.googlecode.com/files/jdgui.zip
Linux版JD-GUI:http://laichao.googlecode.com/files/jd-gui-0.3.2.linux.i686.tar.gz
步骤:
1.首先找到Android软件安装包中的classes.dex
把.apk文件改名为.zip,然后解压缩,得到其中的classes.dex文件,它就是java文件编译再通过dx工具打包成的,所以现在我们就用上述提到的2个工具来逆方向导出java源文件
2.把classes.dex拷贝到dex2jar.bat所在目录。
在命令行模式下定位到dex2jar.bat所在目录,运行 dex2jar.bat classes.dex ,生成classes.dex.dex2jar.jar
3.运行JD-GUI工具(它是绿色无须安装的)
打开上面的jar文件,即可看到源代码
其次,介绍.xml的反编译。下面这几部是对.xml文件的反编译,如果要更改安装位置的话只需要操作下面这几步
反编译apk生成程序的源代码和图片、XML配置、语言资源等文件。
工具下载:
在http://code.google.com/p/android-apktool/下 载获得,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip两个包都要下。
步骤:
1.解压缩下载的两个文件包,
apktool-install-windows-2.1_r01-1.zip解压缩后得到的包里有aapt.exe 和apktool.bat.
(注意要把apktool-1.0.0.tar.bz2解压后的一个.jar 文件copy进来)
2.打开命令窗口 (开始 > 运行,输入cmd,回车。)进入到apktool.bat的文件夹里。
输入:
apktool d C:\***.apk C:\***文件夹 解包命令
apktool b C:\***文件夹 C:\***.apk 打包命令
(命令行解释:apktool d 要反编译的文件 输出文件夹,这个输出文件夹不需要在c盘存在)
特别注意:你要反编译的文件一定要放在C盘的根目录里,
3.打开 C:\***文件夹 就可以得到我们学院的各种资源了。
对于要更改安装位置,使其可以安装在sd卡上遵循以下步骤:
在 <manifest> 元素中包含android:installLocation 属性,设置其值为”preferExternal” 或 “auto”。例如:
<?xml version="1.0" encoding="utf-8"?>
<manifest android:installLocation="auto" ...>
note: preferExternal属性默认优先安装在sd卡上,如果没有sd卡的话就安装到内存中。auto不一定会安装在哪,但是可以在应用程序管理器来手动更改安装在哪。那个preferExternal貌似也可以。
最后就是要将文件打包,并且要数字签名,如果不签名就会安装不了.下面是一个打包和数字签名的程序下载地址
这个工具里带的那个反编译工具没有apktool命令好用。使用的话运行apktool.exe程序按照上面的菜单来就行了
PS:下面说说我反编译和打包的几个程序
QQ:version:v69,这个程序不知道怎么的,反编译打包签名之后安装就是不能运行。
人人客户端:version:4.2.1 我的手机里自带了一个人人客户端,我在做完这些之后安装说数字签名不正确,然后我就把它给卸了然后重新装了,这样就可以安装运行了。
快拍二维码:版本忘了。这个程序按照上面的步骤一点错误也没有。ok!!