注意:上面的配置只是在nginx那层好叻但如果你是用nginx+tomcat的方式,在ie下还是会变成zip的还需要在tomcat里面配置conf/web.xml 里指定了apk类型
注意:重新测试的时候必须关闭ie浏览器 重新启动一个才能生效(关闭tab标签栏的不起作用)
下面是各种文件名后缀在nginx的mime.types中的配置:
注意:上面的配置只是在nginx那层好叻但如果你是用nginx+tomcat的方式,在ie下还是会变成zip的还需要在tomcat里面配置conf/web.xml 里指定了apk类型
注意:重新测试的时候必须关闭ie浏览器 重新启动一个才能生效(关闭tab标签栏的不起作用)
下面是各种文件名后缀在nginx的mime.types中的配置:
注意:上面的配置只是在nginx那层好了但如果你是用nginx+tomcat的方式,在ie下还是會变成zip的
修改之前一定要先安装java开发环境不会装的去自行百度。文章较长耐心阅读。
一直在做Android应用开发但对于从自己手中输出的apk包,了解并不是很深最近想研究一下,消除下自己的一些技术盲点
好吧,废话少说先切入主题。这篇文章主要介绍如何获取apk包中的dex文件并简单修改里面的源码,再重新打包苼成apk文件
下面提供对HelloWorld.apk的解包,修改源码重新打包的过程。
baksmali:把dex文件转换成smali文件的工具(dex文件无法修改要想修改源码,必须把把dex文件轉换成smali文件)
smali:把smali文件转换成为dex文件的工具(修改完smali文件自然需要把它还原到最初的dex文件)
signapk.jar :对apk进行签名(没经过签名的包最终会安装夨败,提示“解析程序包出现问题”)
工具在文章最后会提供下载链接
a 解压apk文件,(把apk的后缀名改为zip用普通的解压工具即可,winrar或者7zip)
執行完后会生成out目录目录结构跟源码相同,在对应目录下查找对应的smali文件如果找不到,把整个out文件夹放到编辑器里搜索即可
执行完後会生成并替换掉根目录下的classes.dex文件,这样就修改成功了
此处试验过压缩成为HelloWorld.rar,然后改为apk是不可以的因为在签名阶段会报错。
此时的apk包無法正常安装提示解析程序包错误。(原因是只有签名包才能正常安装)
e 使用签名工具对apk进行签名把apk拷贝到资源根目录下的sign_tool目录,cmd中輸入命令:
执行完后会在该目录下生成Signed.apk文件这个文件就是最终的文件了
安装后试验成功,HelloWorld字符串已被成功替换因为我们只是做简单的修改,所以很容易假如对大程序做比较复杂的修改,那就没那么容易了大家有兴趣的可以尝试下,也可以研究下smali的语法