为了账号安全,请及时绑定邮箱和手机立即绑定

【花式填坑第7期】如何开发一款完整的Android App?

/ 猿问

【花式填坑第7期】如何开发一款完整的Android App?

慕女神 2017-06-06 12:04:41

http://img.mukewang.com/5936280100014db905000423.jpg


花式填坑第7期最新话题:Android  App。


全球有超过二十亿的设备安装Android操作系统。最近,Android之父安迪.鲁宾发布了名叫Essential的新手机,其公司推出了名为“Home”的智能家居枢纽设备,这一举动昭示着Android平台已然扩张到其他领域,App开发变得尤为重要。


如果你对这方面感兴趣,那这一期的话题活动别错过了~~


http://img.mukewang.com/593628c9000172cf01730048.jpg

那么,如何开发一款完整的Android APP呢?

在开发过程中,如何设计APP框架?又如何进行敏捷开发?

欢迎参与本期话题,跟老师聊聊在Android开发过程中遇到的那些事儿。


话题交流时间:6月9日--6月11日

话题交流方式:可以先在下方提问,老师会在活动期间一一给大家回复的



http://img.mukewang.com/593629470001fdc301730048.jpg

   qiujuer老师个人主页,可点击查看

http://img.mukewang.com/5936299900014e3c05000334.jpg

http://img.mukewang.com/593629aa000159cd01730048.jpg

  •   什么是坑?

相信每一位热爱学习の小伙伴都曾经遇到过各种各样的问题有待解决,我们称这种悬而未决的问题为坑。在各种各样奇奇怪怪的坑中,不乏深坑、巨坑,甚至是自己亲手挖的坑,但是光挖不填何年何月才能走上人生巅峰?

  •   怎么填?

每期1位大牛老师,围绕本期话题进行答疑与互动讨论

  •   怎么参加?

可根据话题主题在活动页下方进行留言,活动期间老师会为你解答

  • 活动时间结束了还能参与话题讨论吗?

可以。进行话题分享,获取更多答案。


查看完整描述

44 回答

?
Vzer

老师你好,我请教一下。

1. 您对目前Android的就业形势有什么看法吗?

2. 对即将参加秋招的我们,面试时应该具备什么技能知识?(设计模式?计算机网络?数据结构?Java?Android?具体一下深度)

谢谢,老师。


查看完整回答
28 反对 回复 2017-06-07
  • Qiujuer
    Qiujuer
    是不是前面几个问题我没有回复,其他同学都以为没有老师在呀;哈哈哈。 主要是我太忙了,而且回复的时候不是根据排序和时间来的,是看着一个合适的就回复了,到晚上1点了就停止了,连续几天所以现在才来回复前面的,抱歉哈。
  • Qiujuer
    Qiujuer
    首先回答你的第一个问题,对于就业;因为现在Android学习的人非常多,加之近几年培训班的接入导致现在Android市场人员很多,这是体现在中低端开发人员上,所以就业形式肯定更加堪忧;但是因为现在新兴企业的发展,可穿戴,医疗,大数据等方向的加入也让就业得到一定的缓解,所以今年来说就业还不算艰难,自己能够足够优秀就不愁找不到工作;所以目前就业找不到工作的往往都是自己技术本身不够达标,你想企业肯定不愿意招一个什么都不会的程序员呀,对吧;所以强大自己是关键。
  • Qiujuer
    Qiujuer
    对于即将到来的面试,如果你是Android的开发,同时也打算面试Android的相关岗位,这里我贴出一个不错的知识点: 技术: Android 基础: Activity,Frag,Service,XML。 Java 基础:String,StringBuilder,StringBuffer,List,HashMap,Thread,ThreadPool。 Android :UI,自定义控件,界面优化,性能优化,JNI,跨进程传递,SQL。 设计模式:单实例,代理,观察者,工厂模式,适配器模式。 框架模式:MVC,MVP。 算法:冒泡排序,插入排序、选择排序、快速排序、堆排序、归并排序。 相关框架:图片,网络,数据库等。
点击展开后面2
?
D明日边缘

