c#开发的安卓只能跑在dnf加点模拟器器上面是什么意思?那到底可不可以像平时那样的APP使用啊

查看:16890|回复:27
这是社区第255期技术门诊时一些午饭的提问,以及朱老师耐心的解答。特整理在一起,供大家学习,参考,希望大家能从别人的问题及老师的解答中解决掉自己心中类似的困惑(原专题地址:)。(红色字体为解答部分。)
个人如何从事Android开发。在GoogleMarket关闭对中国程序员的上传权限后,中国的个人Android开发人员将何去何从?
其实GoogleMarket是刚开始谷歌为推广Android而采取的一种激励措施,具体关闭原因我们只能是猜测。但是无论关闭还是以后重开,毕竟Android的发展前景喜人。我们的国内团队总不能盯着GoogleMarket这一小小的市场来寻求盈利吧。现在的人才市场对Android人才的需求量巨大,无论是个人团队和公司团队,不愁有好的方向。
先来顶一个。想问老师一个关于个人android发展的困惑。
我是去年开始4月份学的java,之后十月份开始学了android,做了7个多学的开发,也就是做过两三个商业项目,然后现在在一个公司做android自动化测试。以后也想着继续做开发,只是现在在android学习上迷茫了起来,不知道该怎么学下去,简单的应用能做一点,牵涉到底层就不会了。我不是软件专业的学生,数据结构这类的都没学过,只能说现在只会一点java和android。想深入发展就不知道该怎么进行下去。也想学习一点数据结构,编程思想,或者android底层的东西,但是不知道该怎么学习,该看些什么书?怎样学习效率才高一点。。。。。这个问题,我也咨询过其他的老师,只是感觉还是很困惑,想听听您的指点。
我感觉你的学习速度还是太快,有点拔苗助长的感觉。学编程应该先打好基础,然后多实践,再在项目开发实践中不断的积累经验。Java便是一门浩瀚的编程语言,从桌面到Web,再到移动开发,每一个方面都需要你用数年才能完全掌握。
看来你将来向android应用开发方面发展,所以在此建议你先打好Java语言的基础,语法等知识一定要深入掌握。然后才可以学习Java数据结构和算法的问题,只有经过上述过程之后,你以后的android学习之路就会十分轻松。
android只是比Java多了模拟器和几个控件而已,而这些控件的功能都是通过调用底层接口实现的。了解底层知识确实可以体会android的奥秘,但是这一切是建立在具备Lnux、C、C++知识的基础之上的。如果你只想向android应用发展,建议只看一些底层中的常见接口知识,其余的深入知识可以忽略。
想关注下Android的前景如何?谢谢!
Android是目前市场占有率最高的智能手机操作系统,因为他的操作系统是开源的,所以深受厂商用户和程序员的喜爱。既然这么受欢迎,所以发展前景也及其乐观,不但在智能手机和平板电脑中得到了应用,并且相关的智能电视产品也讲马上问世。至于未来,谁说Android就不能成为PC机的主流系统之一呢?
& &经过三星苹果大战,三星败了,势必造成整个安卓厂商的动摇,一个系统没有硬件的支持,也就很难维持他的生存,所以,这次动荡也势必造成安卓一定的结构,那么,在未来的世界了安卓会不会像塞班那样推出?
& &其实我们大可不必担心Android的市场前景,这一点以Google今天的地位便可证明一切。长久以来,Google一直是以软件起家,如果现在硬要开发完全自己的硬件产品和自己的Android系统相配合,就注定只能做苹果的追赶者,超越更是遥遥无期。所以可以大胆的判定,在未来一段时间内,Google依旧会走重点发展软件之路,将主要精力用在Android的系统升级之上,硬件产品例如摩托罗拉等只是辅助工作,并且现在的摩托罗拉还不如收购前精彩。
现在的Android已经形成了固定的占有率,相信在未来一段时间内,也会保持这个占有率。相信下一步Google的工作重心将是系统用优化和UI架构,以极力提高用户体验为首要目标。
至于塞班系统,并不是系统不够好,而是诺基亚忽视了对他的升级。没有考虑到社会发展的更高级需求,诺基亚当时是站在金字塔的顶端不求上进。可以说是诺基亚毁了塞班,对塞班没有“呵护备至”的升级。现在的Android的情况和塞班不一样,现在Google对Android的升级很频繁,一年一大变,一年n小变。所以大家无需担心Android的前景问题。
& & 目前Android的盈利模式在哪里?如何做好应用软件——既不是流氓软件,又可以较好盈利的模式存在么?有没有具体的事例?
& &关于Android盈利模式的问题,我已经在上一个提问中进行回答,你可以看一下。我本人认为,流氓软件可能是最初的一种无奈之举,是急功近利的体现。要想做好、做大甚至是做强,一定要原理“流氓”二字。虽然说当前的软件产业竞争激烈,但是毕竟Android在国内仅仅算是刚刚起步。对于技术已经上手的朋友们来说,抢占市场制高点是比较重要的,机会也比较多。相信你能够在我上个问题提到的4种模式中会选到一种适合自己的。
目前Android的盈利模式在哪里?
& &其实Android经过最近几年的发展,不难发现它的盈利模式。就目前来看,国内的盈利模式主要集中在如下四个方面:
(1)应用收费类
这一类主要体现在日益火爆的手机游戏中,收费模式和PC机版本的网络游戏类似。
(2)电子商务类
和传统的B2C等购物网站类似,方便了消费者的购物。很多电商站点也都纷纷推出了手机版的购物平台,并且取得了不错的效果。但是就目前技术发展来看,商家和银行需要应付移动网络安全性的问题。
(3)软件应用类
即传统的买卖开发的应用软件,当前的主流模式是借助于大型平台进行交易,例如手机助手。单兵作战的能力还不甚理想,除非自己的作品很有特色。
(4)广告类
这一类和传统的PC版站点类似,靠点击广告来赚取广告费。虽然理论上来说,这是比较有前途的。但是同时,这种模式的转化率(从PV转化过来的广告点击)也是比较低的。就目前市场前景来看,移动版的广告不及网页版广告点击率的1/5,在其中还包括很多因为手机屏幕小造成的误点。这一类盈利模式要求自己的忠实用户比较多,比较具有代表性的是几个大型门户网站,例如网易、搜狐、优酷等。
&&专家您好,我是一名大学生。目前我想做android手机的桌面搜索引擎,但是不知道怎么下手,我有基础的android基础,请问我还需要补充什么知识?有什么书籍可以推荐的么?我要怎么入手去做呢?好迷茫啊
& &你好,桌面引擎的需要的知识点比较多,除了常见的I/O和SQLite外,还需要掌握在Java和底层之间的串联知识,例如JNI和应用程序接口,并且为了提高搜索效率,需要用C语言编写引擎核心。但是对于只有android基础的你来说,有难度。
所以在此建议你先借助于第三方开源软件来实现,例如Lucene。
如果想独立开发,则需要加强Java语言的学习,例如I/O、JNI,还要掌握C语言和android的底层知识,相关底层知识,可以借鉴电子社刚出版的《Android底层开发技术实战详解:内核、移植和驱动
》一书。按照先Java后底层的顺序,相信你会成功的。
& &我们单位有在与某公司合作,开发在安卓移动平台上的一个订货系统,在系统开发前期的需求提供上我曾提过一个问题,如何确保所编写程序的数据应用安全,因为我们的客户需要用用户名和密码登陆系统,但是用户名密码的数据在登陆系统的时候是明文的,我们要求开发公司增加类似MD5之类的简单加密方法,他们都说在安卓平台很难实现,现在导致我们系统的用户名和密码在数据库里面全部是明文的。我想问问就是安卓平台开发个软件做数据加密的功能真的很麻烦么?那现在安卓移动平台有那么多程序,难道都是明文传输的?还有现在安卓平台也好OS平台也好,反正移动平台的业务越来越广了,在确保数据应用安全这一块有什么好办法么?
& &不用明文传输,具体加密技术其实有多种方案,其中最简单是从Java的网络协议入手。在Java中传输网络数据时是可以加密的,所以同理在android中也可以使用。另外,加密算法有多种,在移动设备中建议使用倒序编码、键盘编码、反字母表编码、摩尔编码等。MD5加密算法也很容易实现,最科学的做法建议使用数据存储方式,例如将加密数据保存在SQLite中。
& &还有个个人的问题,可以不回答。我使用是魅族MX,他的flyme系统也是安卓4.0的,但是用该手机浏览器登录一些flash网站时无法输入用户名和密码之类的(不是用客户端登陆,是网页登陆)听人说是安卓和flash不兼容,不知道是不是这回事。
& &是的,可能性非常大,以后Falsh在智能手机系统中的不兼容性将继续存在,未来的方向是HTML 5。
& & 老师您好,我想咨询个问题,为什么同样一款应用或软件,在ios系统的设备上对硬件要求比android要来的低,很多性能比itouch要高的手机运行同类软件会卡,是否android系统下开发的软件对资源的消耗相对比较高。
& & 原因有很多,其中最主要的是目前ios的优化工作做得比android好,毕竟android系统要供多家、水平层次不齐的硬件使用,而ios系统是专为苹果自己服务的。
& &&&老师您好!我是一名大学生,目前是学习计算机网络技术的专业,我在学C++的课程。对于安卓系统手机应用上的程序那块我不是很明白。也没有这种实际的平台来操作。感觉学习的专业知识根本没用在实际生活中去。好想去学习,请问你们这边有没提供给一个学习平台?
& && &你好,你毕竟是在校学生,接触编程的时间有限。其实对于C++来说,这是一门高深的开发技术,只要精通了C++,其他诸如Java和C#便小巫见大巫,会发现有很多类似的地方。这样在以后学习Java或C#时,会有事半功倍的效果。建议你现在还是从基础做起,学好C和C++。至于Android,等学好C和C++再做决定。
& & 老师您好!我是从java新入门了解android的。android内部类和java的内部类是不是有很大区别?我写了一个工具类用java的main方法调用没问题,在安卓中调用就提示找不到内部类了。内部类是在工具类中,工具类实例化内部类的时候抛出异常
& &&&你好,大多数Java内部类可以在Android中直接使用,但是需要注意一个前提,一定要创建Android SDK环境,并且最好用Eclipse工具创建Android工程。当你掌握了Java的基本知识后,即使发现有的有差别,但是当你用Eclipse调试的时候,也可以根据错误提示修改过来。
Android的前景如何,未来的ios,wp8,android 竞争这么激烈,andorid的优势又在哪里,求解?
& & i从目前情况发展来看,ios和android各具优势,而wp8不足以对两者构成威胁。跟ios、wp8相比,android最大的优势是开源。开源意味着免费,所以吸引了众多手机厂商的青睐。一时之间,无论巨头级的三星,还是国内的山寨厂商,共同推出了数目巨大的产品,这样android就无可争议的获取了占有量的优势。谷歌当前的目的很明确,先拉住用户,占据数量优势,然后想法留住他们。
但是究竟怎么样留住他们呢?我觉得谷歌应该向ios学习,要努力提高用户的体验!将来的智能手机用户对移动设备的要求会越来越高,不仅仅再是作为一个通话工具来使用。这个时候,用户体验就显得尤为重要,例如反应敏捷、界面美化、强大的娱乐和商务实用性等。在android早先的几个版本中,升级过于频繁,而缺乏真正震撼力的升级,仿佛有仓促之感。随着近2年的发展,谷歌已经越来越重视与细节、优化和用户体验,相信在新的版本中,android会做得更好。
& &&&老师,你们好,我现在在学Android的开发,你能以你的经验给我提一些建议吗?学习就是看着视频,然后敲代码,您觉得合适吗?期待您的建议。
& && &其实学习任何开发技术的方法都是类似的,那就是多写代码,多练习。只有从实战练习中才能知道自己的不足,并且每一段代码的调试成功能够带来莫名的信心和成就感。另外,对于Android开发来说,需要比较系统的学习Java、SDK等方面的知识,只有视频是不足的,建议多阅读相关书籍,多去知名的技术论坛逛逛,这样能学到更多有用的知识,祝学习成功!
& &&&1、我是一个Android的初学者,对于一个系统的底层操作,从底层构造服务到最上层的应用调用实现APP,具体的机制和流程是如何的呢?
2、我想对供应商提供的OS进行服务的裁剪,将会涉及到哪些方面的问题?
& & 具体机制非常简单,就是一个自上而下“寻根”的过程,或者说是自下而上“分支造叶”的过程。
(1)底层是内核系统,核心是驱动程序。
(2)中间层是接口,提供了开发应用所需要的各个接口。
(3)上层是应用程序框架,这是为应用程序层的开发者提供APIs,例如包括了很多有用的控件。
对供应商提供的OS进行服务的裁剪时,最主要的问题是因为硬件的差异造成的兼容,一个细节差异可能会带来移植的麻烦。另外还需要细心,不要忘记仔细做好“善后”工作。
& & 如何用Android系统控制外围设备,不知如何设计?
& &&&无论是那种外部设备,控制原理都是一样的,都是通过驱动程序这个中间媒介实现的。驱动调用底层核心,然后再通过调用接口的方式编写应用程序,即可实现对外围设备的控制。这和PC机控制外围设备的原理也是一样的。有关这方面的具体原理和具体实现实例,建议参考电子工业出版社的《Android底层开发技术实战详解:内核、移植和驱动》一书。
& & 我是一名java程序员 目前主要从事web开发看到现在很多公司要求熟悉android优先,所以最近开始看android,但不知道有什么好的方法去学习,不知道老师有什么建议,还有android貌似有几个方向,像我这种应该注重哪个方向的开发
& &&&我不知道你用什么技术进行Web开发,所以不太好决定。Android的范围还算“窄”那么点,主要分为:应用方面、底层驱动和移植方面,其中应用又可以细分为游戏、网络等。底层方面需要C、C++、和Linux方面的知识,而应用方面目前主要用Java。如果你以前从事的是Java Web开发,则android应用可能会上手较快。
其实Web和android也有交集,为移动设备开发网页是将来的一大热点。所以你可以重点学习android网络方面的知识,只要你精通了在android上开发网页的技术,你肯定会在职场中绽放光芒。有关android网络开发技术,建议参考电子工业出版社的《Android网络开发技术实战详解》一书。
& & 手里有一个解析Json的项目(android)需要解析Url的json。我通过创建HttpGet对象,用HttpResponse发送GET请求,可是总不能成功返回,都是抛出异常的。在Java下面用URL来创建HttpURLConnection连接获得数据流存到json文件中确可以,这个怎么解决?
& &&&在这个过程需要&&response.getEntity() EntityUtils进行字符串的处理,用JSON 对象进行数据的封装,否则会发生异常。注意到这点后,整个过程和在Java下的类似,只需四个步骤:
(1)通过httpclient向网络端获取到数据,返回JSON object格式的数据。
(2)通过JSON object的get JSONArray()得到数据。
(3)通过对array的遍历 根据元素名称取出各组相应的数据。
(4)得到数据,并且进行填充。
& &&&Android项目中添加PhoneGap控件,对系统的消耗大吗?是完全替换了还是套壳封装?
& && &系统消耗不大,最初的PhoneGap是原生方式体现的,我所试过的是在Android项目中添加的是封装版的。不过建议在项目中不使用PhoneGap,毕竟JavaScript调用的方式的功能有限。
& &&&专家您好,我正在学Android,想做一个android上的socket多人聊天室,可是socket线程把ui阻塞了,在网上查了一下资料,明白了要用android上的多线程机制,可是不知道用handler、AsyncTask、还是service好?谢谢!
& &&&如果要求不高,从难易程度考虑,建议使用AsyncTask,因为毕竟AsyncTask是一个独立的工具类,它提供了多个有用的方法供我们选择。如果从追求效率和稳定性因素考虑,建议用hanlder+message,这一机制号称是最本质的多线程机制,这样就如果提供了一个专门的处理器一样来处理我们的多任务。
& && &老师您好,我想咨询一下,android经过几年的发展,现在的发展情况跟iphone、wp8相比,是否处于移动开发的前列(市场份额,用户使用普及程度),尤其是与iphone相比。另外,作为个人软件开发爱好者,您认为个人开发者在android移动开发中是否有创业的可能性?难度在哪里?谢谢指点。
& && & 无论是从市场占有量、开发人员入门的门槛还是开发成本,android都是占据了绝对优势。至于你所说的创业问题,我的观点是越早越好。既然你已经想到了创业,我想你应该已经具备了创业所需的软硬件条件。毕竟android是近几年发展起来的新技术,高手不如别的程序员那么多,所以说“创业要趁早”。
但是创业并不是简单的“心血来潮”,当前制约android创业盈利的“点”还不如iphone正规,难以形成一个统一的、标准化的而又信息量巨大的市场。要想发展业务,只能凭借仅有的平台来拓展,或者是“赤裸裸”的个人推广。个人感觉谷歌提供的创业平台不如iphone,例如iTunes这一平台的作用是无法想象的。
& && &两位老师好,我是一名android游戏开发者,现在是做单机游戏的。 正准备步入联网游戏开发,想请问下:联网游戏的人物位置在不用机器里是怎么同步的?我的意思是例如现在有A、B两个android手机同时玩一个联网游戏,A手机的人物位置改变的,用什么方式告诉B手机让B手机的人物也改变位置?谢谢!
& && & 有两种可选方案:
(1)利用socket技术,频繁发送A的坐标信息给B。在具体实现时,可以通过触摸按钮的方式实现,每触摸一次,计算一次位置坐标,然后将坐标发送出去。这种方式是大多数网络游戏中的做法,优点是适用于几乎所有的网络游戏。但是缺点很明显,浪费数据,这一缺点对手机来说非常致命。
(2)利用android的广播机制进行通知。不要将广播想象的太复杂,最简单的是只广播起始位置和结束位置,至于复杂程度可以自行设置。
这两种只是简单的方案,如果要想让游戏更加精密,还需要在构建框架时设置人物的移动速率、移动时间差等,这些都需要和游戏服务器配合实现。
有时间可以参阅电子工业出版社刚出版的《Android游戏开发技术实战详解 》和《Android网络开发技术实战详解》两本书,里面介绍了相关内容。
& && &老师,您好,我现在在做一些android的自动化测试方面的工作。不知道在这方面有什么发展?主要就是用了三个android提供的自动化工具,Robotium,Monkey和MonkeyRunner,平时也就用这几个工具写一些自动化的脚步,感觉用起来比较简单。虽然以后还是想往开发发展,但是现在在做着测试的工作,也希望能把测试做好。不知道在android自动化测试方面怎么学习,该学习点什么(我做了两个多月,平时的任务就是用Robotium和MonkeyRunner写点脚本,感觉没啥进步)?自动化测试的发展前景如何?麻烦老师能给出一些指点。
& &&&其实任何一个工作,只要做好了,前途都是光明的。自动化测试是将来软件行业的一个热点之一,毕竟开发出来这么程序,究竟能不能好的运行,能不能更加具有效率,有时凭我们的目前的经验来说很难判断,特别对于android这门近几年刚发展的技术来说更是如此。android自动化测试工作看似简单,其实做好很难。当前的测试工具也不尽完善,工具能够测出的仅仅是大多数,所以给人造成了“android自动化测试”简单的误区。相信随着谷歌对android的发展,以后会有更多的好的测试工具推出,并且也会诞生一些第三方工具。
既然测试工作的前景光明,所以做好是很重要的。平时可以了解一些内存管理和android虚拟机等方面的知识,相信会对你的工作有锁帮助。如果还是希望挑战android开发工作,现在学习也不晚。并且你具备测试方面的经验,相信你开发出的android程序会更加精彩。
& &&&老师,你好!我现在掌握和了解的技术主要是j2ee方向的软件开发,最近了解了一点点安卓app的开发流程,发现有相似也有些不大一样的东西,目前找工作很多都有关于安卓方面的开发的,像我这种情况,找到相关的工作的难度多大?转方向突破点又是哪一块呢?谢谢老师的解答!!!
& && &只了解安卓开发流程是不够的,虽然安卓应用程序是Java开发的,但是毕竟安卓比Java多了一些控件和接口。因为你已经具备了j2ee开发基础,所以现在学习安卓会事半功倍。很明显,当前能够最快提高你的方向是安卓应用领域。建议你先从SDK、控件、接口入手,多阅读一些安卓的典型实例。相信凭着你的基础,能够很快上手。
& && &老师,请教一个问题,”android网络开发”和“phoneGap+web开发”两者的区别在哪里?两者都可以开发android的web应用程序的话,他们的优势是什么,劣势又是什么?您觉得哪一个技术在将来会更加受欢迎?个人觉得web技术会越来越强大,它可以实现跨平台,通过phonegap+jquery mobile等也可以实现android桌面游戏的开发,而android无法实现跨平台。希望老师百忙之中能够抽空回答一下。
& && &PhoneGap:是一款HTML5平台,通过它,开发商可以使用HTML、CSS及JavaScript来开发本地移动应用程序。你说的“phoneGap+web开发”是指利用phoneGap平台开发Web网页。
而“android网络开发”的范围则比较广,包含了和网络有关的各种android应用,除了Web方面外,还包括网络通信、蓝牙、无线开发、流量等。
& && &老师你好,我及周边几个同事都想转入Android的开发,做为初学者我们该从哪里入手,有没有什么比较合适的书籍推荐,另外Android的开展前景如何,如何运作Android的运营模式。如何应对Android版本升级的接口变化。Android、iOS、Windows Phone这个系统的发展形式作个预测。
& && &我不清楚你们目前从事什么开发,如果是Java方面,向Android应用领域转行会比较容易。如果有Linux、C等经验,可以考虑向Android移植、底层方面转型。
Android的前景请不要怀疑,优势已经在前面的问题中回答了。在将来的一段时期内,智能手机系统市场还是iOS和Android的天下。Windows Phone还需要继续提高自己的修为,因为微软还没有实现一个比较统一的集发布、开发和测试于一体的平台,所以无论是软件支持,还是开发者支持,近期内难以达到理想的效果。当然只要微软解决了这一问题,凭借其目前在PC机的统治力,后来居上也是有可能的。
近期电子工业出版社刚出版的《Android开发实例大全 》《Android多媒体开发技术实战详解》《 Android网络开发技术实战详解 》《 Android游戏开发技术实战详解》《Android底层开发技术实战详解:内核、移植和驱动 》比较具有代表性,相信你们会从中选出适合自己的书籍。
& & 老师您好,
有机会向您请教真是荣幸,我知道有很多库可以实现即时通信,但是对于原理方面了解不多,也不曾深入了解过,想趁这个机会问一下。两个局域网通过互联网相互通信,靠的是tcp/ip但是,
1、两台终端是怎样通过socket进行绑定的呢?
2、我知道局域网和互联网通信可能用到nat,难道这些协议也是通过nat找端口?是怎么实现的?在有就是服务器在这个时候是起的什么样的作用呢?
3、一台终端能够即时的获得消息,是从另一台终端获得的消息吗?还是通过服务器转发?这台终端是否一直占用着socket一个端口?难道是一直在轮询?
因为对这一块很感兴趣,请不吝赐教
& &第一个问题就不回答了,因为十分简单,只是一个使用socket实现连接、交互和关闭这三个阶段的过程。
第二个问题:NAT只是一个中间媒介,起一个翻译的作用,翻译的对象是外部因特网网的地址,因为在使用时已经有了外部地址,所以不需要查找端口操作。如果为了追求系统的可扩展性和稳定性,则需要添加找端口机制,但是此时最好对应添加服务器代理,因为这样做的效率会更高。由此可见,这个时候服务器的作用就是处理翻译寻址工作,做一些存储工作。
第三个问题:当然可以从另一台终端获得的消息,但是这样会占用更多资源,所以最合理做法是服务器转发。在一个端口只能用一种方式,例如只能用轮询。一只占用是不好的做法,现在硬件设备都支持轮询,因为这样会更加节约资源,甚至andorid和ios等移动设备都支持轮询。当然也会有人反驳说:移动设备的资源有限,所以才选择用轮询。如果硬要这么反驳,那么在追求效率和利用率的今天,这些工作就没有意义了!
& &&&老师你好,我是一个工作快一年的android开发者.由于我们公司是做自己的产品,项目压力比较小,上班的时候有时候感觉无所事事.所以我想多学一点其他方面的东西.我在网上看到好多android开发者都会同时学习ios开发,请问同时使用两种语言会不会比较麻烦?又或者是向NDK方向发展呢?
& &&&是很麻烦,但是幸运的是objective-c和C语言以及Java有很多相似之处,所以能够提高学习ios的效率。大家都是有经验的程序员了,为了自己的未来,相信多学一门新技术是很值得的。
其实NDK方向的难度和ios可以划等号,既然需要付出的时间和精力差不多,为什么不学习一门新的技术呢?
& && &老师您好!我的导师建议我用android开发一款适合中小学教学的教育游戏软件,作为我的毕业论文,但之前没有接触过android,应该从哪些方面来着手学习呢?谢谢!
& &&&老师的任务是让你开发一个android游戏项目,也就是一个android应用程序。因为你是初学者,所以建议你从基础做起,下面是基本的学习流程:
(1)搭建android开发环境
(2)复习Java语言的语法知识,了解Java游戏的知识
(3)android SDK、控件、接口,着重学习和绘图、图形相关的接口类
对于有Java基础的学习者来说,学习android应用开发十分简单。并且建议准备几本android教科书,例如电子工业出版社的新书《Android游戏开发技术实战详解》正好适合现在的你。
& &&&我之前主要是做WEB前端开发,对J2EE后端的东西自己也了解和学习过一些。现在在接触android这一块,并且想一直走下去。我目前比较迷茫的要怎么样学才能比较高效的掌握好android并且能够达到找到一份好工作的程度,因为我时间不是很多,年龄也不小了今年29岁。呵呵,有点急功近利的感觉。 目前我的学习路线是通过学习视频来入门,书浏览过但是没有仔细揣摩,因为怕费时间。另外是打算研究SDK的sample代码,最后能够自己写几个项目出来去面试,但是又怕自己代码写的很难看很弱智,所以又想学学开源项目的代码,但是又怕遇到完全不知道人家这样写的意图的时候就不知道怎么办了。
不知道这样是否可行?请指点。谢谢~
& && &首先要明确一个观点:编程是看得见摸得着的工作,编程也是不能急功近利的职业。相对于其他开发工作来说,android是一门相对比较值得投入的技术。视频学习虽然比较迅速,但是这是对初学者来说的。还是建议你购买几本相关书籍,进行一次系统的学习。这看似比较浪费时间,其实这是一劳永逸的做法。
SDK的sample比较具有代表性,但是也存在一个问题:简单和复杂并存。建议你多参阅市面中android书籍中的实例,一般都讲解的比较细致,有利于你看懂并掌握。例如电子社刚出版的《Android开发实例大全》一书,不但有你目前学习的小型项目,而且也有大型的项目,这些项目对你的学习很有好处。
本帖最后由 风泊海上 于
17:26 编辑
& && &老师,您好,我是一名在校的学生,接触android也大概有一年时间了,但是总感觉对android的掌握程度还很小,一直在做android应用开发,也都是一些比较小的应用,想在做应用的基础上,试试往android的底层和网络方面延伸呢,我是一个对学习尤其是没接触过的东西很有兴趣的人,在此想问问老师能不能给点意见;还有就是,当学完java课程的时候,我还是想再自己看看相关的知识点呢,毕竟在android的开发中,java语言还是比较重要的,也希望两位老师在jav深入学习这方面能够给我一些宝贵意见或者建议,学生感激不尽。谢谢两位老师!
& && & 首先肯定你喜欢钻研的品格,值得鼓励。android应用开发比较容易上手,既然你已经有一定基础了,建议你继续深入下去,做到学一门,精通一门。在此基础上,可以进一步向网络方面发展。Java对于android非常重要,建议你继续了解一些虚拟机、多线程和Socket等方面的知识,因为这些知识对于android来说非常重要。
底层和应用是两个独立的领域,需要具备linux、C等方面的知识。毕竟我们的精力是有限的,建议底层作为的第二目标,等经过android应用知识后再掌握这方面的知识也不迟啊。
& && & 老师您好,再次麻烦您了。以前,不知道通过USB 数据线怎么实现android手机和电脑之间互相读取数据传输文件的?以前查资料说是通过USB HOST编程实现的,是什么串口编程,在android3.0版本以后,手机上以及支持android主从机模式,也查了一些资料,研究了一个多星期,没有结果。不知道您能不能解释一下,是什么原理或者单纯的数据线连接电脑时,怎么实现读取到手机数据的?
还有一个问题,我想做一个网站的客户端的话,该怎么做?就比如51CTO的博文,我就只是想把博文这一个版块在自己的客户端显示出来,大概是要用到JSON解析网页,然后自己封装展示,请问一下,怎么解析?要每一篇都解析吗?思路不太清晰,请老师指点一下。
Android支通过两种模式来支持Android USB外设(实现了Android 外设协议的硬件):
(1)USB 外设模式:外部USB 硬件(装有Android的设备要连接的外部设备)充当USB 主机,例如机器人、扩展插座、诊断和音乐设备、电子报亭、读卡器等。
(2)USB主机模式:装有Android 的设备扮演着主机的角色,例如数码像机,键盘,鼠标和游戏手柄。
USB驱动连接的知识你可以阅读Android是USB驱动程序源码,源码路径是/kernel/drivers/usb/gadget/,在这目录下,保存了USB驱动文件的实现C文件。Android USB驱动是实现过程是连接并读取复合设备、cdrom/u盘设备、网络设备和adb驱动的过程,在gadget目录下的文件很好的说明了这一点。
& && & 专家您好,我从事J2EE开发3年了。近期想转Android开发自己的工具类应用(SNS),我有几个困惑:我需要从哪儿入手快速开始?怎样应对Andriod频繁的版本升级?有什么好的参考书推荐(编码驱动的)?谢谢!
& && & 你好,因为你已经有相关开发经验了。所以建议你掌握基本的Android知识后,先从源码分析开始,了解每一个Android控件是怎么样实现的。其实每一个控件就是一个谷歌程序员们编写的类,分析高手们的源码对你的SNS有很大的高出。
版本升级你无需考虑太多,谷歌的每一次大的升级,都是针对一整个框架而言的。而除了这些变化的框架之外,其他的细节没有什么变化。从目前情况来看,谷歌定期一年有一个相对比较大的变动,没有刚发布时那么频繁了。
编码驱动的书籍相对来说比较少,建议参阅电子工业出版社的新书《Android底层开发技术实战详解:内核、移植和驱动 》,希望会对你有所帮助。
& && &老师您好,我是网络工程师,只有perl,python类的语言开发经验,应该如何开始学哪?
& && & 是指学习android吗?你可以从两个方向进行选择:
(1)android应用:这是当前从事程序员最多的一个领域,你需要学习开发android应用程序的知识,需要学习SDK 控件,还需要学习Java语言。
(2)底层:需要学习Linux、编译、C、C++等知识,分析android的源码。这一领域的相对来说要难一点,从事的程序员要少一些。也正因为如此,所以这方面的就业前景好,是一个高薪行业。
1、现在接触android两个多月了,到底android学到什么程度算是精通了呢?
2、做了几个简单的应用,什么样的应用程序又是能够为后面跳槽或者面试最有利的证明呢?
& && &一般来说,只学习了两个月,还不能算是精通。简单的应用肯定不能去应聘公司胜任好的职位,你还需要实践来继续巩固自己。首先要继续理论的深入学习,然后向更深层次的内容学习,掌握应用后,可以向设计模式和优化方面转移,让自己的程序拥有更好的体验。要想在面试中拿出合格的作品,你的作品需不但要有优秀 UI效果,并且还要实现性能优化。
& && &现在的自己似乎有些迷茫,不知道是自己巩固自己的理论知识呢,还是继续找应用项目做,继续巩固理论吧,有害怕自己的动手能力做项目经验不够,继续做项目吧,又害怕自己去面试的时候理论知识又不过关?纠结和矛盾中……
& && &建议是先加入一个团队,负责低层次方面的工作,得到团队内高手们的指点。学习编程没有捷径可寻,只能通过不断的实践和摸索来提高自己。建议你继续深入理论,并和实践相结合,相信自己一定会成功的。
& && &谢谢老师,不知道老师有没有看到39楼的第二个问题?
& && &你好,是指客户端的问题吧。这其实是一个本地app和web app的问题,一些知识请参阅46楼。你可以选择当前最流行的技术:HTML 5+JS框架+本地 app实现,具体分工是:
(1)将简单的数据缓存、实时通知用HTML 5技术实现。
(2)将复杂点的通知处理、上传处理,甚至是视频采集,用本地app方式实现。
(3)在HTML 5中使用JS框架实现对本地app的调用,这样本地app和wen app实现同步。
另外,很多知名博客和微博开放了客户端源码,他们都对整个原理进行了详细讲解,你可以参考一下。
& && &老师您好!我从J2EE转到android开发半年了,半年时间里都是一个人在做开发,在开发过程中遇到很多问题,成长了许多,但是目前有个问题,目前很多android的手机,商家都会修改rom然后定制他们,导致我们开发的功能(比如AlertDialog弹出框、日期控件等)在不同的手机上显示各不同,简单的我们可以定制,难点儿的估计就不行了。应该如何去接触一些底层的东西,如何去修改android提供的源码来,定制出符合我们产品需要的风格的功能。
& && &其实这些工作比较简单,就是修改源码的过程,并且绝大多数都是整体风格的修改。这些工作的修改十分简单,你应该能够解决。至于具体的因为不同硬件设备所定制的功能,那就需要做一些专门的底层开发工作,例如不同的硬件需要不同的驱动。此时你需要掌握底层开发和源码分析等知识,建议你阅读电子工业出版社的《Android底层开发技术实战详解:内核、移植和驱动 》一书,相信你会从中获得帮助。
& && & 刚刚提了个定制的问题,现在还有一个问题就是本地app和web app的应用如何更好地结合?web app我看网络上有很多都是用一些js的移动开发框架,看着那么多的框架,选择起来感觉有点儿费事。html5的推出,会不会更好地的定制我们所需要的功能。如何更好更加快速的进入web app的开发当中呢?
& && & 本地app的优势是强大设备的处理能力,这样开发出功能更加强大的应用。web app的优势是一个巨大的平台,有着无与伦比的普及性。由此可见,要想实现两者的更好结合,就需要通过一个中间媒介来将两者串联起来,这样可以做到在本地实现和外界的接轨,在web端调用本地的强大功能。在这一方面,js是最佳选择。正是因为这样,所以现实中存在了很多js的移动开发框架,这说明这些框架把握住了现实需求。
HTML 的推出,确实在web端更加强大了,至于能否强大到可以舍弃本地端 ,我想是不大可能。建议你当前的任务的是,多了解HTML 5的新功能,并利用HTML 5开发出更加强大的功能。并学习知名的js移动框架,做到熟练运用,这样即可在web app中做到游刃有余。
& && &Android 目前的盈利模式好像基本大部分是广告来源,刚刚开始推出应用时完全无广告的,过几个版本后添加广告,或者应用内支付,会不会减少用户?
& && &呵呵,没发现很web广告也是如此吗?刚开始靠免费吸引流量,然后慢慢收费。这样做减少客户是必然的,但是只要是好的东西,还是会有掏钱的“财主”的,也比完全免费的收益要好。
& && &目前市面上android的手机有百来款,手机和平板的分辩率也多达十几种,Android版本有1.5-4.1,碎片化太严重了。面对碎片化问题,我们应该如何解决?
& && &碎片化问题是众多开发人员所面临的问题,并且已经引起了业界的注意。并且从4.0开始,谷歌开始处理这个问题。作为程序员来说,为了降低碎片化给我们的影响,可以从如下几点做起:
(1)开发兼容性的程序,这里的兼容不但是指不同android版本的兼容,而且要考虑到主流的硬件设备。
(2)做好优化措施,这样不但可以提高效率,而且可以降低因为碎片化所带来的副作用。
当然最科学的做法是:用统一的框架做开发,这个框架是用最优的设计模式实现的。很不幸,因为硬件设备的参次不齐,不同的android版本,这种模式接近于不存在,所以android的碎片化问题还将继续存在。但是幸运的是,谷歌已经意识到了这个问题,推出新版本的频率越来越低,每一款新版本也越来越具有代表性....等等谷歌做得一切,都是为消除这一问题而做的
& && & 老师你好:
在学校一直想做开发,可进入社会,作为一名网络管理人员已经3年了,能搭建Linux一些服务,C有些皮毛,玩过一段时间的51单片机(仅能做些数码管等类的小实验),如果我这种情况转开发有必要吗?如果转开发,是首选Android还是应用或是网站,以哪种语言为切入点,又如何找相关的开发工作。我想这一系列的问题,可能代表了很多人的心声吧。
& && &这得看你的基础,从你的描述看,掌握一些Linux、单片机、C的知识,但是从你的描述看,都只是皮毛。要想转型做开发,你所提出的两条路:
(1)android:如果做应用方面,需要先学习Java,然后学习android的知识;如果做底层开发,需要学习Linux、C等方面的知识。整个学习过程有一点漫长,需要付出较多的汗水,但是就业前景好。
(2)网站开发:这方面相对来说上手较容易,ASP.NET、PHP、Java Web都可以选择,并且前两者只需几个月的时间便可有成就。这方面的工作社会需求大,同样竞争也激烈。
& && & 在导入一个安卓项目的时候后,我修改了下包名。可当我再次运行时,整个项目异常自动终止了。我想问下老师:碰到这样的问题,该如何解决啊?
& && & 你好,在修改包名时,一定要修改项目内所有的相关包名。如果疏忽忘记修改哪一个,就会发生不能运行的情况。在修改的时候要特别注意AndroidMainfast.xml,里面的涉及的包名较多。另外,有些程序可能用固定的包名引用了.so等底层文件,这时候我们需要将对应的.so文件。开发工具也会输出错误提示,你可以根据提示来解决问题。
& && & 求教,android 4.0 root的原理?应用层有什么办法可以获取到root吗?jni层怎么获取root权限?jni层能接受到android的广播吗?
& && & 不好意思,我还没有研究android 4.0的源码。但是我想其root机制应该还是和从前一样。不要将root想的多么复杂,它就是一种授权机制。它原理就跟linux下的像sudo这样的命令。在系统的bin目录下放个su程序并属主是root并有suid权限。则通过su执行的命令都具有Android root权限。
应用层获取root的过程比较麻烦,其实在Java中使用调用command的方法提升到root权限。另外,可以用编写SO库的方式获取内核接口,用open方法打开root目录dev。
因为JNI是一种中间媒介,所以这种方式获取root就比较简单了,直接用编程的方式调用底层内核即可获取。
jni层可以接受到android的广播。你只需明白下面线路即可:
Hardware层--JNI--frameworks
广播信息的发送在frameworks层实现。
& && & 是这样的,2.1/2.2破解root的原理一般是通过最大进程数限制,2.3.3大多通过一个SD卡挂载漏洞获取,然而4.0已经不存在这些漏洞,我想知道是通过什么BUG来获取的。
so是和apk打包一起的,所以继承了apk的权限,那么能在jni层调用到底层内核吗?
感谢对广播的解答,回头我去看看源码里面广播的处理流程。
& && & jni调用底层内核的过程需要so的帮助,具体过程是jni-&so-&底层C.
很抱歉,android 4.0的源码我没阅读过,所以不敢下结论。破解root的根本原理就是替换掉系统中的su程序为目标,破解后的su将不检查实际用户权限,这样普通的用户也将可以运行su程序,也可以通过su程序将自己的权限提升。
至于具体的破解方法,需要阅读android 4.0的源码,所以不能明确的告诉你答案,只能告诉你原理。
& && &&&安卓自定义ListView怎么写?
& && &&&其实Android是很支持我们自定义控件,具体的自定义原理其实在Android的开源代码中已经公开了,我们只需参考Android已经存在控件的实现源码即可掌握。你可以下载这部分开源代码,了解各个Android控件的实现原理。其实自定义ListView的方法跟简单,你新建一个和ListView同一级别的新类,设置和ListView继承与相同的父类,然后重写父类的所有构造方法。这样就实现了一个跟父类一摸一样的控件,然后在此基础上加入我们需要的功能就可以实现一个功能更加强大的“ListView“控件。
& && & 做web开发的想转android,不知道从何入手,求指点。
& && & 不知道你当前具体从事的Web工作,假如是Java Web之类的工作,应该具备了Java的知识,你可以尝试向android应用转型,这样会比较快的上手,这也是当前大多数转型程序员的选择。假如你具备了C和Linux的一些知识,可以尝试向底层方面转型,从事于移植和驱动等方面的工作。
& && & 唉!看了大家的问题和老师的回答,感觉无论做什么开发都是要理论+实践,根本没有什么捷径,必须得动脑+动手,我现在才做java web开发三个月,感觉这天天加班的日子不是自己想要的生活,是我对自己的没信心了,还是根本就是不喜欢这行了我都搞不清了。开发是不是就是先从语言学起,然后再看源码,接下来思想、模式。。。啊
& && & 呵呵,程序员行业本来就是一门枯燥而反复操作的过程。你只是3个月而已,其实任何程序员都曾经有过想放弃的想法。如果一时发热,放弃了,则注定将原理你曾经无限向往的行业。但是如果你坚持那么一段时间,你也许会豁然开朗,突然喜欢上了这一行。其实编程的过程也是充满乐趣的,每一个代码调试成功的喜悦、解决问题的兴奋等等都是振奋人心的。
学习编程的过程是不断编码练习并逐渐完善的过程,主流过程就是:学习语言、不断编码练习、总结思想和模式、架构的过程。
& && & 学完一些基础后,比如控件的基本使用,基本了解xml属性,一些简单的实现之后怎么提高自己呢,或者说学习方向是怎么样的呢?
& && & 可以继续分领域学习,逐步学习网络、多媒体、2d/3d等知识,并阅读SDK框架的远吗,了解自定义控件的实现原理。并学习一些Java的算法,提高自己的编码水平。
& && &android的屏幕适配共有多少种方法呢,其中哪些方法最常用?谢谢。
& && &伴随着版本的不同,适配器的种类也不一样。在最初的版本中,只有最小分辨率的240*320,后来随着平板产品的推出,出现了480*800,甚至是超高密度的。在较新版本中,建议大家使用 WVGA800模式,即480*800。如果追求平板效果,建议使用中密度的.
& && &运行安卓系统的电子产品有两个最头疼的问题:
1、屏幕尺寸各异且横竖放置方式不同。
2、安卓系统的版本各异。
如果我们想从事安卓开发,那先从哪里入手,然后再完善哪些部分呢?
请老师指点!
屏幕尺寸已经不是问题,我们可以实现屏幕大小的自动适应。例如可以在res目录下创建不同的layout文件夹,比如layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。另外也可以通过drawable目录中的drawable- hdpi、drawable- mdpi、drawable-ldpi实现自动适用。
安卓开发的学习路线我已经在前面的问题回答过了,有两条路:
第一条:安卓应用开发:学习Java,各种控件,数据存储,网络通信,设计模式
第二条:底层开发:C/C++,Linux内核,虚拟机,架构,源码分析,移植,驱动系统
& && &android应用开发与c#的联系大吗?
& && &就目前来说,C#和安卓没有很大关系。安卓应用是用Java语言实现的,如果硬要说有关的话,那就是Java和C#都是面向对象的编程语言,有很多共性。但是我们可以把可以把.NET Framework移植到安卓系统,这样就可以在安卓系统中使用C#开发应用程序了。在未来也许会有越来越多的用C#开发的安卓项目,你可以参考一些开源项目来了解这方面的问题,例如Mono。
& & 老师好,我01年计算机专业毕业。有稳定工作。爱好编程,业余时间做asp.net方面的web应用开发多年。asp.net c#& &sql 等相关技术的应用和面向对象开发的实现原理以及前端开发技术css div js jquery很熟悉。喜欢研究用户界面ui的设计。 对uml 设计模式 等等理论也有所涉及,并在逐步学习和了解。
不断融合实践到我的设计中来。近几年,随着社会发展,我不断感觉,未来必然是移动应用的天下,更能丰富和改变人们的生活。所以很想学习Android平台移动应用的开发,并把它和web应用融合起来。我个人认为java 和c#原理上有共通之处。但我没有具体学习过java 所以我想知道学习android开发,对我这种情况而言,难度有多大。该如何开始,大致什么步骤。请各位老师指点。谢谢!
& && &通过你的简单描述,可以知道你的强项是Web开发,并且精通前端技术。其实你不必急于想从事于安卓开发的工作,想着去学习Java。其实你可以重点学习安卓的“前端-本地”技术,努力的掌握在安卓开发Web技术。这是当前的一大热点,需要HTML 5和css div js jquer等技术的支持,正好很适合你。
至于Java,你可以稍稍放后,编程并不是学得越多越好,而是精通最重要。
& && & 老师您好,问一个android方面的问题,就是在android里面有什么方式可以让系统马上释放被finish()掉的资源吗?比如activity。
还有就是在activity之间使用Intent进行传递值的时候,比如说从activityA到activityB,由于activityA需要接受activityB的返回值,可以使用startActivityForResult来跳转到activityB,然后等activityB执行完以后,在activityA中执行回调方法接受activityB返回的值,但是现在就有能有一种情况,假如说在activityB执行的时候,由于系统资源紧张,activityA被回收掉了,那当B执行完的时候,还会不会返回到activityA,如果返回到了activityA,那这个activityA是栈里面的还是重新生成的一个,如果是重新生成的,那activityA上面的一些参数怎么得到的或者说就是丢了的.....谢谢老师解答......
& && &第一个问题是释放资源的问题,是当前android程序员多次面对的问题。我们知道每次使用过的对象,如果现在不用了,但是别的对象还继续持有它,那么这个对象就是垃圾,而且回收不掉。一般一个对象持有另一个对象,如果以后程序不用了,我们应该将其设置为null,这样垃圾收购器就能回收掉。你的第二个问题有很多学生问过我,很具有代表性。安卓是一个神奇的系统,他会出于回收内存的考虑关闭一个Activity。但是对于我们用户来说,会期望当他再次回到那个Activity的时候,它仍保持着上次离开时的样子。为了获取Activity被杀死前的状态,我们应该为Activity实现方法onSaveInstanceState()。这样Android会在Activity有可能被销毁之前(即onPause()调用之前)调用此方法,它会将一个以“名称-值对”的方式记录了Activity动态状态的Bundle对象传递给该方法。这样当Activity再次启动时,这个Bundle会传递给onRestoreInstanceState(),所以它们两个都可以恢复捕获的状态。& && && && && && && && && && && & 《完》
风波辛苦了
本帖最后由 风泊海上 于
17:21 编辑
另外,大家有什么android开发或者职业生涯上的困惑,可以到此贴咨询隋雨辰老师:。:victory: :victory:
此人很懒,暂时没有什么介绍。
4、我一直用的三星的东西。我想说:三星的东西,配件质量是不错,但是太抠门。一手机扔水里捞出来,没事。跟女朋友吵架生气直接摔地上,也没事。但是……三星手机的内存,向来是同价位其他产品的大。
比如我那一年1500买的三星手机,内存居然只有8M,而女朋友1300买的nokia手机,内存有128M。前年1500买的三星s5660,内存只有180M,我靠。服了。根本体现不了安卓的强大。所以,安卓被人说容易死机、耗电,我觉得跟配件的性能也有很大的关系。
引用:原帖由 kuhanzhu 于
21:40 发表
4、我一直用的三星的东西。我想说:三星的东西,配件质量是不错,但是太抠门。一手机扔水里捞出来,没事。跟女朋友吵架生气直接摔地上,也没事。但是……三星手机的内存,向来是同价位其他产品的大。
比如我那一年1500买的三星手 ... 你想说明什么呢?诺基亚已经放弃塞班了,安卓这么多厂商追逐,一定有它的可取之处。
高级工程师
这帖子质量很高!
引用:原帖由 苍岚 于
09:19 发表
这帖子质量很高! 呵呵,多谢支持。
助理工程师
这篇帖子无敌了,太厉害了!!
引用:原帖由 frogoscar 于
05:11 发表
这篇帖子无敌了,太厉害了!! 呵呵,过奖了。
此人很懒,暂时没有什么介绍。
助理工程师
来看看&&辛苦了 感谢楼主分享
真是整理里太多人关注的问题.谢谢啦
助理工程师
谢谢分享,收藏了,支持下
谢谢分享,解开了我很多的疑惑。
支持 支持 支持:lol
学习了,非常感谢
:)1 :handshake
助理工程师
很全,很有导向性,很好很好
助理工程师
看我了,很给力的贴!!!&&谢风泊,我想知道这些你是从哪找到的嘛,这个真心不错呀!
╰☆╮听悲伤的歌,看幸福的戏…年少轻狂…幸福时光......
谢谢分享,先收藏了。辛苦版主整理了。
谢谢楼主分享,好贴}

我要回帖

更多关于 ps3模拟器到底有没有 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信