richardzhangd / issues Goto Github PK
View Code? Open in Web Editor NEWIssue Collection
Issue Collection
http://www.open-open.com/lib/view/open1475497562965.html
前言
这个教程你将学会如何使用Android Studio2.0开发Android应用,从安装到开发Hello World都是采用图文并茂的方式讲解的,希望对你学习Android Studio开发有所帮助,不明白的地方或有错误的地方希望大家批评指正。
你将学到什么
Android Studio安装
Android SDK配置
模拟器安装
开发属于自己的应用
如何调试应用
一些必备技巧
你需要准备什么
一台装了Win7电脑
Android版本大于等于4.0的测试设备(没有可以用模拟器)
已熟悉JAVA语言
准备好了吗?让我们一起学习一起进步,走起!!!
简介
Google在2013的I/O开发者大会上正式对外宣布Android Studio将作为Android开发的主要IDE,它是基于IntelliJ IDEA打造的一款专门开发Android的神器。对于以前一直用ADT(Android Development Tools)的开发者谷歌建议转到Android Studio上来。官方也对外宣布了不再对ADT维护更新。Adnroid Studio支持Windows、MAC和Linux等操作系统。
系统要求
Win7或更高
内存 最少 4 GB ,建议8 GB RAM
硬盘 4G
Java Runtime Environment (JRE) 6或更高
Java Development Kit (JDK) 7 或更高
下载
新手建议下载安装版,比较简单一路Next就可以安装成功了。对于想要尝鲜的同学也可以去下载绿色版。绿色版分为分Canary版,Dev版,Beta版(注意:需要科学上网)。建议使用Canary版本相对稳定一些。
官方下载(需要科学上网)
安装版:http://developer.android.com/sdk/index.html
绿色版:http://tools.android.com/recent
百度网盘:
安装版 密码: 98tt
绿色版 密码: wwvt
安装Android Studio
首先先确定一下JAVA是否已经安装,在命令行输入“java -version”检查Java的版本,如果版本太低可以去下载Java SE Development Kit 7。
使用安装版安装Android Studio
执行android-studio-bundle-143.2915827-windows.exe,可以看到欢迎页:
说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML1b2f6e4.PNG
在选择安装组件中,虚拟机可以不用安装
说明: C:\Users\wqm\work\open-open\document\Android Studio2.0 教程从入门到精通Windows版\image\2016-7-2 15-28-26.png
接下就一直Next直到安装完成
说明: C:\Users\wqm\work\open-open\document\Android Studio2.0 教程从入门到精通Windows版\image\2016-7-2 16-00-27.png
使用绿色版安装Android Studio
用解压工具将zip压缩包解压,解压后的目录结构:
执行bin目录下的studio64.exe
第一次启动Android Studio的相关配置
在启动过程中可能会弹出一个请求设置代理的提示:
说明: C:\Users\wqm\work\open-open\document\Android Studio2.0 教程从入门到精通Windows版\image\2016-7-2 17-38-04.png
点击”Setup Propxy”按钮设置代理:
Host name:mirrors.neusoft.edu.cn
Port number: 80
说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML2f18525.PNG
“欢迎页”告诉我们可以开发平板、手机、手表、TV、车载和眼睛的相关应用。
说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML3020da6.PNG
点击“Next”按钮,在选项窗口中选择”Custom“选项
说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML3054c1c.PNG
UI主题可以选择目前比较流行的“Darcula”主题,据说这个主题有保护眼睛的功效
说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML30682d5.PNG
SDK设置
“安装版”安装的Android Studio,这个步骤就不要理会了,按默认的下去就可以了,由于“绿色版”里没有包含SDK,所以先要去把Android SDK下载并告诉Android Studio SDK所在位置。
a) 下载SDK
官方下载:https://dl.google.com/android/android-sdk_r24.4.1-windows.zip
深度网盘下载:http://pan.baidu.com/s/1jItY6jW
b) 解压zip包,并执行SDK Manager
选择需要安装的包:
说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML6358278.PNG
接受许可,并开始安装:
说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML6f0f1d1.PNG
c) 设置Android SDK的位置
说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML5da4e0e.PNG 说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML5f28776.PNG
Android Stuido基本配置
可以通过快捷键Ctrl+Alt+S或点击“Configure”后弹出菜单项的Settings打开设置窗口。
主题配置
可以设置成目前比较流行的Darcula主题,通过Appearance & Bahavior > Apperance下的UI Options选项设置。
说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML6fe7c83.PNG
字体配置
默认字体偏小个了,可以根据需要配置合适自己的字体大小,通过Editor->Color & Fonts > Font设置。默认方案是只读的,在修改字体大小前需要先Save As..一下再去修改字体:
说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML7034f9a.PNG说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML7011e8c.PNG
显示代码行数
默认Android Studio不显示代码行数,这样对于一些提示XX行的错误我们定位就不方便了,在配置的查询窗口中输入line num关键字查询需要配置的项目,然后选择Appearance选项,可以看到Show line numbers选项,打钩后就可以了。
说明: 2016-04-18_16-39-42.png说明: 2016-04-18_16-52-28.png
模拟器安装
Android Stuido里面的AVD Manager可以创建模拟器,使用起来也比较简单,缺点就是性能不行,现在比较流行使用Genymotion,号称史上最快的Android模拟器。下面我们就来装Genymontion。
安装Virtual Box
点击这里打开Virtual Box下载页面并点击x86/amd64下载:
说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML81afe26.PNG
下载完成后双击,开始Virtual Box的安装,安装过程很简单基本就是一路Next的节奏。
注册用户
点击这里在页面中输入用户名、邮箱和密码后并接受相关协议后就可以注册用户了。
Genymontion下载
点击这里打开下载页面并点击Download按钮开始下载。
安装Genymontion
双击文件开始安装,安装过程很简单,一路Next直到安装结束。
说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML834a2ce.PNG
安装Genymontion 插件
在Android Studio里点击Configure会出现一个弹出菜单,并点击【Plugins】菜单项:
在Plugins对话框中点击【Browse repositories】按钮:
说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML843d543.PNG
在Browse Repositories窗口的搜索框中输入Genymotion在查询结果出来后点击install按钮安装插件:
装完Genymotion后Android Studio会提示重启,重启后可以在工具栏上看到Genymontion小图标。
说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML86400b7.PNG
第一次点击Genymontion小图标会打开Genymontion设置,在设置中点击...按钮指定Genymontion应用的位置(默认位置:C:\Program Files\Genymobile\Genymotion)。
说明: C:\Users\wqm\AppData\Local\Temp\SNAGHTML86f79fb.PNG
路径设置好后,再点击Genymontion小图标就会打开Genymontion Device Manager。
注:如果提示“Genymontion: Initialize Engine: failed”请检查Virtual Box是否可以正常工作。
在Genymontion Device Manager中点击New按钮新建一个模拟器。
在创建向导中需要先登录Genymontion,点击Sing in按钮登录。
登陆成功后可以看到可供选择的列表中有不同型号的模拟器,可以通过版本和设备型号找到你想创建的模拟器。
然后一路Next后坐等Genymontion下载完模拟器。
下载完成后,接下来的事情就很点单了,在每次使用的的时候只要将模拟器启动起来,确保模拟器状态为On。
在运行的时候Android Studio会检测到Genymotion模拟器,点OK就开始编译安装应用。
以前一直都用真机做开发的,试用了Genymontion感觉性能确实可以,就是安装模拟器的时候需要登录才能装,有的时候可能会登录失败,这是唯一一点感觉不爽的地方。模拟器安装好后就和登录没有关系了,在断网的情况下都可以正常使用。
Genymontion模拟器的整个安装过程就介绍完成了。休息一会吧!!!
我是一个老程序员了, 2014 年我不断在思考一个问题:程序员的年龄天花板到底是多少岁?
其他行业里的老将
农村有一些老人 70 多岁了还能种地,不但能种小麦玉米,还能在自己房子后面种点白菜、萝卜、西红柿、豆角什么的,自给自足,不靠孩子赡养。
褚时健70多岁承包荒山开始种橙,现在褚橙是知名品牌。
我们家不远处有个同仁堂,同仁堂里有中医馆,中医馆里都是老先生,太年轻的没人看。
你看国家高级领导人,都没个年轻的,60多岁就算少壮了……
老程序员啊
很多行业对年龄没有特别限制,有的行业甚至是越老越吃香,可程序员呢,很多人都觉得是吃青春饭的,是“以色事人”的,年老色衰就会很悲哀。
果真如此?
国内环境
国内的 IT 公司,软件开发水平和意识整体较差,多数公司做出来的产品差强人意,上一帮子人做出一东西来,再上一帮子人花一大把钱去推广,就这么个现状吧。这种现状是 由逐利的急切性引起的,逐利的急切性又客观上造成了对技术的短视,再往下推,自然就是对技术人员和技术能力的不重视,最后也就谈不上人才的培养和技术的积 累了。
计算机软件已经成为整个社会发展的基础支撑,各行各业都需要,各行各业也都需要开发软件的程序员。行业背景不同,对技术的看法自然会有不同。我前面概述的 现状,自然也有一些公司不在其列,但大多数是如此的,90%以上是酱紫:东西做出来,钱赚到了,胜利,其它的,毛线。
在这样一种心态和现实下,做东西的人,谈不上多受重视,很多公司的老板觉得拉一帮子人就能把东西搞出来,他认为要做的东西根本就没什么技术难度,网上抄一 抄,加班搞一搞,这么着就出来了。年轻人身体好,牵绊少,能拼能加班,可以弥补与老程序员在水平上的些许差距,为什么不用年轻人呢?是吧。你说呢。年轻人 又便宜,一个老程序员的薪水可能可以雇好几个年轻小伙子,三个臭皮匠能顶诸葛亮,我几个人还干不过你一个么。
团队分类
为了讨论程序员的职业寿命,我们先得给公司或者团队分分类。大概有这么三类:
外包型
项目型
产品型
咱们一一来说一下吧。
外包型
什么是软件外包呢?
来来来,发挥剪报君的特长,看看百度百科的定义:
“
软件外包就是企业为了专注核心竞争力业务和降低软件项目成本,将软件项目中的全部或部分工作发包给提供外包服务的企业完成的软件需求活动。
”
看见了吧,大多数时候,软件外包干的就是人家不愿意干的脏活、累活、低技术含量的活。我在“亲爱的程序猿们怎么找工作”一文中已明确我的看法:有产品做,就不要做外包。
我见过的外包,有对欧美的,对日的,对华为的,这几类很多,前些年**的劳动力成本低,外包业务很发达,现在印度成本更低并且软件开发规范程度更高,是比**更受青睐的外包市场。
做软件外包的缺点有几个:
技术积累缺少持续性
不稳定
没有话语权
专门做外包的公司,有活儿了你就干,没活儿啦你可能就得滚蛋。这有什么可说的呢,我不养闲人呢亲。所以这是不稳定。
对程序员来讲,在外包类公司,是最容易遭遇年龄坎儿的。因为干的活儿技术含量低(核心的人家自己干啦),个人的可替代性就强,你一经验丰富的老程序员薪资 又高,每月 20K、30K很常见啊,对老板来讲养不起啊,肉疼心也疼,搞几个年轻的吧,三千两千都有人干,还也能干得了,你说说,你一个人拿的钱能雇七八个年轻人, 你多危险呢你。还有你事儿多,有老婆孩子,孩子学校不定什么事儿呢,晚上还得招呼孩子功课,加个班儿都不痛快,要你干么地吧。就算你技术很强,可外包这种 性质,打一枪换个地方,活干完了就了事了,再强也没你用武之地呀。再说啦,留两个强人就行了,要那么多净浪费公司银子。
项目型
**电信、**移动、**联通,电信三家公司,养活了数不尽的项目型公司和团队啊。还有一众银行、金融企业、政企,也养活了数不尽的项目型公司啊。
什么是项目型公司呢?就是以给人做项目为主业的公司,接到项目就开工,有钱赚,比如你接人家电信的网上营业厅,比如你接人家某某大型国企的政务信息化,等 等;接不到项目呢,就收缩规模,裁员……就这种啦。我见过很多,电信、金融、石油、电力、教育、政务、铁路……,各行各业都需要这种项目型公司,用自己公 司的人,帮别人干项目,干出来活所有权不归你公司,归人家,可延续性很差,也不需要多少人来维护,就是要维护,留上一两个核心的懂业务的就够了,其它人, 鸟尽弓藏,没项目了你就只好走人了吧。
项目型公司比外包型稍强一些,技术上可以自己选择,也能够在某个行业长期积累经验,甚至你还有可能自己立山头自己干。不过对于不能拉队伍自己搞的普通程序 员来说,还是可持续性差一些,可替代性差一些。我就见过电信的项目,一个大项目拆成多个小项目,分给七八个小公司来搞,今天你搞着呢,下一期另外一个小公 司和对口主管关系好,把你替了……有些程序员会在出没于电信一个大楼里的几个公司之间跳来跳去……从这一点上讲,程序员也不重要啊,公司也不重要啊,这个 公司不干还有那个,这个程序员不干还有那个,另外程序员的价值也不高啊,有个懂业务的,配几个小年轻,事儿也就能搞成,你说你老大不小的,怎么跟年轻人拼 呢……
产品型
毋庸置疑,做产品的公司是程序员最好的选择。一个公司做了一个好产品,运营这个产品,产品会不断迭代、更新,程序员会跟着这个产品一直往前走,公司需要了 解产品、了解业务、技术积累厚的人才,而要懂业务、懂产品、有积累,都需要时间,等你什么都了解差不多了,也就是个老程序员了不是。而且随着你对产品了解 的越深,你的不可替代性就越高,价值就越能凸显出来。当你的不可替代性高时,老板就要考虑替代的成本。什么都不懂的年轻后生,根本撼不动你的地位。
做产品的公司有相当数量,也有很多知名的,比如腾讯、百度、阿里、爱奇艺、PPTV等等,开发人员也数量庞大,几千到几万人的都有,但是这样的公司所拥有 的开发人员总数量,与**几百万程序员群体相比,还不是一个数量级的呀。那更多的程序员在哪里呢?就在项目型公司、外包型公司。
程序员的价值所在
(注:我在“程序员保值的4个秘密”一文中讨论了和这节类似的问题)
对于程序员来讲,价值怎么体现?一个程序员的价值,就体现在他的稀缺性上。物以稀为贵么,亘古不变的道理。
“闻道有先后,术业有专攻”这句话很适用于程序员,直白点说,技术的精湛不是以年龄来评判的,有的朋友在上学时的技术水平已经比工作十来年的高了,有工作十年的水平不如工作三年的,当然也有很多程序员的技术水平是正比于年龄增长的。
作为一个老程序员,只有你的技术能力正比于年龄,才是合格的,否则就必然越走越慢,慢慢掉队,最终就只能面临被年轻人挤兑、淘汰的窘况,结果就是被迫离开程序员的队伍。
程序员要想让自己的价值持续增长,有这么几个方向可供参考。
(一)选行业
在一个行业内持续积累,对行业的理解到位,积累深厚,你的价值是巨大的。不信你去浏览招聘网站上的岗位需求,99%都要求相关行业背景。所以,选择一个靠谱的、前景好的行业非常重要,只要这个行业能够不断发展、前进,你的积累就是有价值的,你自己就是不断增值的。
(二)技术
程序员,业务积累是屠龙刀,技术积累是倚天剑,两个都有,那就逢山开路遇水搭桥没有走不通的路了,你一定是先锋部队尖刀兵,到哪里都具有超强的攻击性。
技术上最起码的要求是技术水平和视野对得起年龄,如果有超越年龄的积累和犀利,那就没话说了,地球人已经阻挡不了你前进的步伐了。
就技术来讲,假如你掌握了一门很难又很重要的技术,那单单是这一点,就很有价值。比如你熟悉 Windows 内核或 Android 内核,能够熟练撰写各种驱动,那找个月薪五六十K的工作不成问题。再比如你图像处理算法很牛,再比如你视频解码算法很牛,……像这些特定领域的算法,我们 也叫它技术吧。如果你懂类似的算法并能实现之,恭喜你,你已经超越了 90% 的程序员了,你的重要性和价值将不可估量。
(三)产品意识
做产品也是讲感觉的,当然有时我们觉得对产品的把握是产品经理的事儿,这么讲对,也不对。产品经理虽然是不挂衔的 CEO ,但产品的最终实现,是要靠程序员的,假如你对产品没有热情、没有感觉,无所谓好无所谓坏,那很难做到出色了。
我有一个很朴素的想法,一个程序员,要想做一个不那么糟糕的产品,一定要有爱,就像天龙八部里的段誉哥哥,见到美女就爱得要死要活,对每一位妹妹的爱都是 发自真心的、都是炽烈的、都是让人魂牵梦萦的。惟其如此,你才能像张京兆(张敞,曾任京兆尹)为妻子画眉那样用心雕琢你的产品,对每一个细节都念兹在兹直 到完美。这是讲我们程序员要爱产品,爱各种各样的产品,是做出好产品的前提。
你爱你做的产品,打心眼里希望她好,就有了第一个前提了。那接下来就很容易进入角色了,每做一个产品都会有积累,走心嘛,没积累才奇怪。慢慢你就会培养出对产品的独特感觉,形成产品意识,鹤立于程序员群里了。
再罗嗦一点,业务积累是屠龙刀,技术积累是倚天剑,那产品意识就是张无忌了,由他来控制屠龙刀和倚天剑,那就能发挥无上威力了。
公司的招聘要求分析
在现实中,公司招聘程序员时,多数时候会提到业务和技术方面的任职要求,我截取了两则招聘信息,贴出来看看:
这是招聘 Android 开发工程师的,职位要求里的第5点,就是行业业务要求。1、2、3、4都是技术要求了。
再看一个:
这个职位要求很硬很牛逼了,大部分都是技术方面的,不过第6点,依然是行业业务相关的。
其实我比较中意的是一个人是否爱他喜欢他所做的事情,如果你爱,泛爱众,又是真爱,那你就有了坐着火箭飞行的基础了,如果没有这一点,嗯,顶多是做到称职 而已。不过你翻遍招聘网站的招聘需求,这方面的要求都很少见到,原因大概是很难描述、量化,因为它实在是一个软指标。
结论
我要亮出我的观点,评说就任人了。
我的结论是:程序员的价值与年龄没有直接关系,价值不会反比于年龄。作为软件开发人员,自己不要给自己在年龄上设限,很多事情我们没做成,很多时候我们没能取得更大的成就,都是因为我们先给自己设置了限制,用这个限制禁锢了自己。
下面这张图来自 cnbeta 的文章“2014年**程序员调查报告”,他说明了国内程序员的年龄分布情况:
图1 程序员年龄分布
谁说程序员干不过三十岁呢,图1表明,30岁以上的程序员占比高达 48.62%,占整个程序员群里的将近一半。
2015年1月22日,我去参加 Qt 西安开发应用研讨会,有一哥们就是老程序员,40多了,宝刀正锋利呢。
王江民30多岁写软件,43岁搞出横扫杀软市场的江民杀毒。
我的老上司,40来岁了写直播流媒体协议,P2P的,传输效率高且稳定。
……
年龄只是一个自然现象,而我们的经验、认知、能力、心智成熟度,在合理的情况下,都是随着年龄增长的,廉颇不老,黄忠能战,只要你走在正确的方向上有值得称道的积累,缘何不能横刀立马顾盼自雄耶。
国外的研究论文和结论
让我们看一下国外牛人的研究吧:“ Is Programming Knowledge Related To Age? ”。这个链接是英文的,pdf 版本,基于 Stack Overflow上的数据分析得出的结论。嫌 E 文难看的,来看个中文的:“编程能力与编程年龄的关系”,该文引用了“Is Programming Knowledge Related To Age?”的数据和结论。
“Is Programming Knowledge Related To Age?”这篇论文的结论是:
程序员技术能力上升是可以到50岁或60岁的。
老程序员在获取新技术上的能力并不比年轻的程序员差。
随着年龄老去的,是我们的身体,而永葆年轻的,则是我们的心。心不老,青春在,宝刀寒光仍闪耀,依旧斩上将首级于万千敌阵中如儿戏尔。程序员,走自己的路,让用年龄唱衰我们的人说去吧。
更多精彩文章,参看“漫谈程序员”专栏。
我开通了微信订阅号“程序视界”,关注即可第一时间看到我的原创文章以及我推荐的精彩文章:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.