第三方的SDK怎么用好?app的趋势是什么情况?

查看完整回答
14 反对 回复 2017-06-06
点击展开后面3
?
Vzer

请问老师,你对于近期火热的Kotlin有什么看法?我们有必要花时间去学习,然后逐步使用kotlin开发吗?

kotlin 以后真的会代替Java吗?

查看完整回答
10 反对 回复 2017-06-08
  • Qiujuer
    Qiujuer
    你好,Kotlin是一门优秀的语言,其诞生很多人都说是为了替代Java而来的,这个我是不同意的,因为两者的层次不同,但是场景也不同,所以并不存在什么冲突问题。对于一个APP你可以使用Java写的很好那你就用Java,如果你用Kotlin写的很好那就用Kotlin来搞定就好,看个人能力;而对于常规所说的Kotlin能够简化开发,加快速度这个的确是这样的;但是在Android上最终都会编译为对应JVM的文件,所以本质上和Java编译后的文件一样,甚至会产生更多的文件,这个是可以自己输出测试的哦。所以对于中小项目是可以尝试使用Kotlin来开发,在足够熟练的情况下是可以加快你的开发进度的,当然如果是对于大型项目或者你本身不够熟练那么对于企业项目还是多慎重一些哈。所以使用Kotlin来开发是必然的,应该说共存的可能性较大。 对于最后一点说Kotlin能够替换Java,这个其实是无稽之谈,至少目前来说是这样的,因为Android目前系统还是Java来做的,方法已经固定在哪里了,所以Kotlin无论怎么编译在Android上来说现在还是会和JVM挂钩,所以底子不变的情况下,Java的地位又怎么能够变呢;所以只能说可以做和Java一样的工作,但是还不足以完全替代Java。当然学习一门新语言是不错的,有时间就看看吧,技多不压身,学到了都是自己的!加油,祝愉快~
?
Vzer

老师,你有女朋友吗?

你说课程里告诉我们;我买了课程,现在都快看完了,可你还是没有告诉我们

查看完整回答
9 反对 回复 2017-06-06
  • 百年叔叔
    百年叔叔
    你是不是喜欢老师,喜欢老师就去表白。别在这里说啊
  • Qiujuer
    Qiujuer
    这个问题,说实话是教学给我挖的坑,我录制课程完成了,问题是在上线后问的所以课程中肯定没有啦。所以课程中是找不到的哈,你可以在群里问哈,我一定能够回答的。
  • Qiujuer
    Qiujuer
    怎么样课程学起来还不错的吧?我的课程可是花了我半年时间准备,请加一个月全职录制的,其质量我还是能够保障的哈,知识点也非常多,自己要多多学习哦。 说实话回答你的问题的时候,我还在想是谁在我课程中询问的这个问题,目前这个问题算是点赞最多的一个问题了;祝你学习愉快~
点击展开后面1
?
666丶666

APP中的线程,什么时候需要线程,线程怎么调度和切换?

查看完整回答
7 反对 回复 2017-06-08
  • Qiujuer
    Qiujuer
    线程的使用有两种情况,一种是当你要调度的方法强制限定需要线程的时候,第二种是当你需要进行耗时操作的时候,常见的是:网络操作,文件操作,数据循环操作,数据库操作等都是需要开一个线程进行处理。至于线程直接的数据交换有两种方式进行,一种是自己建立循环机制,然后建立一个小的池,把一个线程中的结果放到池子中去,而另外一个线程负责循环这个池子,当有数据的时候就经行处理即可,从而达到线程的数据交互,整个过程可以借助锁,通知,等待来节约资源成本。当然还有常见的非常简单的方式采取Handler进行调度操作也是可以完成的。当然这涉及很多细节部分,特别是内存泄漏等等。在我的IM课程中这个部分有成熟的框架来解决,当然你也可以使用类似于EventBus,RxJava来解决都是可以的。祝愉快~
?
Manes

老师,推送咋实现?

需要Socket吗?

如何使用socket,需要注意什么?

