apk反编译及安装位置的更改

最近在玩手机的时候,发现老多程序都不能安装在sd卡上,这样使手机内存变的越来越小,于是就查了一下。需要将manifest.xml文件反编译,然后再打包签名。

下面先说说反编译吧。

首先介绍.dex的反编译,下面这几步只能反编译java文件

工具下载:需用到dex2jar和JD-GUI这2个工具

dex2jar下载地址http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip
JD-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貌似也可以。

最后就是要将文件打包,并且要数字签名,如果不签名就会安装不了.下面是一个打包和数字签名的程序下载地址

http://download.csdn.net/detail/zqiang_55/3779841

这个工具里带的那个反编译工具没有apktool命令好用。使用的话运行apktool.exe程序按照上面的菜单来就行了

PS:下面说说我反编译和打包的几个程序

QQ:version:v69,这个程序不知道怎么的,反编译打包签名之后安装就是不能运行。

人人客户端:version:4.2.1 我的手机里自带了一个人人客户端,我在做完这些之后安装说数字签名不正确,然后我就把它给卸了然后重新装了,这样就可以安装运行了。

快拍二维码:版本忘了。这个程序按照上面的步骤一点错误也没有。ok!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值