安卓第一夜 第一个应用
承接“Java快速教程”,我将开始写安卓相关的文章。
安卓(Android)开发主要使用Java语言。Java语言基础,是安卓开发的第一道门槛。再者,一个好的安卓应用往往配合有远程服务器。这两方面,可以参考Java快速教程中对Java语言和Play框架的讲解。安卓开发还需要其它技术的合作,包括操作系统、互联网、图形化界面、数据库等。可以说,移动开发是一个现实的战场,平常操练的各项本领都会派上用场。
从本质上讲,移动平台和传统的PC平台并无本质区别。两者都是在硬件平台上搭建一个操作系统,再在操作系统上运行应用程序。移动平台许多概念也源于PC平台,比如内核(kernel)、进程(process)、事件响应(event)。但移动平台有自己的特点,一个是性能弱于PC,二是电量有限。移动平台必须要在这两个方面有针对性的优化。我们将在后面看到,安卓系统的许多新的设计和概念,都是在解决这两个问题。然而,即使是这些移动平台的专有新概念,也可以在传统技术中找到它们的影子。
移动开发相当有趣。我看到自己的代码能在一个小巧的设备上运行时,心里会有很大的成就感。而安卓这样的开放系统,还接管着诸如Google Glass有趣的硬件平台。当然,移动端发展时间比较短,所以相关技术经常会更新换代,所以要努力学习才能跟得上潮流。然而,考虑到移动端已经取得的巨大成功,以及移动端尚待开发的巨大潜力,移动端开发的技能都相当值得“上手”。安卓的相关历史,可见Android的历史与花边。
安卓开发的最好资料是Google的文档。我在这个系列文章将以更循序渐进的方式推进,并不断引入开发所需的基础知识。这些基础知识大多来自我之前的文章。
开发环境
在我们开始开发之前,先在命令行中尝试使用命令:
javac
如果终端提示找不到命令,那么需要安装JDK(Java Development Kit)。JDK可以编译Java代码,所以是安卓开发所必须的。如果JDK缺失,你可以到Oracle的官网下载并安装。在Linux系统下,也可以安装应用商店中的openJDK。
下一步是安装ADT,ADT中包含了Eclipse编辑器和Android SDK。Eclipse能很好的支持Java开发。我们会在Eclipse下编写代码、编译、运行和debug。下载Android Developer Tools(ADT),并安装。ADT有Mac, Linux和Windows版本。
- 在Linux下,解压缩,在eclipse文件夹下,运行可执行文件eclipse,即可启动。你可以将eclipse所在文件夹放入PATH搜索路径中,方便以后使用。
- 在Mac下,用Finder找到eclipse文件夹中的Eclipse,点击即可运行。你可以将该Eclipse拖到Application中,方便以后使用。
- 在Windows下,下载.exe安装程序并安装。
*** 如果你已经有了Eclipse,并且熟悉Eclipse插件的配置,可以只下载Android SDK,并在Eclipse中导入。
生成第一个应用
启动ADT,设置Work Space路径,即Eclipse的工作路径。
进入Eclipse后,点击New Android Application,来创建新的App。你也可以沿:
File -> New -> Android Application Project
来创建新的应用。
填写App名字,即HelloWorld。按照Java包的命名规则,将Package Name改为me.vamei.helloworld (vamei.me是我的域名,不过一直没打理)。然后一路Next,直到Finish。
创建新应用后,我们就到了Eclipse的主界面:
左侧的Package Explorer中可以浏览HelloWorld应用下的所有文件。点击后,文件内容将在右侧的编辑器主界面中打开。
运行第一个应用
我们可以在ADT中,控制应用的安装和运行
Run -> Run As -> Android Application
由于我们还没有注册其它的安卓设备,此时安卓将自动运行模拟器(emulator)。模拟器从你的电脑中分出计算和存储资源,生成一个虚拟的安卓设备。HelloWorld应用将安装到模拟器中。可以在右下角的Console监视整个过程。
友情提醒:安卓自带的虚拟器确实很方便,但真的是太慢了。时间都够现磨一杯咖啡了。
其它设备
由于安卓自带虚拟器太慢,因此可以用USB连接安卓设备。大部分的安卓设备可以自动识别。当你点击Run时,将弹出选择设备的窗口。
我最近听朋友说Genymotion虚拟器速度不错。它是基于VirtualBox的。安装VirtualBox和Genymotion,然后在Genymotion中添加设备。该虚拟器也将出现在选择设备的窗口。速度大大超过了安卓自带的虚拟器。
我个人试用了一下,速度确实不错。
总结
创建新应用
运行应用
- 从零开始写项目第一篇【搭建环境】
- 04-移动端开发教程-在线字体
- 从零开始写项目第二篇【登陆注册、聊天、收藏夹模块】
- 关于Java你不知道的10件事
- 03-移动端开发教程-CSS3新特性(下)
- 大数据面试题整理
- 02-移动端开发教程-CSS3新特性(中)
- 强悍!Java 9 中的9个新特性
- 神经网络反向传播梯度计算数学原理
- Spring Boot 1.5.10 发布:修复重要安全漏洞!!!
- 从零开始写项目第三篇【在线聊天和个人收藏夹】
- TiDB 源码阅读系列文章(六)Select 语句概览
- 从零开始写项目第四篇【搭建Linux环境】
- salesforce零基础学习(八十六)Ajax Toolkit (VF页面中使用及javascript action使用)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 一篇文章构建你的 Node.js 知识体系
- MySQL:The CHAR and VARCHAR Types
- 更新一个10年有效期的 Kubernetes 证书
- 哇,ElasticSearch多字段权重排序居然可以这么玩
- Python 自动化,Appium 凭什么使用 UiAutomator2?
- 我用几行 Python 自动化脚本完美解决掉了小姐姐的微信焦虑感
- 【设计模式】692- TypeScript 设计模式之发布-订阅模式
- 强网杯-upload
- 基于暗通道去雾算法
- 全套 | 人脸检测 & 人脸关键点检测 & 人脸卡通化
- 使用Jenkins Dashboard插件可视化部署
- 全面综述:图像特征提取与匹配技术
- opencv+python制作硬核七夕礼物
- opencv+python制作硬核七夕礼物
- 七夕节也要学起来,哈希哈希哈希!