查看完整回答
7 反对 回复 2017-06-08
  • Qiujuer
    Qiujuer
    这个问题我会晚点回复的哈,莫急。
  • Qiujuer
    Qiujuer
    首先,推送一般是使用第三方框架来解决,因为第三方框架本身足够优秀,而且支持大数据并发的情况,所以这个选择不错。当然这是说的方法,并不是技术。
  • Qiujuer
    Qiujuer
    如果是技术的话,我们一般会根据具体的情况进行操作,比如使用Http轮训,websocket,socket.io等技术,当然本质上其实就是socket。 而且我也建议使用socket如果有条件的话,因为要使用socket的话需要消耗的资源和开发投入都是非常高的,无论是服务还是人员投入。 当然你如果已经决定了使用socket你需要注意的是如何解决数据粘包,心跳,重连,数据可达等指标的突破。 希望你成功,祝你愉快~
?
Pugss3
准备找实习了 现在对实习的能力要求是什么 简历应该怎么写 有什么模版么
查看完整回答
7 反对 回复 2017-06-06
  • qq__2824
    qq__2824
    。。。。。这种问题,百度都有了。。还模版。。。。
  • qq__2824
    qq__2824
    其实老师会问你:吃饭你会吗?哈哈。。
  • Qiujuer
    Qiujuer
    你好,对于实习的能力其实是越优秀越好,但是也知道其实很难找到这样的;所以我们往往会从几个指标来衡量:项目,功底,态度。项目其实就是经验,这个都不多,所以需要注意的是你处理事情的方式。功底就是你对基础的知识掌握的程度,是否足够扎实,不用太多,因为面试官都会把你问倒,除非面试官很渣;所以你需要的就是基础知识弄牢固就是最好的。企业最怕的就是招了一个会吹不会做的人。态度当然这个就是看你对学习,对人,和协作上的一些能力了;大胆一点就好。对于模版,我给你一个地址:http://www.uisdc.com/22-high-end-resume-template,但是我建议的是参考,有自己的风格,因为要是面试和别人拿了一样的那就不好办了。
点击展开后面1
?
nineHt
老师你好,一款APP从开发到上线运行,中间需要的步骤大概可以归纳为几点?
查看完整回答
7 反对 回复 2017-06-06
  • Qiujuer
    Qiujuer
    你好,多谢你提问;一遍对于一个app需要经过:需求分析、需求确认、技术预研、开工大会、开发、沟通,初期版本、前后连调、测试、上线、迭代版本 的过程。当然其中关于一些细节还可以细分,具体的取决于一个公司的具体情况。不同公司有不同的决策,或者走敏捷开发的流程等等,所以只能作为参考。祝愉快。
  • nineHt
    nineHt
    谢谢老师
?
cfyr

APP中的图片、网络、数据库这几个大头该如何解决相关问题?

查看完整回答
6 反对 回复 2017-06-08
  • Qiujuer
    Qiujuer
    同学你好,对于这几个大头我不建议在技术储备不够的情况下自己去完成,因为一旦处理不当只会给自己带来烦恼,同时也会带来更多的错误。我建议使用现在比较成熟的框架来解决,比如Glide,DbFlow,OkHttp等框架都是值得使用和参考的。如果自己要另外开发一定需要衡量当前的业务以做考虑。祝愉快~
?
佺栈攻城狮

老师 一款类似ofo共享单车的 app从制作到上线需要多久

查看完整回答
6 反对 回复 2017-06-07
  • Qiujuer
    Qiujuer
    你好,这个问题我相信很多同学都有这样的问题,但是这样的问题往往又比较难回复,因为团队人数和能力往往是不等的;所以回答出来并不一定准确。只能大概推断“人天”(1人1天)来算,这里我就按照中等水平的能力来说(因为这个共享单车app难点在服务器,不在手机端)大约需要70人天左右,也就是两个小伙伴一起加紧做就1个月多一些就完成了。当然这个是在有设计有参考物(单车软件)来说的。 哦,我才看了前面说的是摩拜的,ofo的话至多55人天就差不多了。
?
yanrun

