用Apktool获取别人APP中的图片及布局资源进行学习

当我们看到一款UI布局很漂亮的APP,想要了解别人是怎么实现的时候,就可以通过Apktool工具来反编译别人的apk,从而获取图片及布局资源来进行学习。

其实我们下载到的Android 应用,是可以直接把后缀名改成zip的,然后解压zip就可以得到对应的文件目录

其中,res为所有资源文件,META-INF为签名信息,classes.dex为java源码编译后生成的字节码。

原以为这样轻松的就可以拿到别人的布局源码了,实则不然,点开res/layout下的一个布局文件看看

然后发现里面都是XML文件经过编译的机器码。那么怎么获取别人的布局文件呢?这时,Apktool就派上用场了。

首先下载安装Apktool:

下载地址:http://ibotpeaches.github.io/Apktool/install/

下载对应版本

1.将wrapper script右键选择连接另存为得到apktool.bat文件,

2.在https://bitbucket.org/iBotPeaches/apktool/downloads下载最新版本的apktool.jar包如现在最新的apktool_2.1.0.jar,并删除版本号重名名为apktool.jar

3.将apktool.bat、apktool.jar、及想要编译的apk文件放在同一文件夹下

4.通过cmd进入对应目录运行apktool.bat   d  -f    [apk文件 ]   [输出文件夹]就可以得到相应的布局资源文件了,截图如下

这时打开res下的文件目录会发现有很多abc及notfication开头的文件,这些文件是自动生成的,并不是开发者真正写的布局文件,我们需要看的是其他xml文件,如黄色部分。

点开就可以看到相应的xml布局源码了

如果想要看别人java源码,学习别人功能的实现的话,就要用到dex2jar及jd-gui了,

其中dex2jar可以将apk改成zip加压后得到的classes.dex文件反编译成jar文件。

jd-gui:可以查看dex2jar转换出来的jar文件,就是我们想要的java源码了。

想看详细用法的可以参考:Android
APK反编译详解

转载请注明出处:http://blog.csdn.net/fzw_faith/article/details/51188815

时间: 2024-10-26 11:12:40

用Apktool获取别人APP中的图片及布局资源进行学习的相关文章

通过Appium获取Android app中webview

因为要测试Android app中嵌入的web页面,所以需要从native切换到webview.网上查了好多帖子,都用到类似下面代码: //判断是否有 WEBVIEWSet<String> contextNames = driver.getContextHandles();for (String contextName : contextNames) {System.out.println(contextName);if (contextName.contains("WEBVIEW&

Eclipse插件开发 RCP生成jar包后获取jar包中的Plugin/Bundle文件资源——以FreeMarker为例

在进行Eclipse插件开发时,有一种应用场景是,需要在插件项目中设置存放有例如配置文件.模板文件的资源文件夹.本文介绍的问题是,插件项目打包发布后,无法访问资源文件夹中的资源文件. 问题重现: 在插件项目的根目录下有模板资源文件夹,需要在插件运行时访问这些资源.在插件开发中,通过"Run as -- Eclipse Application"方式测试插件,可以正常访问,但是生成jar包后发布运行,却无法定位到这些资源文件(表现为,指向该资源文件的URL对象为空). 问题代码(目的是插环

【JAVA】在jar文件中引用图片等外部资源的问题

很多时候我们需要把java程序导出成可执行的jar包,但是往往会遇到一个问题:程序中引用的外部资源如图片等在可执行jar包中失效.笔者自己也遇到了这个问题,查阅了网上的一些资料,写得不太易懂,稍微研究了一下算是解决了这个问题,在这里记录下来. 我们以一个特别简单的程序为例,在JFrame中放置一张图片,工程的文档结构如下: 注意到图片资源是存放在src下的.代码如下: 1 package in.love1017best; 2 3 import javax.swing.*; 4 5 public

ArcGis for Android中如何获取自定义图层中的图片并旋转

============问题描述============ RT,在GraphicsLayer自定义图层中,有一个图片,现在可以获取到手机的旋转角度,然后根据角度去旋转那个图片.现在只能remove掉GraphicsLayer后旋转图片重新添加到map中,这样的话会非常不连贯,达不到百度地图的旋转效果,请教大神们如何解决? ============解决方案1============ BitmapDrawable bd = new BitmapDrawable(context.getResource

iOS开发之获取系统相册中的图片与视频(内带url转换)

@话不多说,直接上代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82

获取在线APP的素材图片

1.打开iTunes,搜索并下载APP 2.打开下载的APP的路径 4.对ipa包进行解压 5.找到app,右键"显示包内容"进行查看 6.结果

android 从相册中选择图片并判断图片是否旋转

今天在做图片合成时,首先从相册中选择图片,然后判断该图片是否旋转了,今天就讲下图片是否旋转,直接上代码 /** * 读取照片exif信息中的旋转角度 * * @param path * 照片路径 * @return角度 获取从相册中选中图片的角度 */ public static int readPictureDegree(String path) { if (TextUtils.isEmpty(path)) { return 0; } int degree = 0; try { ExifInt

Python抓取手机APP中内容

首先下载Wireshark和模拟器(天天模拟器,夜神模拟器),天天模拟器在自带的应用商店里面能够登录微信. 然后打开Wireshark选择一个网卡开始抓包. 开始抓包后,在模拟器中要抓取的APP中对想要的资源进行点击访问,操作完成后停止捕捉,排除干扰. Filter用于过滤数据,在里面输入选择的过滤条件.相关的语法和设置可以在网上查找资料,这里干扰项较少,直接选出http协议的数据包. 点击所需要的数据进行分析,可以将里面的字段复制出来构造Header然后对资源进行访问. 1 # coding:

如何获取别人微信文章中的图片

有时我们看到别人微信文章中的图片很好看,想保存下来,又或者是我们本身是微信运营者,想"借用"一下别人的图,简单点的做法是在手机微信文章中点击图片,会出现微信图片浏览器,然后点击右上角的三个点点,点击保存到手机.如果电脑要用,就用手机发送给电脑就行,如下图: 但是,如果仅仅这么简单我就不用写这篇文章了!! 关键在于,这样得到的图是经过微信处理过的小图,放大后会失真,那怎么获得大图呢? 试过的人可能知道,将微信文章链接发送到电脑端,然后在电脑浏览器打开文章,右键另存,下载下来的是一个名为&