文章目录

  • 1. 签名的作用
  • 2. Android Studio 如何打包签名
  • 3. 反编译 APK
    • 3.1 获取图片资源
    • 3.2 获取 .XML 资源
    • 3.3 获取代码资源

1. 签名的作用

  • Android APP都需要我们用一个证书对应用进行数字签名,不然的话是无法安装到Android手机上
  • 平时我们调试运行时到手机上时,是Android Studio会自动用默认的密钥和证书来进行签名
  • 但是我们实际发布编译时,则不会自动签名,这个时候我们就需要进行手动签名

APK签名的作用:

(1)应用程序升级
想升级应用程序,签名证书要相同,应用程序的包名称要相同

(2)应用程序模块化
Android系统允许同一个证书签名的多个应用程序在一个进程里运行,系统实际把他们作为一个单个的应用程序,以模块化的方式进行部署,用户可以独立的升级其中的一个模块。

(3)代码或者数据共享
Android提供了基于签名的权限机制,那么一个应用程序就可以为另一个以相同证书签名的应用程序公开自己的功能,可以在应用程序间以安全的方式共享代码和数据。

2. Android Studio 如何打包签名

调试运行时,Android Studio默认生成的apk在:app/build/outputs/apk目录下

手动签名步骤:

1、打开HelloWorld项目——>Build——> Generate Signed Bundle/APK…


2、选择APK——>Next


3、Create new key——>Next
如果没有key,就创建一个,有的话就选择存在的Key


4、依次填写相关信息——>Ok——>Next



5、选择release——>v1/v1+v2——>Finish


6、打包签名成功后,可以看到 D:\AndroidProject\HelloWorld\app\release 目录下的 app-release.apk 文件

7、获取密钥的签名

(1)cmd——>进入之前存放钥匙的文件夹——>输入钥匙的名字:keytool -list -v -keystore mykey.jks——>输入密钥库口令(之前设置的密码)——>可以看到签名的信息了


(2)直接通过APK获取密钥的签名
cmd——>进入 app-release.apk 文件d的目录:D:\AndroidProject\HelloWorld\app\release——>输入 keytool -printcert -jarfile app-release.apk——>可以看到签名的信息了


打包 Android APK 的方法还有很多,命令行,或者Gradle,ANT,MAVEN等等

3. 反编译 APK

反编译:通过某些反编译软件,对APK进行反编译,从而获取程序的源代码,图片,XML资源等文件

一般想要反编译一个apk,无非就是想获得三样东西:图片资源 、XML资源、代码资源

3.1 获取图片资源

(1)将 .apk后缀的文件后缀改成 .zip——>解压——>打开res目录


点进去可以看到我们想要的图片资源

3.2 获取 .XML 资源

可以在刚刚的目录下看到有 .xml 文件,但是打开的都是乱码或者是空白的

要想获取到这个 xml 资源,需要借助一个名为 AXMLPrinter2.jar 的jar包,然后把这个jar包放在 xml文件的同级目录下,用cmd命令找到这个目录,然后执行

java -jar AXMLPrinter2.jar xxxxx.xml>xxxxx.txt



可以看到多了 AndroidManifest.txt 文件,打开就是 xml资源的内容了

3.3 获取代码资源

首先要准备两个工具:dex2jar 和 jd-gui
dex2jar主要是用来把之前zip解压出来的classed.dex转成jar包的
jd-gui主要是用来打开jar包的

将之前zip文件里的 classes.dex 放到 dex2jar目录下,注意必须要跟 d2j-dex2jar.bat 是同级目录

接着用 cmd,cd 到dex2jar目录下,输入命令:d2j-dex2jar.bat classes.dex


然后目录里会多一个classes-dex2jar.jar 的jar包


注意:如果在cmd里输入命令之后,出现如下错误

dex2jar classes.dex -> .\classes-dex2jar.jar
Detail Error Information in File .\classes-error.zip
Please report this file to http://code.google.com/p/dex2jar/issues/entry if possible

这是因为现在旧版的比如2.0版不能反编译某些dex了,可以下载2.1版本的 dex2jar

最后在用 jd-gui 把此jar包打开,最终apk的代码就这样被反编译出来了