请问老师,该怎么做机型适配,毕竟公司财力有限不太可能把市面上所有的手机都买来做适配,是否应该选择腾讯云测这种平台来做测试,还有一个问题就是如果第三方SDK使用的比较多的话该怎么给APP做瘦身

查看完整回答
6 反对 回复 2017-06-07
  • Qiujuer
    Qiujuer
    Hello,对于机型适配,这个问题我想很多公司都无法拥有世界上所有的手机设备,只能说尽可能抽取典型的来测试,比如华为,oppo等,特别是厂家对系统有更改的机型可以重点照顾,当然还要看你所面对的用户群体,如果是海外的那就不用担心这么多了,适配三星这些是重点。另外你说的借助云平台这个是可以的哈,可以采取腾讯,百度这些都有类似的服务的,但是做这些的时候一定要注意一点就是你的app安全性,以及你的app是否可以程度泄漏的风险,因为有些app是不能进行公开测试的。 第二点啊,app瘦身,这个常规的做法是删减app中的图片资源,因为大部分问题都是因为图片资源,还有一点就是你引用的有jni部分的库也就是 .so 的文件,因为这些文件比较大,而且不利于压缩。其实本身的java代码并不会太大的文件大小,就算你达到了方法数溢出也不会有太多的size存在;所以优化你的资源和JNI资源,当然如果必要可以加上混淆来移除未使用的java代码和代码简化操作,这样就能删减很大部分的size了。 祝你愉快~
  • yanrun
    yanrun 回复 Qiujuer
    谢谢老师
?
Soar_

从网上下载了源码,应该从哪里开始看,想写一个app从哪里开始写?

查看完整回答
6 反对 回复 2017-06-07
  • Qiujuer
    Qiujuer
    多谢你的提问;一般而言看别人的源码有多种情况,如果是完整的app那么就去找入口界面一般是MainActivity或者LaunchActivity,从这个界面看起;然后去找你感兴趣的界面,比如是设置界面,那么你就从主界面去看是如何进入到设置界面的找到操作,再找具体的界面,然后去找自己需要找的设置界面的逻辑。一般来说就是要有一个兴趣点和一个入口就能扩展开到整个APP。当然如果对于一些第三方库,那就从使用这个库的入口方法进入去查看。如果有疑问可以私聊我哈,祝愉快~
  • Soar_
    Soar_ 回复 Qiujuer
    感谢老师!
?
为木

初级安卓工程师至少应该掌握哪些知识呢

查看完整回答
7 反对 回复 2017-06-06
  • Qiujuer
    Qiujuer
    非常抱歉,这么晚回复你的问题。对于初级Android来说其实需要懂的不需要太深,但是知识点需要足够全面;简单来说就是你不需要理解到控件的底层实现,你也不需要知道一个UI的操作纠结发生了什么,但是你需要知道我们的Android是怎样的体系,是由那些部分构成,怎么才能作出一个app即可。我在这里给你贴出一个表: Android 基础: Activity,Frag,Service,XML Java 基础:String,StringBuilder,StringBuffer,List,HashMap,Thread,ThreadPool Android :UI,自定义控件,界面优化,性能优化,JNI,跨进程传递,SQL 设计模式:单实例,代理,观察者,工厂模式,适配器模式 框架模式:MVC,MVP 算法:冒泡排序,插入排序、选择排序、快速排序、堆排序、归并排序 上面的就是初中级别需要知道的一些常见的内容,你可以对照着去完善你的知识点,当然你也可以先去工作,在工作中去完善这些。多谢你的提问,祝愉快~
  • 为木
    为木
    谢谢老师
?
Vzer

最近,关于程序员职业规划的问题也很火热。老师你能说说你的职业规划吗?

