Android和移动开发是令人兴奋的开发领域。由于这是一门新学科,因此,对于Android开发人员而言,在技能方面构建强大的商业应用程序会有什么期望?我以及我认为该技术的许多其他“新手”都想知道的问题是技术领域以及向必需的高级主题发展的过程,这些问题超出了Google提供的基本知识。有很多信息非常有用,但是没有按纪律或秩序分类。
更新:这样看。如果您是高级开发人员,并且需要让同一个同事在特定项目上使用Android加快运行速度(此问题您可以自行决定),您将怎么办?
Android和移动开发是令人兴奋的开发领域。由于这是一门新学科,因此,对于Android开发人员而言,在技能方面构建强大的商业应用程序会有什么期望?我以及我认为该技术的许多其他“新手”都想知道的问题是技术领域以及向必需的高级主题发展的过程,这些问题超出了Google提供的基本知识。有很多信息非常有用,但是没有按纪律或秩序分类。
更新:这样看。如果您是高级开发人员,并且需要让同一个同事在特定项目上使用Android加快运行速度(此问题您可以自行决定),您将怎么办?
Answers:
这个问题有几个方面:
从技术角度来看,回答“如何?”
有几种技术要掌握,再加上一些“不错”。
第一是Java。 Android SDK基于所有应用程序均使用Java编写的假设。尽管可以说有一些新兴的第三方解决方案可以在.net中开发(请参阅monodroid),但毕竟底层操作系统是Linux。
第二个是日食。尽管在Intellij或Netbeans 上有很多第三方SDK,比ADT更好,但Google的工作目前仅集中在eclipse上。
编辑:自2016年1月起,Google正式支持Android Studio作为其官方IDE。
在android体系结构中,有一些构建基块,对于这些构建基块的一点点曝光将总是有帮助的:
SQLite的
视频和音频流,编解码器的一般概念。对于OpenCore(android.media)。
OpenGL绘图。
基于REST的Web服务,XML或JSON。
与用于本机代码开发的ARM体系结构有关的概念。
另外,在我的水晶碗中阅读时,Android开发人员还应该了解他们的Linux,并精通本国语言,这是Google挖沟Java并用go或其他可能在某处酝酿的其他东西代替Java的那一天(请参阅“ Native Client ”倡议)在浏览器域中)。Google已经使用标准JNI机制发布了针对c和C ++ 的NDK(本机开发套件),以补充Dalvik。
从商业角度来看,回答“什么?”。
当然,Android开发人员应该是Android用户。但是,不仅是标准手机用户,还有平板电脑用户。他们实际上应该采取乔布斯的态度-总是问自己:“我该如何用手机,平板电脑或尚未上市的消费电子设备做得更好?”。
有很多没有市场领导者的android应用程序,不一定与移动性相关(或通常无聊的“哪里是最近的披萨店?”应用程序)。以下是我个人无法避免的一些问题(直到我有更多时间;-)。
教孩子画画和阅读。
抽认卡学习外语。
英国FreeSat电视指南+遥控器。
您在这里(美食食谱...等)。
老实说,我认为您只需要Google并进行一些研究。
这是我发现的一些有趣的链接,它们可能是一个很好的起点。
除了您讨论的Google文档以外,还有许多其他内容。
希望这会让您开始,找到所需的详细信息!
祝好运
我将看一下Google的Android开发指南,其中包括使您的应用与Android应用的外观保持一致的最佳做法和指南。
我会看两件事。一是苹果公司开发应用程序的设计准则。我知道问题是关于Android应用程序的,但总体原则适用并让您以“应用程序”设计方式进行思考,这实际上与桌面应用程序设计观点大不相同。
我还要看一下Appcelerator Titanium,它是一个工具,可让您将javascript / web dev类型的环境中的代码移植到iPhone,iPad和Android上的本机代码中。我发现它是快速制作小型应用程序的有用方法。您可以下载“厨房水槽”示例,顾名思义,该示例演示了所有可用的本机功能。我将definitley建议将此作为开始的地方。
在具备所需编程语言的基本技能以及对SDK工具和库的了解之后,我经常发现新的移动开发人员缺少3件事(这不是火箭科学……据报道14岁的人们已经开发了应用)。
针对受限环境进行开发。CPU,内存,显示像素和可用电池电量在移动设备上的局限性更大。一些程序员从未暴露过快速而精巧的编程。当您拥有5kW的电源和可用散热的机架等时,您只是想不出解决问题的方法。重新学习一些旧手用来在48kB的1MHz CPU上编写出色游戏的技巧。记忆力之类的东西 也许在Arduino或其他微型控制器上练习编码。
UI熟悉度。用户通常以与台式机系统不同的方式与其移动设备进行交互。随身携带一个。也许有几种型号。使用它们。使用大量的应用程序和评论(不是功能,而是评论),在光线昏暗,弹跳中的移动车辆等情况下,它们的易用性。读取并重新读取所有各种移动HIG。了解用户喜欢和不喜欢您要为其编码的特定UI平台。
怪异的熟悉度。一些工具和库是新的,并且具有“怪癖”。阅读开发者委员会,以获取问题和解决方案,以免您像其他成千上万的开发者一样犯错误。我在stackoverflow上看到太多有关如何执行硬件,API或应用程序分发模型甚至不允许的操作的问题。整个公司都在浪费时间,试图为iPhone App商店实现不可能。
我按照这种方式训练了我的低年级学生。
第1步:我要求他们在Android市场上看到一些免费的应用程序以及API演示,因为他们也可以抓住一些想法。(http://developer.android.com/resources/samples/ApiDemos/index.html)以及http://www.androidpeople.com/
实例:适用于Android的IBNLive应用程序因为他们看到这个应用程序后,可以大致了解到这些都是可能的,为什么我们不能选择/使用,设计,控件或功能之类的东西。
第2步:一旦他们有了希望,就可以通过查看现有应用程序来搜索Google以及充当Android圣经的Android开发人员指南,从而广为人知。
例如:我的下辈们有了一个想法,关于可扩展列表视图和推送通知,然后进行搜索,我们如何做这些事情,然后他们寻找推送通知,我们可以使用Cloud 2 Device Messaging,然后他们进行了研究并做到了以一种出色的方式。