反编译 apk 以学习研究相关实现——Fuubo 波纹动画实现

原创 2016年06月02日 01:53:21

必先利其器

需要用到的核心工具集是 apktooldex2jarjd-gui,其中 apktool 用于获取资源文件,dex2jar & jd-gui 用于获取 Java 代码。除此之外你还需要文本编辑器、解压缩软件,等。

WORK THROUGH

笔者从酷安网下载了 Fuubo 的 apk 文件 me.imid.fuubo-4.1.apk

首先获取资源文件,图片、xml 布局等等。一行命令就好。
文中不写命令的相对路径了,默认你已经配置好了环境变量,或者使用了绝对路径。

$ apktool d me.imid.fuubo-4.1.apk # d for decompile
I: Using Apktool 2.0.3 on me.imid.fuubo-4.1.apk
I: Loading resource table...
I: Decoding AndroidManifest.xml with resources...
I: Loading resource table from file: <placeholder-to-hide-real-path>/apktool/framework/1.apk
I: Regular manifest package...
I: Decoding file-resources...
I: Decoding values */* XMLs...
I: Baksmaling classes.dex...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...

apktool 比较过分,把 Java 代码直接反编译成了 smali 文件。字节码与今天主题无关,以下我们将获取 Java 源码。不过,如果你对 bytecode 非常感兴趣,我觉得 developerWorks 的一篇教程 讲的不错,而 Java bytecode instruction listings 词条 可以作为速查表。
dex2jar 不仅可以把 dex 文件转换为 samli (d2j-dex2smali.sh),也可以转换为 jar (d2j-dex2jar.sh)。

$ unzip me.imid.fuubo-4.1.apk -d output # 解压后的输出文件在 ./output/ 文件夹下
(omitting output…)
$ cd output
$ d2j-dex2jar.sh classes.dex
dex2jar classes.dex -> ./classes-dex2jar.jar
$ jd-gui classes-dex2jar.jar

这时你已经能看到 Java 代码了,点击 jd-gui 界面中的 File - Save All Sources,把所有源码保存到一个压缩包中,解压得到的压缩文件即可看到源码目录结构。需要注意的是,源项目使用的第三方库的代码,也被反编译到这个压缩包中了。
有的时候,比如闲鱼APP,解压 apk 会得到多个 dex 文件,那么对每个 dex 都要用 d2j 和 jd-gui 进行处理。

WORK LIKE A CHARM

通常通过字符串查找比较方便,但是 Fuubo 波纹动画的页面没有标识性的字符串。还好动画出现在运行应用之始,通过入口 Activity 开始往下找,还是很轻松地找到了。
通过对反编译后的代码的分析,最终找到 me.imid.fuubo.widget.SpreadView。在 me.imid.fuubo-4.1/res/layout/activity_login.xml 中有布局示例,在 me.imid.fuubo.ui.activity.LoginActivity 中有代码调用方法,剩下的都一目了然了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

iOS-Swift 水波纹的实现

本人最近在研究iOS动画,至于原理,我不在这里说了。毕竟这里的标题:水波纹的实现。 在这里,要学习水波纹的实现,首先要知道以下几点知识: 1.正弦函数:y = Asin(wx +b) + c。相信大家...
  • Asong_ge
  • Asong_ge
  • 2017年02月23日 19:31
  • 736

安卓实现水波纹动画效果

步骤1: 首先如果想实现上图的动画效果,首先新建一个类然后去继承view,然后重写里面的构造方法(切记选择里面带有两个 参数的构造方法,因为布局文件中需要用到这个类,一般需要在布局文件中用到的类都...
  • qq_27760383
  • qq_27760383
  • 2016年09月20日 21:58
  • 1043

以动画实现 水波纹扩散效果.

今天在看到这一系列的博文: http://blog.csdn.net/harvic880925/article/details/50546884 http://blog.csdn.net/...
  • heming9174
  • heming9174
  • 2017年07月07日 15:50
  • 235

Android自定义View 实现水波纹动画引导

一、实现效果图关于贝塞尔曲线 二、实现代码1.自定义viewpackage com.czhappy.showintroduce.view;import android.content.Conte...
  • chenzheng8975
  • chenzheng8975
  • 2017年01月17日 09:57
  • 1298

实现Viewpager切换界面导航栏水波纹动画效果

实现效果:        该控件防百度阅读的导向栏进行研究,具体细节尚有不足,希望大家多多指点点击打开链接      Viewpager的滑动,引起标题栏的渐变。主要渐变过程要先画线,再画点。  ...
  • ahjxly
  • ahjxly
  • 2015年03月27日 17:43
  • 1552

Android自定义水波纹动画Layout

Android自定义水波纹动画Layout源码是双11的时候就写好了,但是我觉得当天发不太好,所以推迟了几天,没想到过了双11女友就变成了前女友,桑心。唉不说了,来看看代码吧。展示效果Hi前辈话不多说...
  • tgbus18990140382
  • tgbus18990140382
  • 2016年11月15日 21:19
  • 3033

如何实现Siri中的波纹动画

苹果手机上的siri语音波纹动画很有意思,本文将带领大家研究如何实现生动画效果。...
  • CyanFlxy
  • CyanFlxy
  • 2015年08月18日 22:04
  • 4245

【Android】炫酷的MaterialDesign Ripple 水波纹触摸动画

炫酷的MaterialDesign Ripple 水波纹触摸动画google在android 5.0上加入了触摸反馈动画(Ripple),设置成功后,点击控件的时候会从点击位置产生一圈水波纹的扩散效果...
  • hantian616
  • hantian616
  • 2016年07月29日 17:02
  • 1278

Android圆形水波纹WaveLoading动画

效果图: 一、 介绍Paint.setXfermode() 以及PorterDuffXfermode public class WaveView extends View { private...
  • owenchan1987
  • owenchan1987
  • 2016年10月12日 09:34
  • 1410

波纹动画的研究

今天研究了下波纹动画。主要是对Xfermode的运用,现在说下对PorterDuffXfermode的理解,网上对其效果一张图诠释的很好。我也盗取了一下: 这个效果实现需要:先用canvas画出Ds...
  • sp_StudyAndoird
  • sp_StudyAndoird
  • 2015年08月26日 12:10
  • 277
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:反编译 apk 以学习研究相关实现——Fuubo 波纹动画实现
举报原因:
原因补充:

(最多只允许输入30个字)