查看完整回答
4 反对 回复 2017-06-10
  • Qiujuer
    Qiujuer
    我的职业规划,说实话我变动很大的。我在学校的时候我想的是我得把C搞好,后面遇到C#我就跳槽了。我出学校的时候我是想的使用C#进行Web或者进行桌面开发,因为那个时候手机并不流行(是我没抓住机会!),但是后来在公司开发的时候人手缺失我就去开发了一阵子C的后台,当然后来又是人手缺失去做了Android,恰好是因为我Android会一些(可能就和你们现在差不多哦),好吧后面我就和Android杠上了。最开始我是做纯Android的,后来因为电商所以加入了H5的一些东西,当然那个时候我给自己的职业规划就是要作出一个好的APP。到了开发Android的第二年,我给自己定义的是了解Android的基础控件,并能够随便的自定义控件,好吧我达到了。后来又给自己立下了熟悉Activity,Fragment...Service等;再到后来就是网络操作的核心,数据操作,图片操作核心等;当然后面还做过一个Socket的框架,这些我都是有开源的,也算是作出了很多贡献。说实话要达到一定的领域真的很不容易的,自己需要不断的去尝试,去碰壁,去探索。我今年给自己定下的就是了解Android framework的一些知识点,同时能够在公司进行一次全技术的分享会。你也应该有一个自己的目标哦,与其说职业规划不如说我回答的是技术发展之路。对于其他的一些发展公司什么的说实话每个人不同,不一定能借鉴,所以就略过了哈。祝你愉快~
?
7zzz

如何进行代码迭代管理?

查看完整回答
4 反对 回复 2017-06-08
  • Qiujuer
    Qiujuer
    Hello,你好,对于代码迭代管理以前我们习惯使用SVN,但是近几年已经渐渐被Git所替代,所以学习Git是个不错的选择。当然Git只是操作,具体的代码迭代需要做的是:分包,分模块,分功能点进行开发,建立分支,开发,测试,再合并分支;上面说的是一个简单的流程。这里就宣传我的课程了,我的IM实战课程中就有这样的内容讲解哦,希望你能加入来看看,绝对让你非常满意的哈。祝你学习愉快~
?
8hn4

如何进行APP质量把控?

查看完整回答
5 反对 回复 2017-06-08
  • Qiujuer
    Qiujuer
    对于app质量的把控,有多种方法,最有效的是要保障你的团队不是你一个人,因为一个人的情况下想怎么搞就怎么搞,根本没有把控一说,只能自己自觉了。如果方便可以把项目公开给所有人检验。当然2个人及其以上的情况有多种方案,一种是相互审核叫做review操作;而如果两者技术相差较大,或者说有一个技术足够OK的老大,可以叫老大帮忙经行代码品控处理。如果都不满足上面需求,真的就是一个人,那么你可以多多看看优秀的项目,参考其中的涉及和代码规范,尽可能去模仿,去超越。 其实这个本身就有一个捷径,那就是从自我做起,自己在做代码的时候多一个洁癖的心里,多想怎么样更好,怎样才优秀,另外自己的方法和变量命名一定要足够优秀,拒绝name1,name2这样的命名出现,当你的基础做好了,代码看起来自然更美,更优秀。祝你愉快~~
?
慕名学课

请问老师项目中准备使用第三方开源库时,如何进行技术选型呢?


在决定使用第三方开源库时,碰到的问题:

1. 如何找到优质第三方开源库?

2. 如何尽可能减少成本的对比开源库优劣,并快速上手?


查看完整回答
4 反对 回复 2017-06-07
  • Qiujuer
    Qiujuer
    多谢你的提问;一般来说找开源库有几个技术点:代码质量、性能、内存、功能、健壮性。性能和内存这个可以直接测试对比拿到,而对于健壮性和代码质量这个真的只能通过不断的尝试和查看开源的代码来决定。在这里有必要说的是,很多国内的开源库往往都是吹的热闹,但是代码其实是非常糟糕的,至少能轻易的找出BUG和不足,这样的库往往都是因为宣传得当导致扩散的很多,而使用的人又不看源码实现所以就被掩盖了。所以我选型库,一般都是优先国外大厂的:Facebook Google... 等,你也可以参考。如果到了要使用非大厂的库的时候一定要记住的是看看这个库的代码实现,别去受所谓的名气和star影响。至于快速上手就只能看对应的官方文档了,这个如果官方文档写的OK那就非常简单的;如果有这些方面的咨询可以联系我,我给你推荐推荐。祝愉快~
