从一个安卓小白到第一个APP

KorFoerster 8年前
   <h2><strong>一次装X的讨论:</strong></h2>    <p><strong>     </strong> 在一次团队讨论中,我提出了一个很好的想法,做一个眼科病患社区的APP,旨在加强医生与患者之间的沟通和交流,这里的患者都是医生曾经的病人。就是这么一个简单的APP。怪就怪自己,B装大了,讲得太好了,团队的成员个个都踊跃地提出自己想做的部分。</p>    <p>      ”我做后台,数据要什么格式“</p>    <p>      ”我做IOS,我最近刚装了黑苹果“</p>    <p>      ”我做APP的设计图吧,来点新鲜的“</p>    <p>      ”我做网页前端吧,这是我的长项“</p>    <p>        卧槽,这帮同学,都把自己熟悉的,擅长的都抢了,剩下一个Android端了,然而剩我一个了。没办法,”自己装的B,怎么都要说:‘我可以的’ “。没学过Java(学的是C#),更不懂A呢Android。我都不知道我哪来的勇气。故事就是这么开始的。</p>    <h2><strong>我真的可以。</strong></h2>    <p><strong>     </strong> 讨论结束后,我自己一个人走在会宿舍的路上,我一直在想:”我真的可以吗?这是零基础,做不出来是不是很没面子啊。“,相信很多人想入门Android开发的人都有过这样的想法,认为自己没基础,入门会很困难。但是我的老师曾经跟我说:”做任何事情,光想是解决不了任何问题,动手才能去真正地去思考“。暴力一点讲:”能动手尽量别BB“。我这个人就是这样”雷厉风行“- -。当天晚上就下载了“某某博客Android快速入门视频教程全集.ZIP”。我当时根本就没想过要去看Java相关的书和视频,因为我学的是C#,我觉得他们都是相似的。</p>    <h3><strong>用成就掩盖无知,获得前进的动力:</strong></h3>    <p>    看完了Android的四大组件之后,我感觉到了无聊,然后就去睡觉了。我喜欢这样,遇到烦心的事情就去睡觉,毕竟四大组件的内容太多了,第一次接触这些完全不熟悉的东西,一时接受不了,感觉自己什么都不会而且有不知道自己该怎么去动手,看着视频中的老师,敲代码的架势。总是在YY,自己什么时候也像他们一样。这属于典型的“编程挫败感”。</p>    <p>     面对这样的挫败感,睡觉只是让自己冷静下来,真正战胜“编程挫败”,那当然是用成就感去战胜它。</p>    <p>     1.用一个精美的布局,赢回自己的自信。Android是MVC的架构,所以做界面并不需要写太多的逻辑代码就能装出一个好B。我当时模仿的是QQ空间的布局。一定要真机调试(截屏)。边做边发朋友圈,对!就是要这么装。渐渐的你就会觉得有动力了。</p>    <p>     2.获得是最有成就感的。如果你觉得仅仅做一层什么都没有的界面,满足不了你(卧槽,你想怎样),那做个能动的,然后发朋友圈,这个B必须装啊。我当时做的是一个简单的天气预报。获取数据+界面显示。界面当然没问题,朋友圈的赞不是自己点的- -。然而是我太天真,在做数据获取的时候,我居然不会写代码,是一行都不会写,Java如何Get都不会写。万恶的HttpUrlConnect。我又再次陷入了这个“编程挫败”。</p>    <p>     3.用别人的成就来满足自己。没办法,自己没学过Java,也不懂Android,写代码必然懵逼。其实一开始不会写,没关系的。于是我又想起了一句经典:“<em>熟读唐诗三百首</em>,<em>不会作诗也会吟</em>”。(卧槽,我居然那么有文化),暴力一点讲:“兄弟可不可以借你的作业来抄一下”。我呸!是参考一下。编程就是这样子,你要学习别人的代码才能生产自己的。有相当长的一段时间我都是这样子的。机智的我,在网上一搜:“Android http请求获取数据”。呵呵,Ctrl+C结合Ctrl+V,这样就写了200行代码,真爽。</p>    <p>    4.享受孤独的调试过程,这才是真正的成就。看着这200行代码,然后写了一条输出语句,run!心里暗爽,成功就去吃宵夜!“你的XXXdemo运行已停止”,闪退!直接懵逼了。看着那些红色的Logcat。我又陷入了“编程挫败”,老规矩,睡觉。但是我睡不着,我似乎感觉到了,我已经离入门不远了,必须学会调试。对于广大的新手来说,看到Logcat懵逼的大有人在。我用一句话总结这个技巧:“找到你认识的那几行,就是出错的地方”。简单不!</p>    <p>    终于,在这1,2,3,4步的反复循环中,我做好了第一个自认为很好的天气预报,朋友圈都被我炸爆了。此时,我收到了同学的警告:“能不能有点新鲜的,每天都是这个”。友谊的小船。。这种评论你能忍吗,然后我给他回了一个“哦”。显然,不能有点成就就发朋友圈了,来点高端的。</p>    <h3><strong>用第三方SDK,铸就装B的城墙</strong></h3>    <p><strong>    </strong>一次偶然的机会,我看到了我舍友手机的一个天气预报APP,然后我就打开了自己做的APP。卧槽我的太Low了,功能也简单,界面也丑。顿时明白了朋友圈的唾弃。没办法,自己又不会做。那怎么办?别忘记了,上面说过的"用别人的成就来满足自己"。机智如我,然后我就找到了百度地图的SDK,分享的SDK。你懂的,根据当前的定位获取天气信息。至于为什么要做分享,不要问我为什么,一切为了装B。方便发朋友圈啊。“大神,说一下集成的套路吧。“,朕!准了。</p>    <p>      1.到官网注册开发者,很简单,QQ登陆就好了。</p>    <p>      2.创建应用获取AppId,写代码的时候要用的。</p>    <p>      3.下载官方Demo,最好原封不动地拿过来。</p>    <p>只要3步高大上的功能就实现了,暗爽。然后一条朋友圈底部还有个"来自XXX应用",瞬间觉得自己要上天了。</p>    <h3><strong>用开源类库,拯救烂代码</strong></h3>    <p>      像我这么帅的人,必须给团队的小伙伴晒一下啊。然后我们开会了,这必须是一个装B的好时刻。在交流的过程中。</p>    <p>      IOS的同学问我:“你们Android是用什么库的,我们IOS的库很强大的。我在GitHub看到了很多,但是不会用”</p>    <p>      瞬间懵逼啊,什么库,什么GItHub,我都没听过。然后我是这么回答他的:“一开始初学,我想自己写,这样提高会快一点。”</p>    <p>      IOS的同学:”哦“。(程序猿~~)</p>    <p>      会议结束后,我问了度娘,GitHub是谁(不知道的可以去问问),也问了度娘,Android有什么库。我顿时觉得自己要上天了,我看到了另外一个不同的世界,开源社区!这里是一群前辈,一大波优秀代码,一堆类库。我好像看到了什么”20行代码实现Http get操作“。200和20的区别,我没忍住,直接就点进去了,折腾了一晚上。呵呵,我成功了。从这一刻起,我接受了一种新的思维——开源。</p>    <p>      相信这对于很多新手来说都是个疑惑,自己写还是用别人呢?我的看法是,如何你想提高,那就用别人的。我认为:“学习是从模仿开始的“。开源类库是必须会用的,它将会减少很多你写的烂代码。一下是一些常用而且简单暴力的类库,希望你喜欢。</p>    <p>1.slidemenu--->侧滑</p>    <p>2.android async http ---->网络加载库</p>    <p>3.Universal_Image_Loader---->图片加载框架</p>    <p>4.viewpager indicator---->页面切换指示器</p>    <p>5.SwipeRefreshLayout--->下拉刷新控件</p>    <p>6.fastjson---->json解析库</p>    <h3><strong>用开源项目,让开发更简单</strong></h3>    <p><strong>     </strong>3个月后,第一个天气预报的Demo做好了,功能还是很简单,因为用了第三方类库,代码也很少,看Apk的大小,根本拿不出手啊,于是我开始思考如何才能做功能更多,界面更炫的APP。Github,我自从认识了它,都是找他拿代码的。我找来了一堆的完整项目APP的源代码。开始从这些项目中拿更多的代码。当然了拿之前的工作也是困难的,因为导入项目也会遇到很多的问题。如何解决导入的问题,在后续的文章会说。下面说一下如何在更多的源项目中获取你想要的东西。 </p>    <p>      查:找一个大型的项目,例如微信的仿品(凡信),导入你的eclipes(一定要用这个)。然后运行。再看图片。</p>    <p>      删:把一个个界面的图片删掉,看哪里打叉。这样就找到了位置,顺藤摸瓜,了解整个项目。       改:在原来的项目改代码,看效果。</p>    <p>      移:把这个项目某一个模块移到你的项目中去,并让它正常运行。</p>    <p>      增:在这个新建项目上加上你的元素吧。</p>    <p>      这是奴才为皇上准备的菜。</p>    <p>     1.Android心情驿站源码(仿QQ空间)</p>    <p>     2.Android凡信源码(仿微信)</p>    <p>    3.Android仿今日头条源码</p>    <p>    4.https://github.com/android-cn/android-open-project-analysis</p>    <h3><strong>用这些拿来的菜,做满汉全席</strong></h3>    <p><strong>     </strong>很久没发朋友圈了,对啊2个月过去了,因为我已经觉得这些微不足道的成就已经不能让我获得成就感了,逼格上来了。我开始把一些开源项目的代码粘到了自己的项目,但是结果只有一个,乱,代码没有模块化,重复代码多,关键是没注释。那么如何去规整这些拿来的代码,让你的项目更加有活力呢?</p>    <p>      1.命名规范,这个是最关键的,整个项目必须有统一的命名规则。</p>    <p>      2.多用文件夹区分不同功能模块,也要有命名规范</p>    <p>      3.合理运用设计模式,Android的设计模式是MVC,但是有一种趋势是MVP,合理运行设计模式会让项目代码更加舒服,更加有规律。这是更高级的了。</p>    <h2><strong>上线前的优化</strong></h2>    <p><strong>     </strong>”做了这么久的APP,过几天就上线了“,我的朋友圈- -。这种时刻必须来一发啊。App上线前其实是有很多工作要做的,下面列举一些必须做的。</p>    <p>       1.应用内存优化,具体怎么做,后续文章会更。</p>    <p>       2.Apk瘦身,对于我们引入的图片资源,可以适当压缩,甚至去掉,对于类库,可以找更加轻量的替代。</p>    <p>       3.Android多屏适配,这个东西没办法必须面对,不过有很多解决方案可以在网上找到。</p>    <p>       4.Android兼容性测试,可以用第三方的测试平台,例如Testin云测试。</p>    <p>       5.代码混淆(我自己都没做,不能告诉你)</p>    <h2><strong>上线完成后的感受</strong></h2>    <p><strong>     </strong>在一个软件开发不怎么活跃的学校(医学院),我始终感到无比的孤独,因为什么事情都是自己独立思考,独立解决。在这个过程是痛苦的,煎熬的。怎么样才能让自己在这个过程中感到快乐呢?分享,是最好的方法。说说你最近解决的问题。如果找不到人,那就写在纸上。面对面是最好的,因为你可以感到无比的成就感。我庆幸的是大学遇到几个好朋友一起交流。</p>    <p>      开发者总是追求完美的,开发者总是要经历过千万次人格分裂去思考用户那些蠢得不行的行为。甚至每天都在感慨,大兄弟你怎么这么笨。哎!其实这是非常正常的,开发者和用户只能相互协调,开发者永远都是向用户妥协的一方。当你决定你就是一名开发者的时候,请记住,需求分析你要比项目经理还要清楚,否则到时候测试的时候,你可能会想砍死帮你测试的人。</p>    <p>      当你想成为一名开发者的时候,请记住,程序并不是我们要开发的,我们要开发的是产品。产品无程序最大的区别在于产品面向的是宇宙最笨的人(客户),产品不是你一个人说了算。因此要成为开发者必须学会交流和沟通。不然闭门造车永远都是做不出让人满意的产品。</p>    <p>      当你觉得你似乎具有超强的开发能力的时候,兴致满满地想去做开发,找各种项目去做,去提高自己的开发能力。但是你觉得你开发能力强的时候,请去看看外面的世界,你实现的功能,人家是如何去实现的,人家的性能怎样。人家的架构怎样,人家的设计怎样。其实当你觉得你开发能力强的时候,只能说明你入门了,而此时你要去做的是提高,不是去做你熟悉的东西,而是一些非常酷炫的新鲜玩意,新技术,你从来没用到过的东西。IT行业就是这样的,开发者要去不断学习才能不被淘汰。对比其实也是一种很好的学习方法。</p>    <h2><strong>这是一个装X的故事</strong></h2>    <p>       这是我的装X故事,希望能给大家启发,我没有看太多的书,这都是我自己的感悟,开发不是简简单单地看几本高级编程就能做好的,它是需要思考,总结,交流,沟通才能去做的。我怀着一颗赤诚的心去追求着我的目标,我享受着孤独的喜悦。</p>    <p>这是我的首发啊,处女作啊,要不要鼓励一下的(*^__^*) 嘻嘻……</p>    <p> </p>    <p>来源:http://www.jianshu.com/p/cb16ceb563db<br>  </p>