Android(三)——将程序打包成APK文件,进行APK签名以及反编译APK相关推荐

  1. 反编译apk文件查看源码,反编译apk获取资源

    之前做过反编译apk文件的,原本想的就是应该做下总结的,后来...不知道后来发生了什么,一定不是因为我懒了.总之,今天领导让我研究下一个口碑比较好的app,看下它某个功能怎么实现的,用的什么技术,又扒 ...

  2. android项目打包apk,Android Studio将程序打包成APK的步骤详解

    第一步:先点击Build选择GenerateSigned APK 第二步:如果之前有编译成APK的话,就直接选择Choose existing已经存在的key:如果没有编译成APK那就选择Create ...

  3. 把Java程序打包成jar文件包并执行

    把Java程序打包成jar文件包并执行 1.首先要确认自己写的程序有没有报错. 2.第一次我写的是Web Project到现在,我一直没有执行成功,所以最好创建的是java Project 打包步骤: ...

  4. 如何把一个java程序打包成exe文件,运行在没有java虚

    如何把一个java程序打包成exe文件,运行在没有java虚 核心提示:首先,将编译好的程序打包成jar文件,然后做出exe,这样代码就不可见了:但是exe文件在没有安装jre的电脑上不能运行,如果要 ...

  5. 【C++】VS2010将写好的程序打包成安装文件发布

    参考链接:http://blog.csdn.net/yongh701/article/details/51326142 我们可以将自己写好的VS2010程序打包成安装文件,给用户安装,具体步骤如下: ...

  6. java 程序包jar_把Java程序打包成jar文件包并执行

    把Java程序打包成jar文件包并执行 1.首先要确认自己写的程序有没有报错. 2.第一次我写的是Web Project到现在,我一直没有执行成功,所以最好创建的是java Project 打包步骤: ...

  7. java代码执行 打包jar_Java程序打包成jar文件包并执行的方法

    这篇文章主要介绍了把Java程序打包成jar文件包并执行的方法,非常具有实用价值,需要的朋友可以参考下 本文介绍了把Java程序打包成jar文件包并执行的方法,分享给大家,具体如下: 1.首先要确认自 ...

  8. java打包成jar_把Java程序打包成jar文件包并执行的方法

    本文介绍了把Java程序打包成jar文件包并执行的方法,分享给大家,具体如下: 1.首先要确认自己写的程序有没有报错. 2.第一次我写的是Web Project到现在,我一直没有执行成功,所以最好创建 ...

  9. java 程序打包成jar_把Java程序打包成jar文件包并执行的方法

    本文介绍了把Java程序打包成jar文件包并执行的方法,分享给大家,具体如下: 1.首先要确认自己写的程序有没有报错. 2.第一次我写的是Web Project到现在,我一直没有执行成功,所以最好创建 ...

最新文章

  1. Ubuntu14.04 64位上配置终端显示git分支名称
  2. Eclipse安装Android开发环境
  3. 7系统启动到一半停止_太突然!国际饮料巨头计划狂砍一半品牌,这些饮料就快喝不到了…...
  4. js修改html不成功,为什么这段代码中用js修改css样式中的display属性却不成功?
  5. 开启和关闭wifi的代码段
  6. python动态类型的坑_python进阶教程之动态类型详解
  7. PyTorch 1.5上线:加入稳定C++前端,高级自动梯度API
  8. 经典重温:CVPR 2010 What is an object?
  9. Linux---阻塞与非阻塞、同步与异步的区别
  10. Image合并添加文字内容
  11. 3. 什么是icmp?icmp与ip的关系_公共关系与人际交往能力自主模式课程相关
  12. 「每天一道面试题」Redis的优势有哪些?
  13. ModelSim的使用详解
  14. 完全免费的公众号文章批量下载器
  15. 百度云直链下载-IDM+网页解析(三)
  16. Flutter系列-flutter路由管理
  17. 人工智能培训机构哪个好?求求你们别再去培训机构学假的人工智能了!
  18. RationalDMIS 7.1 圆跳动
  19. 李慧芹数据结构代码(顺序表)
  20. 【bzoj 1022】 小约翰的游戏John 【SHOI2008】

热门文章

  1. oracle 拼接sql 日期,动态SQL对日期处理注意事项
  2. ubuntu 20.04 设置网关_如何把Ubuntu升级到Ubuntu 20.04 LTS 最新版本
  3. [转载]模糊系统:挑战与机遇并存——十年研究之感悟 王立新
  4. ERP(Enterprise Resource Planning)
  5. 2022.2.21显示器连接器引脚信号定义1
  6. c语言编程*字母图形,BIT网教c语言练习_编程复习1输出图形
  7. c++ socket编程_C/C++中的Socket编程
  8. asynchttpclient 超时_深圳拟出台标准:外卖配送超时,要补偿消费者
  9. 软件性能测试报告_软件测试新手请收好:测试基本流程、及如何写好测试用例全在这里!...
  10. 转:Linux搭建git私服