?
Vzer

最近,机器学习火了,Google的下一步 目标也是AI。人工智能似乎也是未来发展所需。老师能说说你对AI未来发展形势的看法吗?这是否也意味着,市场会对后端人才的需求会逐步增大?

查看完整回答
3 反对 回复 2017-06-09
  • Qiujuer
    Qiujuer
    如你所想,人工智能一定会是今后的一个发展方向,但是说实话人工智能是一个大的概念,这个非一人能够搞定,是需要一个大团队有一定的积累才行。当然人工智能并不局限与AI这些方向,还有自动化,机械化,物联网等相关的产物也都可以和人工智能挂钩上的。从一定程度上来说后端大数据开发是一个热门,我有好些朋友在这些领域都有不错的建树,工资待遇都是非常高的,可以看出后端开发的确是一个重点。当然这里说重点,其实并不是说其具有统治地位,因为人工智能其实要发展起来是需要大量的终端设备的其中一定会有Android的一席之地,所以Android也不会说短期就垮掉的,只会说以后的开发会越来越要求高,努力提升自己能力是关键点。多谢你的提问,祝愉快~
?
Soar_

老师,现在有什么简单实用的安卓快速开发框架吗?

查看完整回答
3 反对 回复 2017-06-09
  • Qiujuer
    Qiujuer
    Hello,同学你好,其实提这个问题的实话就是非常dangerous的哦,当然这不是在贬低也不是在说你不该,因为我曾经和你一样,也曾是这么想的,我就在想要如何开发Android才能快点啊,有没有框架啊~~后来我才知道要是我一直这么下去一定没有现在的成就;为什么呢?因为当你这么想的时候其实是非常想要一个快速简单的框架的,当你找到这样的框架的时候你就用了,然后开发了,然后爽了,但是你就被框架框住了,你的进步就会很慢,你的学习就会受这些的影响。当然现在很多公司都是要求快速开发快速开发,所以也就导致了大家都去学习一些框架来进行快速开发,等你能快速开发的时候你会发现你会的东西其实寥寥无几。就拿曾经很火现在也不错的EventBus来说,当时大家都去学习,感觉这就是尚方宝剑一样,有了他什么都可以了,当时招人的时候都会问:“会EventBus么?”回答的朋友也一定是进行了精心准备,甚至都知道原理。OK,现在来看,其实EventBus也就是那么个东西,谁又能知道现在的okhttp,rxjava能火起来呢?在这里没有贬低任何一方,也不偏袒,在我看来其实都不是必须,没有这些我项目依然很好,甚至更好。要记住一句话:“用框架的人不牛B,生产框架的人才牛B!”,遇到了框架,如果框架真的很好也能为你减轻负担那就用就好,别有负担,框架嘛就是为了减轻负担的;但是我更加希望你能学习框架的原理,做一个能生产有意义的框架的人。没有什么能比创造更有意义了,我相信你也能的,加油!! 祝你学习愉快~
  • Soar_
    Soar_
    感谢老师!
?
__innocence

现在的安卓开发,原生安卓和H5,各自的前景如何?

查看完整回答
3 反对 回复 2017-06-08
  • Qiujuer
    Qiujuer
    同学,你好,对于原生和H5其实没有谁更好,谁不好,只是适用场景不同。原生一般开发的都是一些更加注重体验注重性能的app,常见的就是你手机里边所有原始的应用基本上都是原生的。而对于H5更多的是用于我们的Web开发,适用的范围一般是电商的比较多,因为电商需要经常更改,这种情况下使用H5会更好,因为每次产品更新,节日活动不用更改app就可以完成。所有H5是电商的利器;所有具体的就要看公司的性质了,如果公司偏向电商那就是H5的会更多,而对于面向设备的一些开发基本上都是使用的原生Android开发了。两者并不冲突,相铺相成,就看你的喜欢都是可以的哈。祝周日愉快~
首页上一页123下一页尾页

添加回答

回复

举报

0/150
提交
取消
意见反馈 分销返利 帮助中心 APP下载
官方微信