安卓教你如何山寨App
作为大学生时刻重视创新,但是创新的前提是会模仿。作为一名大三狗,项目做到了,套路也多,下面给大家分享一下我山寨一个看图App的经历。
我为什么要做看图App,而不做新闻呢?性格,因为大家都知道我是一个喜欢装X的人,喜欢发朋友圈的程序员(*^__^*) 嘻嘻……。我最不喜欢做贴代码的技术文章。
主角(倒霉蛋)----(yo 美女)
![](https://img.haomeiwen.com/i1966942/35ddaf94d7acd92a.png)
目标功能
1.根据分类获取图片列表
2.查看图片详细
3.分类订阅
厨具
1.Fiddler4(手机抓包工具)
2.jadx-0.6.0(反编译工具)
食材
1.仿今日头条源码(http://blog.csdn.net/vipzjyno1/article/details/26514543)
2.仿简书下拉刷新源码(http://m.blog.csdn.net/article/details?id=50989549)
试吃
1.使用Fiddler4抓取App的请求包(安装就不解释了)
详细教程看着:http://blog.csdn.net/zshq280017423/article/details/8928616
![](https://img.haomeiwen.com/i1966942/77b81630ed547edb.png)
这里是工具抓取的请求
![](https://img.haomeiwen.com/i1966942/28e7f03cb4930691.png)
![](https://img.haomeiwen.com/i1966942/84c7632782a0ca40.png)
![](https://img.haomeiwen.com/i1966942/7718379c665edd5d.png)
Ok,数据我有了,哈哈。其实很多小公司的应用都可以这样搞,如果有加密怎么办,没关系,我们召唤jadx,新一代反编译神器(微信都可以)。
2.通过反编译了解目标App架构
![](https://img.haomeiwen.com/i1966942/fb16eee131832373.png)
很多人会问,如何看?其实都是套路
套路一:AndroidMainFest看启动Activity(程序入口)
![](https://img.haomeiwen.com/i1966942/d996e9386368e549.png)
套路二:绘制页面跳转逻辑图
最快的方法就是把App装到手机上,这里跳转逻辑就不写了。
套路三:看项目所用的类库
在上篇文章我们已经完成了对简书的反编译,这里不赘述了
这里用到开源类库有
1.universal-image-loader和glide
2.photoview
3.Xutils框架
买菜
通过试吃,我们知道了这个应用大概的功能实现和局部逻辑,用到的技术,下面我们说一下如何买菜吧。软件工程有一句话叫:“不做重复的轮子”,意思就是说:能不自己写就不自己写!那么我们应该去哪里找这些人家做好的菜。
1.https://github.com/(囊括国内外优秀开源项目)
2.http://www.oschina.net/(收录了很多优秀的源码。有项目文档的,质量较高)
3.http://www.eoeandroid.com/(国内较活跃的移动开发社区)
因为朕经常关注这些,所以这类似的源码,我怎么可能没见过。
![](https://img.haomeiwen.com/i1966942/99ec938e8c738107.png)
![](https://img.haomeiwen.com/i1966942/b0a773f69d1ed40c.png)
哈哈,这就是我要的菜。
炒菜
因为我比较喜欢简书,所以就仿了一下简书的风格,随便拿了它的UIO(∩_∩)O哈哈~
在炒菜之前要先搭建好自己的项目框架。我是这样分析的:
1.数据接口为Json接口,用fastJson会快很多
2.因为有大量的图片加载,就用universal-image-loader好了,至于glide没用过
3.有列表的下拉刷新和瀑布流显示,那就用RecyclerView+SwipeRefreshLayout来实现吧
4.photoview,图片多触点放缩,必须用啊
5.网络请求库,有很多我选了Android-async-http(简单暴力)
6.缓存,我用的是ACache(github上的),主要做response的缓存
7.设计模式,因为考虑到时多分类同一样的布局,用fragement+viewpager的方式比较合适,而这样必须要求,view的逻辑要跟model解耦,所以考虑用了MVP设计模式。
![](https://img.haomeiwen.com/i1966942/ad9bfd1fc543ae73.png)
看来锅已经准备好了,下菜吧!
1.将下载的仿今日头条源码导入eclipse
![](https://img.haomeiwen.com/i1966942/cf2e4f440b25561b.png)
说道移代码,套路小王子我,又要只招了。
套路一:找到你想抄的布局。(你妹,是参考好吗?,哦参考)
这里因为是主布局main.xml,我们要抄那个顶部标签(喂!我再次跟你讲,哦参考)
![](https://img.haomeiwen.com/i1966942/acc3b0b176342654.png)
套路二:顺藤摸瓜
![](https://img.haomeiwen.com/i1966942/1c18feb91d3a1dc5.png)
找到了应该怎么办,傻X,Ctrl+C 和Ctrl+V啊,快捷键我最熟悉了,还有谁!
![](https://img.haomeiwen.com/i1966942/e5e399d58f0d0c51.png)
套路三:摸完瓜连藤都不用留下(O(∩_∩)O哈!)
(卧槽)没想到这个自定义view不报错,装B失败!没关系换一个。看看它的分类管理怎么实现的吧。为了节省时间我已经找了。
![](https://img.haomeiwen.com/i1966942/21f22a14fe3c38cc.png)
O(∩_∩)O~可以装B了,我们把它直接拿过来。
![](https://img.haomeiwen.com/i1966942/332530883cf2ee5a.png)
这些红色的就是它的藤,嗯,连藤都不要留下,回去找!
![](https://img.haomeiwen.com/i1966942/5624ff123e210db9.png)
套路四:命名统一规范,假装是自己做的(套路深不深?)
其实命名统一规范是为了适应自己的编码风格,为后面的代码奠定基础,说白了:就是让自己写代码方便,不用拘束于他人的编码风格。
品尝
折腾了这么久,肯定累了,必须run一下,闪退!(兄弟,你的activity注册了没- -,权限呢),做菜就是这样要自己不断的尝试。发现味道不合适就得改,把它改成合自己胃口。嗯,我很机智。因为原来的分类不合理啊。我要的是美女分类。那我该我如何去找呢?
![](https://img.haomeiwen.com/i1966942/780d260c29ed8473.png)
完美找到分类所在Java类,修改啊!
![](https://img.haomeiwen.com/i1966942/b9d73b8f986e8416.png)
分享
经过很久的品尝,相信你的菜已经可以上得了台了,再也不用伤害你的家人了,在此我也献上我的APP截图。
![](https://img.haomeiwen.com/i1966942/ec25f172ab98d642.png)
![](https://img.haomeiwen.com/i1966942/2f83f07d5efc9f03.png)
![](https://img.haomeiwen.com/i1966942/129dd392f8817831.png)
![](https://img.haomeiwen.com/i1966942/4a0f7910a62538df.png)
这个APP看的是高清套,对内存的把握比较重要,很容易OOM
献上我的github地址:https://github.com/konglinghai123/zhai
总结
希望各位看官开得开心,我写技术文章不喜欢贴代码,我觉得这样太不负责了,尽管贴的代码有注释,但是思考的过程还是要读者自己想。我觉得我这种像打直播的方式看得比较轻松,比较是大家在空余时间看的文章。
用一段广告词结束这篇文章:“喜欢我就点我吧!”