1-4 打包和反编译

作者: 努力学习的安同学 | 来源:发表于2018-05-23 08:35 被阅读0次

    标注:本文为个人整理,仅做自己学习参考使用,请勿转载和转发
    2018-05-23: 初稿,参考博主coder-pig

    1、什么是签名,有什么用

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

    1. 应用程序升级:如果你希望用户无缝升级到新的版本,那么你必须用同一个证书进行签名。这是由于只有以同一个证书签名,系统才会允许安装升级的应用程序。如果你采用了不同的证书,那么系统会要求你的应用程序采用不同的包名称,在这种情况下相当于安装了一个全新的应用程序。如果想升级应用程序,签名证书要相同,包名称要相同!
    2. 应用程序模块化: Android系统可以允许同一个证书签名的多个应用程序在一个进程里运行,系统实际把他们作为一个单个的应用程序,此时就可以把我们的应用程序以模块的方式进行部署,而用户可以独立的升级其中的一个模块。
    3. 代码或者数据共享: Android提供了基于签名的权限机制,那么一个应用程序就可以为另一个以相同证书签名的应用程序公开自己的功能。以同一个证书对多个应用程序进行签名,利用基于签名的权限检查,你就可以在应用程序间以安全的方式共享代码和数据了。 不同的应用程序之间,想共享数据,或者共享代码,那么要让他们运行在同一个进程中,而且要让他们用相同的证书签名。

    2、Android Studio如何打包签名

    打包还有关于多渠道打包的内容,这部分只介绍最简单的打包签名,1中说的调试时默认生成的apk在:app/build/outputs/apk目录下! 和Eclipse并不相同,Eclipse是在bin目录下生成的!

    image

    好的,打开我们的AS上的Hello World项目,点击菜单:

    Build -> Generate Signed APK...

    image

    ②弹出窗口,如果没有key,就创建一个,有的话就选择存在的Key

    image

    ③没有,我们新建一个,可根据自己需要填写相关项:

    image

    ④好的,点击OK后,可以看到我们密码的信息,可能需要我们填入密码了,填写下:

    image

    ⑤点击Next:

    image

    ⑥点击Finish稍等一会儿会出现下述提示,说明应用已经打包签名成功了:

    image

    ⑦可以看到打包后的APK已经安详地躺在我们的app目录下了:

    image

    ⑧到第七步就已经打包签名完成了,如果你要验证是否签名,只需要输入下述cmd指令

    image image

    3、反编译APK获取代码

    "反编译Apk",看上去好像好像很高端的样子,其实不然,就是通过某些反编译软件,对我们的APK进行反编译,从而获取程序的源代码,图片,XML资源等文件;不知道你有没有这样做过,看到一个别人的一个APP界面做得很精美,或者你看上别人的图片素材,简单点的,我们可以下载别人的APK,然后改下后缀名,改成xxx.zip,然后解压: 笔者随便解压了一个APK:

    image

    我们可以打开res目录,获取里面的图片素材

    image

    但是,这种方法,获得的只会是一些.png,或者.jpg这样的位图文件资源,如果是xml类的资源,打开我们会发现是乱码,并且假如我们想看APK程序的Java代码,也是行不通的,因为他们都打被打包到classes.dex文件中! 但是反编译可以解决你的需要~另外,切勿拿反编译来做违法的事,比如把人家的APK重新打包后使用自己的签名然后发布到相关市场...另外,我们是参考别人的代码,而不是完全拷贝!!!切记!!

    3.1 要准备的工具

    1. apktool:获取资源文件,提取图片文件,布局文件,还有一些XML的资源文件
    2. dex2jar:将APK反编译成Java源码(将classes.dex转化为jar文件)
    3. jd-gui:查看2中转换后的jar文件,即查看Java文件 为了方便各位读者,这里将三个打包到一起放到云盘中,又需要的可以进行下载: 反编译相关的三个工具.zip

    这个工具是win版本使用的,我电脑是mac的,所以用不了,唉,自己找找,然后试试给自己写的小应用反编译一下吧!等找到了相关软件再补充这个,win和mac版本的都补充下。

    相关文章

      网友评论

        本文标题:1-4 打包和反编译

        本文链接:https://www.haomeiwen.com/subject/oopljftx.html