汹涌澎湃汹涌澎湃汹涌澎湃汹涌澎湃



Similar documents
I

《C语言基础入门》课程教学大纲

<433A5C446F63756D656E E E67735C41646D696E F725CD7C0C3E65CC2DBCEC4CFB5CDB3CAB9D3C3D6B8C4CFA3A8BCF2BBAFA3A95CCAB9D3C3D6B8C4CF31302D31392E646F63>

修改版-操作手册.doc

Microsoft Word - 第7章 图表反转形态.doc

第2章 数据类型、常量与变量

何 秋 琳 张 立 春 视 觉 学 习 研 究 进 展 视 觉 注 意 视 觉 感 知

目 录 关 于 图 标... 3 登 陆 主 界 面... 3 工 单 管 理... 5 工 单 列 表... 5 搜 索 工 单... 5 工 单 详 情... 6 创 建 工 单... 9 设 备 管 理 巡 检 计 划 查 询 详 情 销 售 管

说 明 为 了 反 映 教 运 行 的 基 本 状 态, 为 校 和 院 制 定 相 关 政 策 和 进 行 教 建 设 与 改 革 提 供 据 依 据, 校 从 程 资 源 ( 开 类 别 开 量 规 模 ) 教 师 结 构 程 考 核 等 维 度, 对 2015 年 春 季 期 教 运 行 基

龚 亚 夫 在 重 新 思 考 基 础 教 育 英 语 教 学 的 理 念 一 文 中 援 引 的 观 点 认 为 当 跳 出 本 族 语 主 义 的 思 维 定 式 后 需 要 重 新 思 考 许 多 相 连 带 的 问 题 比 如 许 多 发 音 的 细 微 区 别 并 不 影 响 理 解 和

全国建筑市场注册执业人员不良行为记录认定标准(试行).doc



目 录 一 系 统 访 问... 1 二 门 户 首 页 申 报 用 户 审 核 用 户... 2 三 系 统 登 录 用 户 名 密 码 登 录 新 用 户 注 册 用 户 登 录 已 注 册 用

HSK( 一 级 ) 考 查 考 生 的 日 常 汉 语 应 用 能 力, 它 对 应 于 国 际 汉 语 能 力 标 准 一 级 欧 洲 语 言 共 同 参 考 框 架 (CEF) A1 级 通 过 HSK( 一 级 ) 的 考 生 可 以 理 解 并 使 用 一 些 非 常 简 单 的 汉 语

2 熟 悉 Visual Basic 的 集 成 开 发 环 境 3 了 解 可 视 化 面 向 对 象 编 程 事 件 驱 动 交 互 式 开 发 等 基 本 概 念 4 了 解 Visual Basic 的 特 点 环 境 要 求 与 安 装 方 法 1 Visual Basic 开 发 应 用

云信Linux SSH认证代理用户手册

0 年 上 半 年 评 价 与 考 核 细 则 序 号 部 门 要 素 值 考 核 内 容 考 核 方 式 考 核 标 准 考 核 ( 扣 原 因 ) 考 评 得 3 安 全 生 产 目 30 无 同 等 责 任 以 上 道 路 交 通 亡 人 事 故 无 轻 伤 责 任 事 故 无 重 大 质 量

登录、注册功能的测试用例设计.doc

18 上 报 该 学 期 新 生 数 据 至 阳 光 平 台 第 一 学 期 第 四 周 至 第 六 周 19 督 促 学 习 中 心 提 交 新 增 专 业 申 请 第 一 学 期 第 四 周 至 第 八 周 20 编 制 全 国 网 络 统 考 十 二 月 批 次 考 前 模 拟 题 第 一 学


4 进 入 交 互 区 设 置 的 组 件 管 理, 在 组 件 管 理 中, 教 师 可 以 选 择 课 程 空 间 中 的 所 有 组 件, 并 通 过 点 击 启 用 或 不 启 用 选 定 组 件 在 课 程 空 间 中 的 显 示 5 进 入 工 作 室 管 理 的 工 作 室 首 页,

Microsoft Word - 文件汇编.doc

第 一 部 分 MagiCAD for Revit 安 装 流 程

世华财讯模拟操作手册

教师上报成绩流程图

国债回购交易业务指引

目 录 页 1. 欢 迎 使 用 网 上 预 约 面 谈 访 问 系 统 新 用 户 新 用 户 登 入 帐 户 程 序 启 动 网 上 预 约 面 谈 访 问 帐 户 核 对 帐 户 的 地 址 资 料

类 似 地, 又 可 定 义 变 下 限 的 定 积 分 : ( ). 与 ψ 统 称 为 变 限 积 分. f ( ) d f ( t) dt,, 注 在 变 限 积 分 (1) 与 () 中, 不 可 再 把 积 分 变 量 写 成 的 形 式 ( 例 如 ) 以 免 与 积 分 上 下 限 的

全国教师资格认定管理信息系统

中 国 软 科 学 年 第 期!!!

<4D F736F F D C3E6CFF2B6D4CFF3A3A8B5DAC8FDD5C220C0E0CCD8D0D4A3A92E646F63>

目 录 一 激 活 账 号... 2 二 忘 记 密 码 后 如 何 找 回 密 码?... 3 三 如 何 管 理 学 校 信 息 及 球 队 学 生 教 师 等 信 息... 6 四 如 何 发 布 本 校 校 园 文 化? 五 如 何 向 教 师 发 送 通 知? 六

,,,,, :,, (.,, );, (, : ), (.., ;. &., ;.. &.., ;, ;, ),,,,,,, ( ) ( ),,,,.,,,,,, : ;, ;,.,,,,, (., : - ),,,, ( ),,,, (, : ),, :,

