① 如何学习安卓开发
android开发学习路线的七大阶段
第一阶段:java面向对象编程;
第二阶段:Java Web开发;
第三阶段:android UI编程;
第四阶段:android网络编程与数据存储;
第五阶段:android手机硬件管理;
第六阶段:Android图形编程技术;
第七阶段:Android游戏开发。
② 一个资深的Android开发者需要掌握哪些技能
Android平台手机终端软件开发精通Android开发平台及框架,一年以上实际开发经验;精通Android GUI程序开发;1年以上J2ME开发经验,熟悉J2ME编程;熟悉Linux环境编程优先 ;从事过嵌入式开发工作2年以上。熟悉HTML/WML/HTTP,具有良好的编程思想;熟悉C/C++或者Java开发语言和环境;有一年以上移动终端应用软件开发经验,有Android或者iPhone开发经验尤佳;基础扎实,精通常用数据结构与算法和设计能力;熟悉移动终端特性和开发特点; 熟悉移动终端网络编程,了解3GWiFi等技术;熟悉C++/C#, MSSQL/MySQL数据库开发;熟悉多线程、Socket或ACE等网络通信编程技术;熟悉java各种编程方法,比如多线程,jni,idl等。 熟悉JVM的运行机制,移植或者扩展过JVM到嵌入式平台者优先,比如phoneme 等。精通Android平台UI开发优先;英语良好,能阅读英文资料;工作职责:负责Android平台的浏览器开发。在Android手机上设计并开发应用程序或游戏;Android平台框架层的维护以及扩展。移植各种流行的框架体系(多媒体,蓝牙,无线)到android上负责Android项目的开发工作;负责Android项目的架构设计、方案的制定;跟进Android的新技术发展。纂写设计开发及实现文档;根据产品功能需求设计并完成软件实现;参与产品需求分析并制定技术实施方案;总而言之,资深的工程师作用水权在于他本人有多强,而是起到了以点带面的效果,提高整个团队的竞争力。
③ 安卓开发工程师都需要会什么求指导
各阶段的Android工程师掌握的专业技术:
初级安卓开发工程师
掌握扎实的java基础,了解各种设计模式,熟练掌握Android UI控件、Android Java层API的相关使用。往中级层次发展时,继续深入学习java编程技术,掌握更多Android开发需要的库,还要精通ml、json解析,会做socket
c/s端的程序。
中级安卓开发工程师
除了上面提到的必备技能外,中级开发人员需要延伸到精通NDK JNI方式的开发,熟悉Android framework,会移植类似Fmpeg、Mplayer这样的开源项目,并在Android上运行。
高级安卓开发工程师
作为高级app开发工程师,你只需了解,并不需要亲自操作初级和中级工程师的工作流程,但是,你需要有一个整体知识构架,安卓开发各方面所涉及的知识你都有要了解,并有自己独到的见解。需要熟练掌握Linux驱动开发,并对Linux内核结构很精通,掌握Android移植,包括硬件移植。
④ 如何做好Android的开发
开发人员应当在学习并深入了解Android之后,在自己的软件中,将Android的优势发挥出来,同时通过一些手段去弥补Android 本身的缺陷或不足。下面来看一下Android拥有的特点吧:
与硬件交互非常方便,包括摄像头、GPS 等,都可以简单的操作。
拥有自己的运行时和虚拟机,优秀的内存管理能力。
提供丰富的界面控件供开发者使用,允许可视化开发,并保证Android平台下的应用程序界面一致。
提供轻量级的进程间通信机制。
支持无界面的后台服务类应用程序。
支持高效、快速的数据存取方式。
在这些特性的支持下,试图在Android下开发一个应用不会太过困难。事实上,一个稍有 Java经验的开发人员,都可以快速的上手进行 Android的开发。而开发的核心,一直以来也是围绕着Android手机几个大的特点来进行的,其中就包括了触摸屏、摄像头、GPS模块、互联网功能、语音输入、Google账户等。需要说的是,如果一位 J2ME 工程师想转行做Android,那么他将付出的代价比J2SE或J2EE工程师要大得多。毕竟Android所支持的是基本完整的J2SE的子集,反过来再看J2ME就会觉得它的功能太弱了。
除了Java外,还有许多语言支持Android 的开发,比较为人所熟知的有Scala,而作为 Android本身的底层语言,C/C++的作用也完全不可忽视。而目前的开源社区内,已经有一些牛人在尝试让更多的语言可以开发Android应用。比较有代表性的可能是Koushik Dutta,他已经解决了在Mono平台下,让Dalvik调用Mono 代码的问题。或许在不久的将来,.NET 下的所有语言,都有可能借助Mono跑在Android上,这是一件值得让人期待的事情。
语言已不是问题,那还有什么会成为问题?也许很多人会说“经验”。诚然,经验决定了一位开发人员能否快速地、流畅地完成开发工作,也决定了软件的鲁棒性,Bug的数量、等级和修正问题的返工次数。不过我认为,这些都不重要,哪怕是一个 Android 行业的新人,一边查询文档一边做开发,虽然效率会很低,但是一样能把项目做完。在 Android 下,开发技术几乎是没有瓶颈的。那么瓶颈在哪里呢?事实上,在用过很多软件后,就会发现,有很多软件并不好用。很多用户不愿意用某个软件,也并不是因为软件没有技术含量或是满足不了需求,原因很简单,就是不好用。
用户体验是凌驾于技术之上的,可以说,优秀的用户体验将可以起到事半功倍的效果,在一堆同类的软件中,下载量最大的,一定是让用户用着感觉最舒服的,哪怕它的功能并不比其他的产品出色,甚至略差一些。我见过很多开发人员,他们视技术为己任,一心只钻研技术,认为技术出色的软件,会受到用户的好评,甚至在一个手机游戏中,加入各种华丽炫目的3D效果。这些固然都不错,但是真正的用户却不会喜爱它们。在移动应用中,简洁明快才是用户希望看到的。试想一下,当用户在手机上玩一个RPG游戏,并被华丽的3D效果充斥了整个界面,那么他将完全无法着手进行下一个动作。诚然,华丽的画面是很容易吸引人,但是在这种华丽的背后,却会直接把用户和开发者自己领入一条深渊,再也无法回头,最终的结果就是,用户完全舍弃该款游戏,开发者或运营商也完全赚不到钱。
在移动平台开发的过程中,用户体验已经成为首要大事,只有聚焦在用户的设计,才有可能被用户所接受。下面来看一些典型的例子。
左图是经典的Windows Mobile 6.1的界面,从Windows Mobile推出的那天起,这个界面就一直被宣传成内容充实,包含常用所有功能的入口,非常贴合用户的实际需求。也许在当时,这样的界面确实能满足一定的需求,但是到了现在,这样的设计只能说是远离用户。每一项的高度都过小,因此需要使用笔来点击,或是使用指甲。位于右下角的三个图标,或许用指甲都很难点到,使用笔即多占用用户的一只手,体验是直线下降的。在用户希望连耳朵都解放的现在,多占用一只手是什么概念,这就意味着用户乘车时没有办法握紧扶手,或者没有办法拎着自己的包。另外,在手机操作时,拥有一只空闲着的手,就能有更多机会处理突发事件,占用用户的两只手实在是不应该的。可以说Windows Mobile的用户体验是非常差劲的,幸好微软在新的Windows Phone 7中,对界面做了巨大的改进,没有再犯过去的错误。
再来看看Android是如何做的,这个界面看起来简洁明了,和上面的Windows Mobile相比,可以说是毫不出彩,甚至在有些人的眼里,这个界面很丑陋。但它却是相当好用的,图标很大,图标的间距也很大。这就决定了用户可以使用指腹去进行点击的操作,并且点击的范围可以比较大,降低了点错的几率。
虽然屏幕点击的方式一定程度上也和屏幕的材质有关,比如电阻屏只能用笔或指甲,而电容屏允许使用指腹,有一些还可以支持多点触摸。对于普通用户来说,使用指腹比使用指甲显得更为常见,原因很简单,如果图标很大,那么用户会不自觉的使用指腹去点击,而如果图标很小,那么用户会屈起手指然后用指甲去戳屏幕。这个“屈起手指”的动作不能被大部分的用户所接受。因此电容屏会渐渐流行,而电阻屏会渐渐被淘汰,这完全是根据用户的体验,优胜劣汰,是一件非常符合进化论的事。
用户体验还不仅仅是界面上的那些事,作为手机来说,每一个特点都将成为用户体验可以挖掘的一部分。比如说是否有键盘、是否支持多点触摸等。有键盘的手机与无键盘的手机,用户在执机时用的手势必然不同,一个着重点在机身下半部分,即键盘上;而另一个着重点在整个屏幕上,换言之,手指可能在屏幕的任何一个位置活动。针对设备的具体情况来对应用进行设计也是很有必要的,目前Google为Android设计的按屏幕大小自动切换布局方式的框架非常有用,它改变了以往在程序的设计过程中,需要为每一种设备单独编译一个版本,或是仅对不同的屏幕做简单拉伸的情况。另外,在设计中,还需要考虑实际操作体验,比如放大一张图片,是使用放大按钮,还是使用多点触摸。这两种做法都很常见,但是在一个有此需求的应用中,却不能单独的使用某一种。比较好的做法是,在程序代码中,判断设备是否支持多点触摸,若不支持,可以显示一个放大按钮,而对于支持的,则在应用第一次启动时,弹出一个Toast提示,告诉用户可以多点触摸从而放大图片。
下面再说说应用界面布局的问题,来看下面两个截图。
这两个应用同为Android下的游戏机模拟器,上面的图是PS模拟器,可以看到虚拟按键的布局有些奇怪,特别是 L和R,一上一下非常不习惯。而右面的是GBA模拟器,可以看到它的按键中规中矩,用户马上就可以上手了。但是,从上手的角度来说,GBA模拟器的确简单,但是从实用的角度来说,PS模拟器做得更好。为什么呢?原因很简单,PS模拟器利用到了整个屏幕,而且虚拟按键的布局,防止了两只手打架,也防止了屏幕下半部分由于手指的原因完全不可见的问题。通过一段时间的习惯,PS 模拟器就可以被玩得很溜。而再看GBA模拟器,只利用到了一半的屏幕不说,而且还是纵向的,双手操作时,两只手很容易打架,相互干扰,要玩一些动作性稍强的游戏几乎不可能。虽然看起来直观易懂,但是这样的UI,是会被用户所舍弃的。
在移动平台上,到目前为止,用户依然没有固定的操作习惯,而软件的开发人员要做的事情,就是把用户往一个简单、明快的操作体验上引导,使他们更快的学会使用软件,并且让他们习惯、擅长某一种或几种操作。从某种意义上来说,苹果的设计人员手册已经很好的解决了问题,iPad已经做到了中老年人也可以轻松上手,甚至连猫都会玩。但是至少目前为止,还没有见到适用于Android的设计手册,开发人员或是软件厂商也都各按自己的理解去进行软件的设计,用户也被迫在使用不同的软件时,适应不同的风格。
在未来为期不短的一段时间内,Android上应用程序的用户体验将成为一个主要的研究点,特别是游戏类应用。由于Android上的某些限制,开发人员较难实现像PSP游戏那样的华丽效果,因此只能够在游戏本身的游戏性上下足工夫。当然了,等Android手机的性能再次大幅提升,电池容量再大幅提升后,可能会出现可以匹敌PSP游戏的华丽游戏,只是目前不应当过分考虑这些。
在我以前的一些文章也曾提到过,为移动平台做开发,应该尽可能的考虑程序的执行效率而不是架构,因为移动平台本身通常不会有多好的配置,在有限的配置下实现性能最佳化是非常重要的。从另一种角度上说,iPhone 能够用较低的配置来实现整机流畅运作,也是得益于较为严格地针对性优化,把硬件平台的性能完全发挥出来,这样做得到的结果是,iPhone的整体性能,看起来反而比一些更高配置的手机要好一些。
最后,再简单地说一下Android的开发与其他平台的开发有什么异同。我们知道不同的开发方式将对最终的结果产生不同的影响。在以往的经验中,各厂家的开发工具,都在往可视化方向发展,比如说微软的 Visual Studio,一代比一代强大,可视化程度越来越高。而苹果的Xcode也是一样,它建议用户完全使用可视化的方案来解决一个应用。这些固然很好,但是带来的问题也不小。举个简单的例子,有一个 Windows Mobile 的应用,上面有一个 ListBox,而你正试图为该 ListBox 添加一个图标,并试图按每一项的内容限定来改变文字颜色。能做到吗?当然能,但是过程却不简单,你必须经历复杂的自绘才能实现这一点。这也是常规的RAD开发中普遍遇到的问题,即开发人员不能方便地控制到应用的每一个细节。开发框架对API的封装在某种程度上提高了开发的效率,但是另一种程度上,它屏蔽了太多的细节,而这些细节有可能就是开发人员所需要的。
而Android虽然也拥有可视的开发环境,但是它非常弱,第三方的RAD方案迄今为止也依然显得虚弱无力,对于用惯了微软等公司出品的高级RAD环境的人来说,可能会充满了无奈,也可能充满了鄙视,这种可视化算什么呢?如果仅仅从开发人员的角度来看,有利也有弊,弊端很显然是开发效率不够高,而事实上,由于Android采用Java语言来进行开发,其开发效率本身就不会太高。而利的部分,可能是会被很多高级工程师所喜爱的,因为它是牺牲开发效率,来换取最大的可定制性的一个典范。也许有一些刚开始学习Android开发的朋友会觉得制作界面有种种的不便,但是只要深入地学习下去,就会觉得Android的界面实现方式是非常领先的。同样举出上面ListBox的例子,在Android下,就可以通过一组短小精悍的代码来自定义ListItem和相关Adapter以实现。
我想优秀的开发人员是应该完全放弃RAD的,在目前的环境下,RAD几乎没有什么作为,反而会成为应用分层的一个巨大的绊脚石。在RAD的环境下,要求一位开发人员对软件的每一个部分都面面俱到,这怎么可能呢?比如说软件界面就是应该交由UI专员去设计,数据库部分也应该交由相关的负责人去做,完全不可能由开发人员从头到尾一个人搞定。如果哪个老板真的雇用了一位超级开发人员来包办一切,那么除非那个人拥有100年的工作经验,不然的话项目做死就是活该。我想Android的开发框架已经很好地说明了这个问题,程序资源(包括图片、字符串、其他的外部数据等)和代码完全分离,各部分人员各司其职,完成整个项目,每个部分的人员都不会有太大的压力。并且,由于Android采用XML对界面进行描述,使得对界面的更换也变得容易,设计师可以设计出多套界面,不论是用于UI方案评估或是在实际应用中更换界面风格都很方便。这也是其他移动平台的开发所不具备的。
⑤ Android开发求职简历的项目经验是指什么
我面试别人时,希望看到的简历是这样的:
我在XXX项目中担任技术leader,在开发该项目过程中,遇到了内存溢出,业务逻辑混乱,网络数据加载慢的问题,在我的带领下,App的运行内存从80M降低到40M;项目进行了多次重构,尝试了MVVM和MVP,最后因为效率问题,部分模块改为MVC结构,重要的业务逻辑,我们将其放在了Web层;我独立封装了网络框架,请求响应的效率提高了0.5S-1.5S左右;
随便写的简历Demo,大致意思你应该能看懂吧?
多多揣摩黑体字的意义:列具体数据,切记不要假大空,吹嘘。
⑥ 做安卓软件开发需要学习什么技术
Android的开发技术很多,在开始学习的时候不可能一次性全部学会,也没有必要一开始都全部学会,但是有些技术是非常常用的,需要在开始时打好基础,这些技术时:
1、Activity生命周期
虽然Android中有四大组件,但是不可否认Activity是最常用的。所以熟练掌握Android的生命周期是必须的。其实生命周期就是记住 Activity的那些方法在什么时候被系统调用,这样才可以把对应的逻辑代码写到合适的方法内部去。
至于服务和广播组件可以稍微缓一下,到实际使用的时候再学习都可以。
2、界面开发技术
界面开发是一种基本的技术,几乎所有的程序里面都需要用到。在Android开发中界面开发分为3种:
1)使用xml文件布局
使用xml首先对于界面进行布局,然后在Activity里面进行引用是最常见的应用软件开发技术,这种方式使用的最大,需要学习的内容也最多。学习时需要熟悉:
a)五种Layout布局
深刻理解五种布局组织控件的方式是一个基本的基础,这样你才可以在实际的界面中灵活的使用每种布局结构,构造出需要的界面。
b)常用控件
控件有很多,至少要知道每种控件是做什么的,至于里面的特定参数和方法可以学要的时候再去查
c)界面美华
系统的控件很多时候无法满足要求,需要通过添加背景更换图片等进行美化,要熟悉每种控件如何去美华。
掌握了上面的内容,通过布局的嵌套就可以制作出各种界面,如果在熟悉include的使用就可以减少xml的重复,方便后期的修改和维护了。
2)使用代码动态创建
有些时候需要动态的创建一些布局和控件,这个就需要使用LayoutInflater去创建一些动态的界面了。
3)自己绘制界面
游戏中常用,继承SurfaceView自己绘制。
3、数据存储技术
Android中的数据存储方式有3种:
1)SharedPrefereneces存储
对于简单的数据可以使用该方式存储,以键值对的方式存储一些基本的数据。
2)文件存储
将数据以文件的形式存储,可以是手机自身的存储也可以是SD卡,文件的数据格式自己定义。
3)SQLite数据库存储
使用标准SQL语句进行操作,复杂数据的首选。
4、网络编程
现在的Android程序不需要联网的已经不多了。所以网络编程也是必须的,一般的公司都会封装有自己的联网结构,但是基本的联网还是要熟悉。
1)HTTP联网
使用Http联网+Json数据格式是现在很多客户端的首选。
2)Socket联网
至于蓝牙等连接方式则可以在项目需要的时候学习。
对于手机的系统功能,如拨打电话、发送短信、读取系统参数等则可以根据需要在学习,不麻烦的。
其次,手机软件相关
Android开发不同于普通的电脑软件开发,需要了解手机的操作习惯,知道手机的屏幕不大、内存有限,电池有限等,在实际开发和设计时尽量考虑。
⑦ 一个资深的Android开发者需要掌握哪些技能
1.Android/iphone平台手机终端软件开发精通Android开发平台及框架,一年以上实际开发经验;
2.精通Android GUI程序开发;
3.1年以上J2ME开发经验,熟悉J2ME编程;熟悉Linux环境编程优先 ;从事过嵌入式开发工作2年以上。
4.熟悉HTML/WML/HTTP,具有良好的编程思想;
5.熟悉C/C++或者Java开发语言和环境;
6.有一年以上移动终端应用软件开发经验,有Android或者iPhone开发经验尤佳;
7.基础扎实,精通常用数据结构与算法和设计能力;
8.熟悉移动终端特性和开发特点; 熟悉移动终端网络编程,了解3G\WiFi等技术;
9.熟悉C++/C#, MSSQL/MySQL数据库开发;熟悉多线程、Socket或ACE等网络通信编程技术;
10.熟悉java各种编程方法,比如多线程,jni,idl等。 熟悉JVM的运行机制,移植或者扩展过JVM到嵌入式平台者优先,比如phoneme 等。
11.精通Android平台UI开发优先;英语良好,能阅读英文资料;
工作职责:
1.负责Android平台的浏览器开发。
2.在Android手机上设计并开发应用程序或游戏;
3.Android平台框架层的维护以及扩展。
4.移植各种流行的框架体系(多媒体,蓝牙,无线)到android上负责Android项目的开发工作;
5.负责Android项目的架构设计、方案的制定;
6.跟进Android的新技术发展。纂写设计开发及实现文档;
7.根据产品功能需求设计并完成软件实现;
8.参与产品需求分析并制定技术实施方案;
⑧ 如何成为一名Android开发高手
以下适合没有开发经验者,对于码农不适用:
1、你得喜欢开发,强烈的感受到那种看到自己的代码运行后得到你想要的结果后的那种幸福的感觉。(上c语言课程的时候,只要自己做过作业一般都能体验到这种感觉吧)
2、找一本好的书。(怎么找?上amazon看看用户的review就差不多知道哪个适合你了)
拿到书之后循序渐进,不要跳跃阅读(你还没到这个程度),连前言都不要放过,一字一句的读。里面讲到例子的时候,打开开发平台跟随例子(不要代码,而要一字一句的敲进去,感受语法和开发环境)
3、如果你看完一章后你发现很多东西不明白,请重新再看这章。(如果看了几遍还不明白,请换一本书,这本书不适合你)
4、不要开始就尝试看android的reference(还没到时候,庞大的library会让你迷失,进而失去学习的兴趣)
5、一章一章的跟随书本进行,完成所有的范例(如果有作业的话,一并完成),进行到全书的一半的时候,你应该掌握了初步的开发技能,对android的资
源、api的应用也积累了一定的程度,这个时候可以尝试超越书上的范畴。你花在查阅android文档上面的时间应该越来越多,因为你内心汹涌着一种冲
动:把书上提到的范例更佳完善化。Ok,你必须开始使用文档,学习各种新的资源和api。
6、尝试采用项目驱动法看书:打开新的一章,首先看看这一章的范例拟实现的功能是什么,自己思考一下该如何实现,需要使用到哪些新的资源和api,通过查
阅文档尝试独立完成。无论最后完成到什么程度,先把程序跑起来再说。之后再去阅读这一章的内容,看看作者是怎么做的,你的方法跟他的方法差别在哪里。
⑨ 如何增加android开发经验
。数据结构,性能优化等等这些。想想自己实际开发中这些确实用上了,但并不知道原理,很多时候都是从网上拿来代码然后修修改改,或者比如retrofit框架,看看demo引入项目中。。