自 服 务 按 钮 无 法 访 问 新 系 统 的 自 服 务 页 面 因 此 建 议 用 户 从 信 网 中 心 ( 主 页, 右 下 角 位 置 的 常 用 下 载, 或 校 园 网 用 户 自 服 务 ( 首 页

Microsoft Word - 第3章.doc

目 录 第 一 章 博 星 卓 越 电 子 商 务 营 销 策 划 实 践 平 台 硬 件 使 用 介 绍... 3 第 二 章 博 星 卓 越 电 子 商 务 营 销 策 划 实 践 平 台 管 理 员 端 功 能 使 用 介 绍 系 统 管 理 员 登 陆 班

<443A5C6D B5C30312EB9A4D7F7CEC4B5B55C30322EBACFCDACCEC4B5B55C C30342EC8CBC9E7CCFC5C31332ECFEEC4BFC5E0D1B55C E30385C322EB2D9D7F7CAD6B2E12E646F63>

深圳市新亚电子制程股份有限公司

 编号:

操作手册

乐视云视频发行平台 操作手册 V1.1

评 委 : 李 炎 斌 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

微软用户

3 复 试 如 何 准 备 4 复 试 成 绩 计 算 5 复 试 比 例 6 复 试 类 型 7 怎 么 样 面 对 各 种 复 试 04 05

一 公 共 卫 生 硕 士 专 业 学 位 论 文 的 概 述 学 位 论 文 是 对 研 究 生 进 行 科 学 研 究 或 承 担 专 门 技 术 工 作 的 全 面 训 练, 是 培 养 研 究 生 创 新 能 力, 综 合 运 用 所 学 知 识 发 现 问 题, 分 析 问 题 和 解 决

评 委 : 徐 岩 宇 - 个 人 技 术 标 资 信 标 初 步 审 查 明 细 表 序 号 投 标 单 位 投 标 函 未 按 招 标 文 件 规 定 填 写 漏 填 或 内 容 填 写 错 误 的 ; 不 同 投 标 人 的 投 标 文 件 由 同 一 台 电 脑 或 同 一 家 投 标 单

定 位 和 描 述 : 程 序 设 计 / 办 公 软 件 高 级 应 用 级 考 核 内 容 包 括 计 算 机 语 言 与 基 础 程 序 设 计 能 力, 要 求 参 试 者 掌 握 一 门 计 算 机 语 言, 可 选 类 别 有 高 级 语 言 程 序 设 计 类 数 据 库 编 程 类

( ) 信 号 与 系 统 Ⅰ 学 科 基 础 必 修 课 教 周 2016 年 06 月 13 日 (08:00-09:35) ( )

一 从 分 封 制 到 郡 县 制 一 从 打 虎 亭 汉 墓 说 起

徐天宏:《基因天堂》.doc

¹ º ¹ º 农 业 流 动 人 口 是 指 户 口 性 质 为 农 业 户 口 在 流 入 地 城 市 工 作 生 活 居 住 一 个 月 及 以 上 的 流 动 人 口 非 农 流 动 人 口 是 指 户 口 性 质 为 非 农 户 口 在 流 入 地 城 市 工 作 生 活 居 住 一 个

Template BR_Rec_2005.dot

采 取 行 动 的 机 会 90% 开 拓 成 功 的 道 路 2

金 不 少 于 800 万 元, 净 资 产 不 少 于 960 万 元 ; (3) 近 五 年 独 立 承 担 过 单 项 合 同 额 不 少 于 1000 万 元 的 智 能 化 工 程 ( 设 计 或 施 工 或 设 计 施 工 一 体 ) 不 少 于 2 项 ; (4) 近 三 年 每 年

øÕªß∂À≤Ÿ◊˜ ÷≤·

中国石化油品销售企业CRM调研报告

i 1) 系 统 运 作 前 设 定 *1. [2.1 网 页 主 机 名 称 设 定 ] -- 设 定 校 务 系 统 的 主 机 IP 地 址, 以 供 其 他 个 人 电 脑 连 接 及 使 用 该 系 统 *2. [2.3.1 输 入 / 修 改 学 校 资 料 ] -- 输 入 系 统 使

<4D F736F F D D323630D6D0B9FAD3A6B6D4C6F8BAF2B1E4BBAFB5C4D5FEB2DFD3EBD0D0B6AF C4EAB6C8B1A8B8E6>

生产支援功能 使用说明书(IP-110 篇)


( 二 ) 现 行 统 一 高 考 制 度 不 利 于 培 养 人 的 创 新 精 神,,,,,,,,,,,,, [ ],,,,,,,,,,, :, ;,,,,,,? ( 三 ) 现 行 统 一 高 考 制 度 不 利 于 全 体 学 生 都 获 得 全 面 发 展,, [ ],,,,,,,,,,,

工 程 造 价 咨 询 企 业 管 理 系 统 操 作 手 册 目 录 1 造 价 企 业 登 录 企 业 基 本 信 息 查 看 企 业 人 员 信 息 查 看 企 业 基 本 信 息 操 作 企 业 简 介 企 业 章

课程类 别

2006年顺德区高中阶段学校招生录取分数线

三门峡市质量技术监督局清单公示

第 9 章 如 果 打 印 机 通 过 FireWire 连 接, 则 HP 建 议 使 用 FireWire 模 块 添 加 打 印 机, 以 充 分 利 用 FireWire 打 印 的 各 项 功 能, 并 且 仅 使 用 IP over Firewire 访 问 打 印 机 的 内 嵌 式

一 六 年 级 下 册 教 科 书 总 体 说 明 ( 一 ) 教 学 内 容 本 册 教 科 书 一 共 安 排 了 5 个 教 学 单 元, 其 中 前 4 个 单 元 为 新 知 识, 第 五 单 元 是 对 整 个 小 学 阶 段 所 学 数 学 知 识 系 统 的 整 理 和 复 习

ETF、分级基金规模、份额变化统计

·岗位设置管理流程

全国艺术科学规划项目

抗 战 时 期 国 民 政 府 的 银 行 监 理 体 制 探 析 % # % % % ) % % # # + #, ) +, % % % % % % % %

随着执业中医师资格考试制度的不断完善,本着为我校中医学专业认证服务的目的,本文通过对我校中医类毕业生参加2012年和2013年的中医执业医师考试成绩及通过率、掌握率进行分析,并与全国的平均水平进行差异比较分析,以此了解我校执业中医师考试的现状,进而反映我校中医类课程总体教学水平,发现考核知识模块教学中存在的不足,反馈给相关学院和教学管理部门,以此提高教学和管理水平。

附 件 : 上 海 市 建 筑 施 工 企 业 施 工 现 场 项 目 管 理 机 构 关 键 岗 位 人 员 配 备 指 南 二 一 四 年 九 月 十 一 日 2

引言

马 克 思 主 义 公 正 观 的 基 本 向 度 及 方 法 论 原 则!! # #

导 数 和 微 分 的 概 念 导 数 的 几 何 意 义 和 物 理 意 义 函 数 的 可 导 性 与 连 续 性 之 间 的 关 系 平 面 曲 线 的 切 线 和 法 线 导 数 和 微 分 的 四 则 运 算 基 本 初 等 函 数 的 导 数 复 合 函 数 反 函 数 隐 函 数 以

上海证券交易所会议纪要

系统设计文档_样稿管理模块 V1.1_.doc

目 录 第 一 章 : 登 陆 平 台 概 述 登 陆 平 台 的 步 骤 第 二 章 : 免 费 实 习 账 号 概 述 创 建 实 习 账 号 第 三 章 : 商 品 价 格 概 述 查 看 价 格 选 择 图 表 快 速 开 立 订 单 详 细 订 单 输 入 第 四 章 : 开 仓 部 位

年 8 月 11 日, 公 司 召 开 2015 年 第 五 次 临 时 股 东 大 会, 审 议 通 过 了 关 于 公 司 <2015 年 股 票 期 权 激 励 计 划 ( 草 案 )> 及 其 摘 要 的 议 案 关 于 提 请 股 东 大 会 授 权 董 事 会 办 理 公


<4D F736F F D20B9D8D3DAB0BABBAAA3A8C9CFBAA3A3A9D7D4B6AFBBAFB9A4B3CCB9C9B7DDD3D0CFDEB9ABCBBE C4EAC4EAB6C8B9C9B6ABB4F3BBE1B7A8C2C9D2E2BCFBCAE92E646F6378>

火车浏览器脚本制作教程

第二讲 数列

如 何 开 始 使 用 Excel 2010 如 果 您 长 期 以 来 一 直 在 使 用 Microsoft Excel 2003, 则 对 于 在 Excel 2010 中 的 哪 些 地 方 可 找 到 Excel 2003 命 令 和 工 具 栏 按 钮, 肯 定 心 存 疑 问 我 们

2. 本 次 修 改 后, 投 资 者 申 购 新 股 的 持 有 市 值 要 求 市 值 计 算 规 则 及 证 券 账 户 使 用 的 相 关 规 定 是 否 发 生 了 变 化? 答 : 未 发 生 变 化 投 资 者 申 购 新 股 的 持 有 市 值 是 指, 以 投 资 者 为 单 位

超 级 玛 丽 JAVA 小 游 戏 测 试 报 告 1. 导 言 1.1 编 写 目 的 该 文 档 的 目 的 是 描 述 超 级 玛 丽 JAVA 小 游 戏 的 系 统 测 试 的 总 结 报 告, 其 主 要 内 容 包 括 : 系 统 环 境 的 介 绍 功 能 的 实 现 的 测 试

文档编号:

年 第 期 % %! & % % % % % % &

正 规 培 训 达 规 定 标 准 学 时 数, 并 取 得 结 业 证 书 二 级 可 编 程 师 ( 具 备 以 下 条 件 之 一 者 ) (1) 连 续 从 事 本 职 业 工 作 13 年 以 上 (2) 取 得 本 职 业 三 级 职 业 资 格 证 书 后, 连 续 从 事 本 职 业

光明乳业股份有限公司

电信系教学大纲的基本规范

!!!!!!!!!!

(Microsoft Word - NCRE\314\345\317\265\265\367\325\37313\324\27221\272\3051.doc)

名 称 生 命 科 学 学 院 环 境 科 学 1 生 物 学 仅 接 收 院 内 调 剂, 初 试 分 数 满 足 我 院 生 物 学 复 试 最 低 分 数 线 生 命 科 学 学 院 生 态 学 5 生 态 学 或 生 物 学 生 命 科 学 学 院

2014年中央财经大学研究生招生录取工作简报

<433A5C C6B73625C B746F705CB9FABCCAD6D0D2BDD2A9D7A8D2B5B8DFBCB6BCBCCAF5D6B0B3C6C6C0C9F3C9EAC7EBD6B8C4CFA3A CDA8D3C3B0E6A3A92E646F63>

物 流 从 业 人 员 职 业 能 力 等 级 证 书 分 为 四 个 级 别, 分 别 为 初 级 助 理 级 中 级 和 高 级 ; 采 购 从 业 人 员 职 业 能 力 等 级 证 书 分 为 三 个 级 别, 分 别 为 中 级 高 级 和 注 册 级 请 各 有 关 单 位 按 照 通

<4D F736F F D20B8BDBCFE34A3BAD2A9C6B7B2B9B3E4C9EAC7EBD7A2B2E1CAC2CFEEBCB0C9EAB1A8D7CAC1CFD2AAC7F32E646F63>

Transcription:

第 2 章 Mono for Android 简 介 本 章 主 要 内 容 : Mono 和 Mono for Android 简 介 配 置 开 发 环 境 针 对 Visual Studio 的 Mono for Android 工 具 调 试 和 部 署 什 么 是 Mono for Android? 本 章 将 介 绍 Mono for Android 开 发 的 基 本 知 识 首 先 简 要 介 绍 Mono, 然 后 讨 论 Mono for Android, 同 时 配 置 开 发 堆 栈 开 发 并 部 署 Hello Mono for Android 应 用 程 序 首 先 将 其 部 署 到 一 个 模 拟 器 中, 然 后 再 将 其 部 署 到 基 于 Android 的 手 机 上 2.1 开 始 开 发 前 的 准 备 工 作 在 开 始 开 发 之 前, 你 需 要 学 习 一 些 有 助 于 理 解 开 发 环 境 及 其 所 包 含 工 具 的 知 识 本 节 首 先 介 绍 什 么 是 Mono 以 及 它 是 如 何 被 实 现 的 然 后 讨 论 什 么 是 Mono for Android, 以 及 它 所 带 来 的 好 处 和 具 体 实 现 过 程 最 后 在 正 式 进 行 开 发 之 前 对 开 发 堆 栈 进 行 讨 论 2.1.1 Mono 的 含 义 Mono 是 一 个 由 Xamarin 所 发 起 的 开 源 项 目, 主 要 用 于 创 建.NET CLI(common language infrastructure, 公 共 语 言 基 础 结 构 ) C# 编 译 器 以 及 开 放 的 开 发 堆 栈 的 Ecma 标 准 的 实 现 Ximian 于 2001 年 开 始 Mono 项 目, 并 在 2004 年 发 布 了 版 本 1.0 1. Mono 的 实 现 目 标 目 前,Mono 的 实 现 主 要 有 三 个 目 标 : 开 源 的 CLI

C# 开 发 Android 应 用 实 战 使 用 Mono for Android 和.NET/C# C# 编 译 器 公 开 的 开 发 堆 栈 CLI 为 那 些 已 经 被 编 译 为 CIL(Common Intermediate Language, 公 共 中 间 语 言 ) 的 语 言 提 供 运 行 库 环 境 C# 编 译 器 负 责 将 C# 代 码 编 译 为 CIL, 以 便 在 运 行 时 上 执 行 而 公 开 的 开 发 堆 栈 将 使 开 发 变 得 更 加 便 利, 同 时 包 括 MonoDevelop 中 的 IDE 以 及 几 个 核 心 库 之 外 的 用 于 提 供 公 开 的 跨 平 台 开 发 的 库 这 些 库 包 括 针 对 图 形 用 户 界 面 开 发 的 GTK# 针 对 UNIX/Linux 兼 容 性 的 POSIX 库 Gecko 库 数 据 库 连 接 库 以 及 通 过 RELAX NG 实 现 的 对 XML 架 构 语 言 的 支 持 2. Mono 标 准 Mono 遵 循 Ecma 标 准 Ecma 国 际 (Ecma International) 于 1961 年 成 立, 其 主 要 的 任 务 是 为 信 息 和 通 信 技 术 的 标 准 提 供 支 持 2005 年,Ecma 批 准 将 C# 和 CLI 的 3.0 版 本 作 为 Ecma 334 和 335 的 补 充 材 料 目 前,Ecma 335 CLI 的 工 作 草 案 正 在 制 定 中 目 前, 对 于 每 个 针 对.NET 版 本 2.6 中 的 C# 版 本 1 2 3 的 Ecma 标 准 来 说,Mono C# 编 译 器 都 是 功 能 完 整 的 同 时.NET 2.6 版 本 还 包 括 C# 4 的 预 览, 在 版 本 2.8 中 包 含 了 C#4 的 完 整 功 能 2.1.2 Mono for Android 的 含 义 Mono for Android 是 一 个 运 行 时 和 开 发 堆 栈 使.NET 开 发 人 员 可 以 充 分 利 用 他 们 现 有 的 Visual Studio 和 C# 知 识 为 基 于 Android 的 设 备 开 发 应 用 程 序 运 行 时 :Mono for Android 运 行 时 是 一 个 在 Android 堆 栈 的 Linux 内 核 上 运 行 的 应 用 程 序 它 负 责 解 释 Mono 字 节 代 码, 并 与 Dlavik 运 行 时 进 行 通 信, 以 便 调 用 本 机 Android API 开 发 堆 栈 :Mono for Android 也 是 一 个 开 发 堆 栈, 它 提 供 了 创 建 和 打 包 Android 设 备 应 用 程 序 所 需 的 工 具 2.1.3 使 用 Mono for Android 的 原 因 假 设 Android 平 台 有 一 个 以 Java 为 基 础 的 公 开 的 开 发 堆 栈 作 为 可 视 化 开 发 环 境, 那 么 就 有 理 由 要 问 为 什 么 还 需 要 Mono for Android 对 于 那 些 使 用 Visual Studio 的.NET 开 发 人 员 来 说, 存 在 三 个 需 要 Mono for Android 的 主 要 理 由 : 熟 悉 的 开 发 环 境 熟 悉 的 API 以 及 由 此 而 产 生 的 快 速 启 动 1. 熟 悉 的 开 发 环 境 每 名 开 发 人 员 都 知 道, 学 习 一 个 新 的 开 发 堆 栈 需 要 耗 费 大 量 时 间, 同 时 学 习 过 程 也 是 非 常 痛 苦 的 而 Mono for Android 允 许.NET 开 发 人 员 继 续 使 用.NET 开 发 中 的 两 个 核 心 工 具 :Visual Studio 和 C# 18

第 2 章 Mono for Android 简 介 Visual Studio:Visual Studio 是 一 个 面 向.NET 的 优 秀 且 功 能 强 大 的 IDE 通 过 使 用 针 对 Visual Studio 的 Mono for Android 工 具, 将 不 需 要 修 改 IDE 或 者 自 己 喜 欢 的 相 关 设 置 C#: 有 些.NET 开 发 人 员 仅 使 用 Visual Basic.NET, 但 大 多 数.NET 开 发 人 员 还 是 对 C# 非 常 熟 悉 的 虽 然 C# 和 Java 在 结 构 上 非 常 相 似, 但 每 种 语 言 在 习 语 上 存 在 差 异 的 主 要 目 的 是 使 书 写 更 加 流 利 虽 然 熟 练 的 C# 开 发 人 员 并 不 需 要 花 费 大 量 时 间 来 学 习 Java 习 语, 但 如 果 他 们 坚 持 使 用 所 熟 悉 的 语 言, 那 无 疑 会 更 顺 手 2. 熟 悉 的 API 和 库 结 构 如 果 停 留 在.NET 世 界 中, 你 将 可 以 继 续 使 用 自 己 熟 悉 的 API 和 库 结 构 表 2-1 显 示 了 Mono for Android 4.0.1 中 的 部 分 程 序 集 表 2-1 Mono for Android 程 序 集 程 序 集 说 明 Mono.Android.dll 该 程 序 集 包 含 了 绑 定 到 Android API 的 C# Mono.CompilerServices.SymbolWriter.dll 该 程 序 集 主 要 是 针 对 编 译 器 编 写 者 Mono.Data.Sqlite.dll 针 对 SQLite 的 ADO.NET 提 供 程 序 Mono.Data.Tds.dll 对 TDS 协 议 的 支 持 ; 主 要 用 于 为 System.Data 内 的 System.Data.SqlClient 提 供 支 持 Mono.Security.dll 加 密 API mscorlib.dll Silverlight OpenTK.dll OpenGL/OpenAL 面 向 对 象 API, 可 对 其 进 行 扩 展 以 提 供 Android 设 备 支 持 System.dll Silverlight, 再 加 上 来 自 下 列 命 名 空 间 中 的 类 型 : System.Collections.Specialized System.ComponentModel System.ComponentModel.Design System.Diagnostics System.IO.Compression System.Net System.Net.Cache System.Net.Mail System.Net.Mime System.Net.NetworkInformation System.Net.Security System.Net.Sockets System.Security.Authentication System.Security.Cryptography System.Timers 19

C# 开 发 Android 应 用 实 战 使 用 Mono for Android 和.NET/C# 程 序 集 说 明 ( 续 表 ) System.Core.dll Silverlight System.Data.dll 删 除 了 部 分 功 能 的.NET 3.5 System.Json.dll Silverlight System.Runtime.Serialization.dll Silverlight System.ServiceModel.dll Silverlight Alpha 中 所 呈 现 的 WCF 堆 栈 System.ServiceModel.Web.dll Silverlight, 再 加 上 来 自 于 下 列 命 名 空 间 中 的 类 型 : System System.ServiceModel.Channels System.ServiceModel.Description System.ServiceModel.Web Alpha 品 质 System.Transactions.dll.NET 3.5; 以 及 对 System.Data 的 部 分 支 持 System.Web.Services 来 自.NET 3.5 配 置 文 件 的 基 本 Web 服 务, 删 除 了 服 务 器 功 能 System.Xml.dll.NET 3.5 System.Xml.Linq.dll.NET 3.5 http://mono-android.net/documentation/assemblies 通 过 使 用 所 喜 欢 的 开 发 环 境 以 及 所 熟 悉 的 API, 将 快 速 启 动 Android 开 发 2.1.4 在 使 用 Mono for Android 时 需 要 权 衡 的 事 项 当 决 定 不 使 用 本 机 API 和 开 发 堆 栈 时, 进 行 相 关 权 衡 是 非 常 必 要 的 需 要 对 使 用 更 舒 适 ( 但 更 抽 象 ) 层 的 优 势 所 在 进 行 权 衡 1. 等 待 更 新 虽 然 离 开 本 机 Java 和 Eclipse 而 使 用 Visual Studio 具 有 前 面 所 提 到 的 好 处, 但 是 同 时 也 存 在 缺 点 首 先, 一 般 来 说 必 须 等 待 最 新 的 改 进 也 就 是 说, 通 常 只 要 Android SDK 中 增 加 了 新 的 功 能 或 者 增 强 了 性 能, 你 就 必 须 等 待 Mono for Android 的 下 一 个 相 应 版 本 2. 潜 在 的 性 能 影 响 第 二 个 需 要 权 衡 的 是 性 能 Mono for Android 运 行 时 必 须 与 Dalvik 运 行 时 进 行 通 信, 以 便 完 成 相 关 工 作 然 而, 通 常 这 种 开 销 较 小, 可 与 前 面 所 提 到 的 好 处 相 抵 消 在 安 装 好 针 对 Visual Studio 的 Mono for Android 工 具 后, 通 过 选 择 File New Project C# Mono for Android 可 以 非 常 容 易 地 启 动 一 个 新 的 Mono for Android 项 目 后 面 将 详 细 介 绍 这 部 分 内 容 20

第 2 章 Mono for Android 简 介 3. 内 存 管 理 许 多 由 Mono for Android 所 分 配 的 对 象 都 是 对 这 些 对 象 所 表 示 的 Java 对 象 的 包 装 那 么 会 发 生 什 么 事 情 呢 : 每 当 分 配 一 个 包 装 了 相 应 的 Java 类 型 的 类 型 时, 都 会 创 建 两 个 对 象 : (1) 位 于 Java 堆 中 的 Java 对 象 (2) 位 于 Mono 堆 中 的 Mono 代 理 对 象 Mono for Android 进 行 了 相 关 的 处 理, 以 确 保 当 某 一 对 象 引 用 另 一 个 对 象 时, 这 两 个 对 象 都 保 持 活 动 状 态 也 就 是 说, 只 要 Mono GC(garbage collector, 垃 圾 收 集 器 ) 引 用 了 一 个 对 象,Java 端 的 对 象 将 保 持 活 动 状 态, 反 之 亦 然 而 这 一 切 都 通 过 mandroid.exe 工 具 在 生 成 时 所 创 建 的 代 理 对 象 来 完 成 然 而,GC 生 来 是 比 较 懒 惰 的, 它 只 会 执 行 一 个 命 令 集 合, 而 当 对 象 超 出 范 围 时 则 不 会 执 行 所 以, 这 也 就 意 味 着 跨 VM 的 垃 圾 将 会 比 平 时 逗 留 更 长 的 时 间, 这 是 不 可 避 免 的 所 以, 当 因 为 临 时 用 途 而 需 要 分 配 很 多 对 象 时, 有 必 要 显 式 处 理 这 些 对 象 一 个 比 较 简 便 的 处 理 方 法 是 使 用 带 有 一 个 新 对 象 的 using 块, 该 方 法 将 隐 式 地 处 理 作 为 using 子 句 目 标 的 新 对 象, 从 而 处 理 Mono 端 的 包 装, 这 样 也 将 允 许 Java-VM 收 集 相 关 对 象, 从 而 防 止 过 多 的 临 时 对 象 逗 留 太 长 时 间 提 示 : 要 获 取 更 多 关 于 垃 圾 收 集 的 详 细 信 息, 可 查 阅 下 面 超 链 接 中 的 文 档 : http://mono-android.net/index.php?title=documentation/ GC&highlight= garbage+ collection 2.1.5 Mono for Android 开 发 环 境 需 要 的 其 他 工 具 虽 然 Mono for Android 的 开 发 环 境 主 要 是 为 了 在 Visual Studio 中 使 用 C#, 但 是 除 此 之 外 还 需 要 其 他 一 些 工 具 1. Java SDK 首 先 需 要 安 装 Java SDK, 可 在 http://java.sun.com 中 找 到 它 此 时 你 可 能 会 疑 惑, 既 然 Mono for Android 允 许 在 Visual Studio 中 通 过 使 用 C# 进 行 开 发, 那 么 为 什 么 还 需 要 Java 呢?Android SDK 是 通 过 Java 开 发 的, 所 以 运 行 该 SDK 所 附 带 的 所 有 工 具 都 需 要 使 用 Java 而 其 中 最 重 要 的 工 具 是 Android 模 拟 器, 在 将 应 用 程 序 部 署 到 实 际 设 备 之 前 需 要 使 用 该 模 拟 器 对 应 用 程 序 进 行 快 速 调 试 和 测 试 此 外, 其 他 你 需 要 熟 悉 的 工 具 也 都 是 依 赖 Java 的 2. Android SDK 在 安 装 好 Java SDK 后, 接 下 来 可 以 安 装 Android SDK 可 以 从 http://developer.android.com/ 21

C# 开 发 Android 应 用 实 战 使 用 Mono for Android 和.NET/C# sdk/index.html 处 下 载 Android SDK, 同 时 还 可 以 找 到 下 载 Windows 安 装 程 序 的 链 接 在 加 载 完 该 SDK 后 即 可 开 始 安 装, 其 安 装 过 程 可 以 分 为 4 个 步 骤 (1) 第 一 个 步 骤 是 运 行 SDK 安 装 程 序 该 步 骤 非 常 简 单, 就 像 你 以 前 曾 经 操 作 的 那 样 运 行 Windows 安 装 程 序 (2) 第 二 个 步 骤 是 下 载 需 要 使 用 的 API 运 行 程 序 AVD Manager.exe, 并 从 其 左 边 选 择 Available package 此 时 就 可 以 安 装 下 一 个 步 骤 需 要 使 用 的 不 同 的 Google API 和 SDK 平 台 你 可 以 安 装 所 有 需 要 的 平 台, 但 此 时 务 必 至 少 安 装 了 Level 8 平 台 ( 对 应 于 Android 2.2) 如 果 安 装 了 所 有 可 用 的 安 装 包, 应 该 可 以 看 到 类 似 于 图 2-1 所 示 的 视 图 (3) 既 然 SDK 被 完 全 安 装 了, 那 么 第 三 个 步 骤 就 是 配 置 一 个 Android 模 拟 器 在 Android SDK 和 AVD Manager 中 选 择 Virtual devices, 然 后 单 击 Create 按 钮 此 时 将 看 到 如 图 2-2 所 示 的 窗 口 在 Name 字 段 中 输 入 Android 2.2 从 Target 下 拉 框 中 选 择 Android 2.2-API Level 8 在 SD Card 单 选 按 钮 组 中 选 择 Size 并 输 入 512 现 在, 单 击 Create AVD 按 钮 此 时 应 该 得 到 一 个 确 认 Android_22 AVD 被 成 功 创 建 的 对 话 框 图 2-1 图 2-2 (4) 最 后 启 动 所 配 置 的 模 拟 器 从 列 表 中 选 择 Android_22 AVD, 并 单 击 Start 按 钮 此 时 可 以 通 过 出 现 的 对 话 框 修 改 一 些 启 动 设 置 目 前, 默 认 设 置 都 非 常 合 理, 所 以 单 击 Launch 按 钮 很 快 将 可 以 看 到 如 图 2-3 所 示 的 图 像 再 过 一 两 分 钟, 应 该 可 以 看 到 熟 悉 的 Android logo, 但 模 拟 器 完 全 启 动 可 能 还 需 要 花 费 几 分 钟 时 间, 如 图 2-4 所 示 22

第 2 章 Mono for Android 简 介 图 2-3 图 2-4 一 旦 模 拟 器 开 始 运 行, 就 可 以 让 其 一 直 运 行 下 去, 以 便 减 少 Hello Android 开 发 过 程 中 的 启 动 时 间 23

C# 开 发 Android 应 用 实 战 使 用 Mono for Android 和.NET/C# 3. Visual Studio 为 进 行 Mono for Android 开 发, 必 须 拥 有 Visual Studio 2010 Professional 或 者 更 新 版 本 以 便 运 行 Mono for Android 插 件 而 Visual Studio 2010 Express 是 不 适 用 的, 因 为 它 不 支 持 相 关 插 件 Visual Studio 的 具 体 安 装 过 程 已 经 超 出 了 本 节 的 讨 论 范 围, 但 在 继 续 操 作 之 前 需 要 确 保 已 安 装 了 Visual Studio 2010 针 对 Visual Studio 的 Mono 工 具 针 对 Visual Studio 的 Mono 工 具 是 作 为 一 个 插 件 添 加 到 Visual Studio 的 工 具, 以 帮 助 实 现 针 对 开 源 Mono 开 发 堆 栈 的.NET 开 发 的 跨 平 台 兼 容 性 目 前 我 们 所 进 行 的 开 发 并 不 需 要 这 些 工 具 然 而, 如 果 你 对 Mono 开 发 非 常 感 兴 趣, 或 者 希 望 将 在 Windows 中 通 过 Visual Studio 所 编 写 的 代 码 部 署 到 Mono 支 持 的 另 一 个 平 台 上, 那 么 这 些 工 具 是 值 得 拥 有 的, 并 且 安 装 也 非 常 容 易 可 从 http://mono-tools.com/download/ 找 到 这 些 工 具 安 装 Mono for Android 插 件 一 旦 满 足 了 所 有 先 决 条 件, 就 可 以 为 Visual Studio 安 装 Mono for Android 插 件 可 从 http://mono-android.net/store 中 下 载 该 插 件 如 果 此 时 已 打 开 Visual Studio, 请 将 其 关 闭, 然 后 运 行 安 装 程 序 安 装 过 程 将 耗 费 几 分 钟 时 间, 但 当 完 成 安 装 后, 就 可 以 开 始 进 行 Mono for Android 开 发 了 2.2 利 用 Mono for Android 进 行 Visual Studio 开 发 本 节 将 为 Android 设 备 开 发 一 个 基 本 的 Hello Android 应 用 程 序, 该 应 用 程 序 使 用 了 针 对 Visual Studio 2010 的 Android 插 件 首 先 需 要 在 Visual Studio 中 设 置 一 个 新 的 Mono for Android 项 目, 然 后 生 成 和 调 试 应 用 程 序 最 后 在 将 应 用 程 序 部 署 到 物 理 设 备 之 前 向 项 目 中 添 加 一 些 日 志 记 录 和 单 元 测 试 虽 然 一 些 细 节 都 集 中 在 Visual Studio 上, 但 仍 鼓 励 每 位 读 者 仔 细 阅 读 本 节, 因 为 本 节 介 绍 了 Android 和 Mono for Android 某 些 方 面 的 内 容, 而 这 些 内 容 在 主 要 介 绍 通 过 MonoDevelop 进 行 开 发 的 章 节 中 并 没 有 予 以 讨 论 2.2.1 一 般 设 置 首 先 应 该 在 Visual Studio 中 创 建 新 应 用 程 序 启 动 Visual Studio 2010, 然 后 选 择 File New Project 当 出 现 New Project 对 话 框 时, 从 可 用 的 C# 模 板 中 选 择 Mono for Android Application, 如 图 2-5 所 示 在 Name 字 段 中 输 入 HelloAndroid 同 时 所 输 入 的 值 也 将 作 为 解 决 方 案 的 名 称 单 击 OK 按 钮 此 时 项 目 将 打 开 Activity.cs 文 件 24

第 2 章 Mono for Android 简 介 图 2-5 2.2.2 生 成 Hello Android 下 所 示 : 在 生 成 应 用 程 序 之 前, 需 要 研 究 一 下 模 板 代 码, 并 对 其 进 行 一 些 修 改 其 模 板 代 码 如 using System; using Android.App; using Android.Content; using Android.Runtime; using Android.Views; using Android.Widget; using Android.OS; namespace HelloAndroid { [Activity(Label = "My Activity", MainLauncher = true)] public class Activity1 : Activity { int count = 1; protected override void OnCreate(Bundle bundle) { base.oncreate(bundle); 25

C# 开 发 Android 应 用 实 战 使 用 Mono for Android 和.NET/C# // Set our view from the "main" layout resource SetContentView(Resource.layout.main); // Get our button from the layout resource, // and attach an event to it Button button = FindViewById<Button>(Resource.id.myButton); button.click += delegate { button.text = string.format("{0} clicks!", count++); }; } } } 该 代 码 块 显 示 以 下 相 关 内 容 首 先 是 该 代 码 所 需 的 using 子 句 接 着 声 明 了 命 名 空 间, 并 将 其 设 置 为 应 用 程 序 名 称 Hello Android 接 下 来 实 现 了 Activity1 的 类 声 明, 其 类 型 为 Activity Activity 是 基 于 Android 程 序 设 计 的 核 心, 后 续 章 节 ( 特 别 是 第 3 章 ) 将 讨 论 相 关 内 容 然 而, 此 类 中 的 注 释 也 应 该 值 得 注 意 首 先 是 标 签 My Activity, 该 标 签 将 出 现 在 Android 应 用 程 序 窗 口 中 其 次 是 MainLauncher 批 注, 其 表 明 了 该 Activity 是 应 用 程 序 的 主 要 启 动 对 象 最 后 编 写 了 oncreate 函 数 Activity 的 创 建 仅 是 Activity 生 命 周 期 中 可 能 的 若 干 个 步 骤 之 一 其 完 整 的 生 命 周 期 将 在 第 3 章 中 进 一 步 讨 论 在 OnCreate 函 数 中 首 先 初 始 化 一 个 资 源 包, 然 后 对 视 图 进 行 设 置, 最 后 从 该 视 图 中 获 取 一 个 按 钮, 并 为 其 添 加 一 个 事 件 现 在 就 可 以 开 始 生 成 新 应 用 程 序 了 单 击 工 具 栏 中 的 Debug 按 钮 此 时 将 提 示 你 选 择 一 个 运 行 中 的 设 备 来 部 署 代 码, 如 图 2-6 所 示 你 应 该 可 以 看 到 前 面 所 启 动 运 行 的 模 拟 器 但 如 果 没 有 运 行 中 的 设 备, 可 以 选 择 要 启 动 的 设 备 图 2-6 选 择 该 模 拟 器, 并 单 击 OK 按 钮 随 后,Mono for Android 工 具 包 将 检 测 Mono for Android 运 行 时 的 已 安 装 版 本 如 果 没 有 找 到 该 运 行 时, 工 具 包 将 会 进 行 安 装 而 该 安 装 26

第 2 章 Mono for Android 简 介 过 程 可 能 花 费 一 些 时 间 一 旦 运 行 时 安 装 完 毕, 工 具 包 将 会 进 行 签 名, 并 将 应 用 程 序 安 装 到 运 行 的 模 拟 器 中 该 过 程 完 成 后 就 可 以 运 行 应 用 程 序 了 切 换 到 模 拟 器, 并 对 其 进 行 解 锁, 然 后 单 击 Application 按 钮 此 时 应 该 看 到 与 图 2-7 相 似 的 图 像 单 击 My Activity 应 用 程 序, 应 该 可 以 看 到 应 用 程 序 正 在 运 行, 如 图 2-8 所 示 图 2-7 图 2-8 27

C# 开 发 Android 应 用 实 战 使 用 Mono for Android 和.NET/C# 2.2.3 日 志 记 录 为 了 跟 踪 程 序 的 执 行 流, 通 常 对 程 序 活 动 进 行 记 录 是 非 常 有 帮 助 的 本 节 将 简 要 介 绍 如 何 在 Mono for Android 中 记 录 日 志 消 息 在 android.util 命 名 空 间 中 可 以 找 到 Log 类 在 上 面 所 示 的 源 代 码 中 添 加 几 行 代 码, 得 到 以 下 代 码 : using System; using Android.App; using Android.Content; using Android.Runtime; using Android.Views; using Android.Widget; using Android.OS; using Android.Util; namespace HelloAndroid { [Activity(Label = "Hello Android", MainLauncher = true)] public class Activity1 : Activity { int count = 1; protected override void OnCreate(Bundle bundle) { Log.I("HA", "Start OnCreate"); base.oncreate(bundle); // Set our view from the "main" layout resource SetContentView(Resource.layout.main); // Get our button from the layout resource, // and attach an event to it Button button = FindViewById<Button>(Resource.id.myButton); button.click += delegate { button.text = string.format("{0} clicks!",count++); } } } } Log.I("HA", "End OnCreate"); 此 时 可 以 看 到, 所 添 加 的 using Android.Util 提 供 了 对 Log 类 的 访 问, 而 该 类 包 含 了 很 多 简 便 易 用 的 函 数, 下 面 列 出 了 其 中 一 部 分 : Log.I(string tag,string message) 记 录 消 息 Log.W(string tag,string message) 记 录 警 告 Log.E(string tag,string message) 记 录 错 误 其 中, 参 数 tag 提 供 了 日 志 记 录 消 息 的 上 下 文 在 本 示 例 中 可 使 用 HelloAndroid 的 28

第 2 章 Mono for Android 简 介 HA 标 签 作 为 上 下 文 为 在 Visual Studio 中 查 看 相 关 消 息, 请 依 次 选 择 View Other Windows Android Device Logging, 此 时 可 获 取 所 有 消 息 2.2.4 调 试 如 果 成 功 地 在 模 拟 器 中 执 行 了 应 用 程 序, 那 么 可 以 看 一 下 如 何 对 接 下 来 将 要 介 绍 的 问 题 进 行 调 试 如 果 你 正 在 使 用 实 际 手 机, 那 么 需 要 切 换 到 手 机 上 的 应 用 程 序 页 面 并 选 择 Settings 再 选 择 Application, 然 后 选 择 Development, 并 选 中 USB Debugging 最 后 返 回 到 代 码 将 代 码 行 : Button button = FindViewById<Button>(Resource.id.myButton); 修 改 为 下 面 所 示 的 代 码 : TextView button = FindViewById<TextView>(Resource.id.myButton); 重 新 运 行 应 用 程 序 此 时 应 用 程 序 在 启 动 时 将 抛 出 一 个 错 误, 因 为 你 正 在 尝 试 将 Button 作 为 TextView 来 进 行 处 理 虽 然 该 示 例 是 人 为 设 计 的, 但 还 是 请 仔 细 思 考 一 下 如 何 调 试 该 应 用 程 序 在 下 面 所 示 的 代 码 行 上 设 置 断 点 : base.oncreate(bundle); 现 在, 单 击 工 具 栏 上 的 Run/Debug 按 钮 当 应 用 程 序 启 动 后, 软 件 将 在 断 点 处 停 止 运 行 你 可 以 单 步 调 试 应 用 程 序, 直 到 到 达 出 错 的 代 码 行 如 果 尝 试 跳 过 该 指 令 将 导 致 前 面 所 看 到 的 错 误, 此 时 修 改 该 错 误 并 不 困 难 2.2.5 测 试 仅 通 过 使 用 来 测 试 软 件 的 日 子 已 经 一 去 不 复 返 了 所 有 可 靠 构 建 的 软 件 都 依 赖 单 元 测 试 作 为 最 佳 的 测 试 方 法, 以 便 缩 短 测 试 周 期 并 提 高 可 靠 性 那 么, 如 何 使 用 Mono for Android 来 构 建 单 元 测 试? 最 简 单 的 方 法 是 使 用 NUnit, 就 像 其 适 用 于 其 他 Mono 应 用 程 序 一 样 而 较 复 杂 的 方 法 是 构 建 程 序 使 其 便 于 进 行 测 试 也 就 是 说,NUnit 测 试 框 架 并 不 适 合 于 UI 测 试, 所 以 最 好 将 非 UI 代 码 分 离 到 一 个 单 独 的 库 中, 并 针 对 该 库 进 行 相 关 测 试 同 时 还 要 注 意, 如 果 想 要 利 用 针 对 其 他 平 台 的 代 码 ( 例 如, 带 有 MonoTouch 的 iphone 或 者 带 有.NET 或 Mono 的 Windows Phone 7), 那 就 需 要 将 特 定 于 平 台 的 代 码 与 一 般 可 重 用 代 码 相 分 离 而 这 些 代 码 也 是 构 建 测 试 用 例 所 需 的 代 码 所 以, 对 于 非 UI 和 独 立 于 平 台 的 代 码, 没 必 要 向 Android 活 动 中 添 加 相 关 的 程 序 逻 辑 ( 提 取 这 些 代 码 到 一 个 Android 库 中 ) 可 通 过 创 建 新 解 决 方 案 来 创 建 Android 库, 而 不 必 先 选 Android 应 用 程 序, 再 选 Android 库 然 后 使 用 NUnit 对 该 代 码 提 供 自 动 化 测 试 29

C# 开 发 Android 应 用 实 战 使 用 Mono for Android 和.NET/C# 2.2.6 部 署 在 完 成 了 对 Hello Android 应 用 程 序 的 调 试 日 志 记 录 以 及 测 试 后, 现 在 是 时 候 看 一 下 如 何 将 应 用 程 序 部 署 到 实 际 的 Android 设 备 上 该 过 程 可 以 分 为 三 个 步 骤 : 通 过 USB 连 接 到 手 机 将 手 机 设 置 为 开 发 模 式 部 署 应 用 程 序 (1) 第 一 个 步 骤 非 常 简 单, 不 言 自 明 (2) 第 二 个 步 骤 需 要 进 入 手 机 的 设 置, 并 选 择 Application Settings 在 Application Settings 下, 选 中 Unknown Sources 选 项 通 过 该 选 项 可 以 安 装 所 需 的 非 Android 市 场 的 应 用 程 序 然 后 在 同 一 页 面 中 选 择 Development 选 项 此 时 将 进 入 一 个 包 含 三 个 选 项 的 屏 幕 请 选 择 USB Debugging 和 Stay Awake 因 为 目 前 不 会 使 用 模 拟 位 置, 所 以 不 必 考 虑 该 选 项 (3) 最 后 单 击 工 具 栏 上 的 Debug 按 钮 此 时 当 出 现 Running Devices 列 表 时, 会 发 现 你 的 设 备 位 于 列 表 中! 选 择 你 的 设 备 安 装 过 程 将 通 过 USB 在 所 选 设 备 上 运 行 部 署 完 毕 后, 可 以 试 用 一 下 Hello Android 应 用 程 序 2.3 使 用 MonoDevelop 进 行 Mono for Android 开 发 本 节 将 介 绍 如 何 使 用 针 对 MonoDevelop 的 Android 插 件, 为 Android 设 备 开 发 一 个 简 单 Hello Android 应 用 程 序 如 果 由 于 你 所 使 用 的 是 Mac 系 统 或 者 MonoDevelop 而 跳 过 了 Visual Studio 一 节, 那 么 建 议 你 还 是 阅 读 一 下 该 节, 因 为 该 节 介 绍 了 一 些 常 用 的 概 念, 不 过 也 可 以 根 据 自 己 的 安 排 暂 时 跳 过 以 后 再 阅 读 2.3.1 一 般 设 置 在 Mac 上 安 装 开 发 环 境 是 非 常 简 单 的 该 过 程 可 分 为 6 个 步 骤 : 安 装 Android SDK: 可 从 http://developer.android.com/sdk/index.html 中 找 到 Android SDK 它 是 基 于 Java 的, 并 利 用 了 默 认 安 装 在 OSX 上 的 Java SDK 安 装 Mono for Mac: 可 从 http://www.go-mono.com/mono-downloads/download.html 中 找 到 Mono for Mac 它 提 供 了 Mono 平 台, 而 该 平 台 是 将 来 需 要 安 装 的 Mono 开 发 工 具 的 基 础 安 装 MonoDevelop for Mac : 可 从 http://monodevelop.com/download 中 找 到 MonoDevelop for Mac 它 为 在 Mac 上 进 行 Mono 应 用 程 序 开 发 提 供 了 IDE 同 时, 针 对 Mac 的 Mono for Android 也 是 作 为 该 IDE 的 一 个 插 件 而 安 装 的 安 装 Mono for Android for Mac: 可 从 http://mono-android.net/store 中 找 到 Mono for Android for Mac 在 存 储 页 面 也 可 以 下 载 该 软 件 的 试 用 版 本 配 置 Mono for Android MonoDevelop 插 件 : 一 旦 插 件 安 装 完 毕, 需 要 定 位 到 MonoDevelop Preferences, 此 时 将 出 现 首 选 项 对 话 框 请 选 择 Other 类 别 以 及 Mono for Android SDKs 这 样 将 允 许 你 对 所 使 用 的 Java 和 Android SDK 进 行 配 置 30

第 2 章 Mono for Android 简 介 配 置 Android 模 拟 器 : 最 后 运 行 Android SDK 安 装 程 序, 并 选 择 Virtual Devices 创 建 一 个 新 的 虚 拟 设 备 你 可 能 会 发 现, 在 真 实 设 备 上 进 行 开 发 要 比 在 模 拟 设 备 上 开 发 快 一 些, 这 一 点 需 要 引 起 注 意 如 果 想 了 解 该 过 程 的 更 详 细 信 息, 可 查 阅 下 面 的 超 链 接 :http://mono-android.net/ Installation/Installation_for_Mac 提 示 : 如 果 你 正 在 Mono for Windows 环 境 下 运 行, 则 可 能 需 要 查 阅 http://mono-android.net/installlation/windows 上 的 安 装 指 导, 因 为 在 设 置 方 法 上 有 些 细 微 的 不 同 2.3.2 构 建 Hello Android 构 建 程 序 并 通 过 MonoDevelop 和 Android 运 行 是 非 常 简 单 的 如 果 你 阅 读 过 Visual Studio 一 节, 那 么 就 可 以 跳 过 本 节, 直 接 寻 找 自 己 需 要 的 细 节 信 息, 但 是 对 于 那 些 跳 过 了 Visual Studio 一 节 的 读 者, 则 需 要 仔 细 阅 读 本 节 转 到 File New Solution, 选 择 Mono for Android 模 板, 如 图 2-9 所 示 图 2-9 对 于 解 决 方 案 名 称, 请 输 入 HelloAndroid 然 后 单 击 OK 按 钮 此 时 新 应 用 程 序 将 显 示 在 窗 口 中 转 到 Run 菜 单 并 选 择 Run 一 段 时 间 后 将 会 出 现 一 个 窗 口, 提 示 你 选 择 运 行 应 用 程 序 的 设 备 如 果 目 前 有 运 行 中 的 模 拟 器 或 者 Android 设 备, 它 将 在 窗 口 中 被 列 出 但 如 果 没 有, 可 选 择 Start an Emulator Image, 此 时 将 收 到 一 个 你 的 计 算 机 上 所 配 置 的 图 像 31

C# 开 发 Android 应 用 实 战 使 用 Mono for Android 和.NET/C# 列 表, 其 中 应 该 包 括 在 一 般 设 置 中 所 配 置 的 模 拟 器 选 择 用 来 运 行 应 用 程 序 的 设 备 或 模 拟 器, 然 后 单 击 OK 按 钮 如 果 启 动 的 是 一 个 模 拟 器, 则 可 能 需 要 一 段 时 间 否 则, 将 会 出 现 相 关 的 消 息, 告 知 你 正 在 检 查 已 安 装 的 应 用 程 序 ; 如 有 必 要 还 将 安 装 Mono for Android, 最 后 运 行 应 用 程 序, 如 图 2-10 所 示 图 2-10 2.3.3 日 志 记 录 MonoDevelop 中 的 日 志 记 录 与 Visual Studio 中 的 日 志 记 录 是 一 样 的, 都 是 API 函 数, 而 不 是 IDE 函 数 如 果 你 跳 过 了 Visual Studio 一 节, 请 回 顾 一 下 以 下 的 日 志 记 录 函 数 : Log.I(string tag,string message) 记 录 消 息 Log.W(string tag,string message) 记 录 警 告 Log.E(string tag,string message) 记 录 错 误 其 中 参 数 tag 提 供 了 日 志 记 录 消 息 的 上 下 文 例 如, 如 果 向 HelloAndroid 应 用 程 序 中 添 加 一 些 日 志 记 录, 那 么 可 以 在 日 志 记 录 函 数 中 使 用 HA 标 签 32

第 2 章 Mono for Android 简 介 2.3.4 调 试 如 果 成 功 地 在 模 拟 器 中 执 行 了 应 用 程 序, 可 以 看 一 下 如 何 对 接 下 来 将 要 介 绍 的 问 题 进 行 调 试 如 果 你 正 在 使 用 实 际 手 机, 那 么 需 要 切 换 到 手 机 上 的 应 用 程 序 页 面 并 选 择 Settings 然 后 选 择 Application, 再 选 择 Development, 并 选 中 USB Debugging 最 后 返 回 到 代 码 将 代 码 行 : Button button = FindViewById<Button>(Resource.id.myButton); 修 改 为 下 面 所 示 的 代 码 : TextView button = FindViewById<TextView>(Resource.id.myButton); 重 新 运 行 应 用 程 序 此 时 应 用 程 序 在 启 动 时 将 抛 出 一 个 错 误, 因 为 你 正 在 尝 试 将 Button 作 为 TextView 进 行 处 理 虽 然 该 示 例 是 人 为 设 计 的, 但 还 是 请 仔 细 思 考 一 下 如 何 调 试 该 应 用 程 序 在 下 面 所 示 的 代 码 行 上 设 置 断 点 : base.oncreate(bundle); 现 在, 单 击 工 具 栏 上 的 Run/Debug 按 钮 当 应 用 程 序 启 动 后, 软 件 将 在 断 点 处 停 止 运 行 你 可 以 单 步 调 试 应 用 程 序, 直 到 到 达 出 错 的 代 码 行 如 果 尝 试 跳 过 该 指 令 将 会 导 致 前 面 所 看 到 的 错 误, 此 时 修 改 该 错 误 并 不 困 难 2.3.5 测 试 仅 通 过 使 用 来 测 试 软 件 的 日 子 已 经 一 去 不 复 返 了 所 有 可 靠 构 建 的 软 件 都 依 赖 单 元 测 试 作 为 最 佳 的 测 试 方 法, 以 便 缩 短 测 试 周 期 并 提 高 可 靠 性 那 么, 如 何 使 用 Mono for Android 来 构 建 单 元 测 试? 最 简 单 的 方 法 莫 过 于 使 用 NUnit, 就 像 其 适 用 于 其 他 Mono 应 用 程 序 一 样 而 较 复 杂 的 方 法 是 构 建 程 序 使 其 便 于 进 行 测 试 也 就 是 说,NUnit 测 试 框 架 并 不 适 合 于 UI 测 试, 所 以 最 好 将 非 UI 代 码 分 离 到 一 个 单 独 的 库 中, 并 针 对 该 库 进 行 相 关 测 试 2.3.6 部 署 将 HelloAndroid 应 用 程 序 部 署 到 移 动 设 备 上 非 常 简 单 该 过 程 可 分 为 三 个 步 骤 : 通 过 USB 连 接 到 手 机 将 手 机 设 置 为 开 发 模 式 部 署 应 用 程 序 (1) 第 一 个 步 骤 非 常 简 单 的, 不 言 自 明 (2) 第 二 个 步 骤 需 要 进 入 手 机 的 设 置, 并 选 择 Application Settings 在 Application Settings 下, 选 中 Unknown Sources 选 项 通 过 该 选 项 可 以 安 装 所 需 的 非 Android 市 场 的 应 用 程 序 然 后 在 同 一 页 面 中 选 择 Development 选 项 此 时 将 进 入 一 个 包 含 三 个 选 项 的 屏 幕 请 选 择 USB Debugging 和 Stay Awake 因 为 目 前 不 使 用 模 拟 位 置, 所 以 不 必 考 虑 该 选 项 33

C# 开 发 Android 应 用 实 战 使 用 Mono for Android 和.NET/C# (3) 最 后 单 击 工 具 栏 上 的 Debug 按 钮 此 时 当 出 现 Running Devices 列 表 时, 会 发 现 你 的 设 备 位 于 列 表 中! 选 择 你 的 设 备 安 装 过 程 将 会 通 过 USB 在 所 选 设 备 上 运 行 部 署 完 毕 后, 可 以 试 用 一 下 Hello Android 应 用 程 序 2.4 小 结 本 章 通 过 使 用 Visual Studio 2010 插 件 在 Windows 上 安 装 了 针 对 Android 的 开 发 环 境, 以 及 通 过 使 用 MonoDevelop 在 Mac 上 安 装 了 开 发 环 境 在 这 两 种 情 况 下 开 发 过 程 都 是 相 似 的 : 首 先 安 装 软 件 堆 栈, 其 中 包 括 Java SDK Android SDK 以 及 Mono SDK 随 后 安 装 IDE(Visual Studio 或 者 MonoDevelop) 然 后 安 装 Mono for Android 插 件 如 果 使 用 的 是 MonoDevelop, 则 还 需 要 对 插 件 进 行 相 关 的 配 置 最 后 使 用 已 安 装 的 平 台 创 建 默 认 的 HelloAndroid 应 用 程 序 此 外, 本 章 还 介 绍 了 如 何 测 试 和 部 署 应 用 程 序 以 及 如 何 记 录 日 志 信 息 可 以 看 到, 日 志 记 录 只 不 过 是 向 应 用 程 序 中 添 加 对 三 个 日 志 函 数 的 调 用 中 的 一 个 而 相 关 的 日 志 则 可 以 通 过 Visual Studio 或 者 MonoDevelop 的 控 制 台 进 行 查 看 在 对 应 用 程 序 进 行 部 署 之 前, 通 常 将 测 试 看 成 协 助 验 证 软 件 行 为 的 最 佳 做 法 部 署 是 软 件 生 命 周 期 中 的 一 个 阶 段 在 后 续 各 章 中 将 反 复 使 用 这 些 技 能 34