使用 Android Studio 开发 Web 程序 - 源代码编写

Google 发布了正式版的 Android Studio,并宣示 Android Studio 成为了官方的开发工具。官方网站上也建议使用 Eclipse 搭配 ADT 的开发人员要移转至 Android Studio,这代表着 Google 要让 Android Studio 代替 Eclipse 成为开发 Android App 的主流 IDE。所以,要把手上的 Android App 项目移到 Android Studio 上开发是迟早的事,但这也衍生出了一个问题,就是其他非 Android 平台的项目怎么办?毕竟一个进阶一点的 App 通常都是需要有 Server 端的服务做搭配,再复杂一点可能还会有 Library 类型的项目是 App 与 Server 项目所共用的。为了使未来开发的工作可以顺畅的进行,看来花点时间搜集资料和研究是免不了的了!

开始进行研究之前还是要先订个方向,不然茫茫网海还真不知要从何开始。既然主题是 “研究 Android Studio 是否可以取代原本在 Eclipse 上进行的 Web 开发工作”,如果要让开发的工作可以有效率、有质量的进行,那 Android Studio 就必须要可以满足以下几个开发上的工作需求:

所以接下来就针对这几项议题来进行研究和了解。

源代码编写

使用 Eclipse 这个老牌的 IDE 透过 Plugin 的支援,在同一个 Workspace 里就可以包山包海,同时进行多种不同类型的源代码项目开发。当然 Google 选择 IntelliJ IDEA 而不是 Eclipse 做为官方开发工具的基础是有他的道理。IntelliJ IDEA 也是个受欢迎的 IDE,要像 Eclipse 可以包山包海同样没什么问题,只不过要付钱升级到 Ultimate Edition 才行。而 Google 看来是没这么佛心会替广大的 Android App 开发人员支付这笔费用,因为 Android Studio 是基于 Community Edition 扩充而来的。

看了一下 JetBrains 官网上 IntelliJ IDEA 的版本比较表,一些基本有关软体质量的功能,例如:Unit Testing、Code Coverage、Issue Tracking、Git、GitHub,在 Community Edition 里就已经内建,是个好消息。但很不幸的 Java EE 不在 Community Edition 的支援范围内,也就是不提供与 Web 开发相关的功能整合。

单就目前的资料来看,最糟的情况大概就是利用 Eclipse Project Interoperability 的功能在 Android Studio 及 Eclipse 这二个 IDE 间切换了。只是不知道能不能同时间用二个 IDE 开启同一个项目,并且跨 IDE 进行调试的作业...?再者,如果只是专注在 Android App 的开发上,二个 IDE 的切换也许勉强可以接受。然而,行动装置的平台不是只有 Android 一种,为了不同的市场,跨平台开发是一定会有的情境。iOS 要用 Xcode、Windows Phone 要用 Visual Studio,光是这些 IDE 快速键的使用就够让人混乱的了,更遑论每一种 IDE 都有自己的文件管理及操作逻辑,所以当然是在撰写源代码时能少一种是一种。

好在,以 IntelliJ IDEA Community Edition 为基础的 Android Studio 虽然不支援 Java EE,但基本的 Java 开发,也就是在 Java 源代码的编写所提供的整合性是内建的,而且不比 Eclipse 逊色。同时 Android Studio 对于 Gradle 这个新兴的自动化建置工具有很高的整合度。像是 Gradle 的项目类型可使用 Android Studio 汇入即可,已不再需要使用 Gradle 的 IDEA Plugin 来产生 File Based 的项目档。Build Script 里套用的 Plugin 所提供的 Task 也可以在 IDE 中列出清单,再透过清单来执行指定的 Task,不一定要在 Terminal 中输入指令。

就 “开发 Web 后台来提供 App 服务” 的这项需求,Google 也有在 Android Studio 内建了一个 Web 项目的范本,叫 Google Cloud Module。只是和微软的 Visual Studio 一样,想要把所有的开发都绑在自家的平台上。Visual Studio 提供的云端项目范本是绑定 Azure,而 Android Studio 则是专为自家云端平台 App Engine 所客制化的。

其实有了 Gradle 这项工具,在使用 Build Script 预设内容的情况下,只要依照 Gradle 内定的文件夹结构来放置 Java 相关文件,就可以顺利完成源代码的建置,并且使用 IDE 的功能来执行。Google Cloud Module 这个范本所产生的文件夹结构其实和一般开发 Java Web 项目的结构相同,只是 Build Script 已预先设定好和 App Engine 有关的 Dependencies 及 Plugin。

以标准的 Java Web 项目来说,Gradle 内定文件夹结构如以下所示:

WebProject
├── build.gradle
├── settings.gradle
├── web-module
│   ├── build.gradle
│   └── src
│       ├── main
│       │   ├── java
│       │   │   └── ...
│       │   └── webapp
│       │       ├── WEB-INF
│       │       │   └── web.xml
│       │       ├── css
│       │       └── jsp
│       └── test
│           └── java
│               └── ...
│                   └── test
└── common-module
    ├── build.gradle
    └── src
        ├── main
        │   └── java
        │       └── ...
        └── test
            └── java
                └── ...
                    └── test

如果对 Gradle 很熟悉的话,可以先新增 Google Cloud Module 后再自行修改 Build Script,以省去建立文件夹结构的麻烦。因为 Android Studio 预设建立新项目时都是以 Android 平台相关的应用程序为主,如果要在 Android Studio 里建立一个纯 Web 的项目,以目前测试的版本就只能先在 IDE 外产生好 build.gradle 和必要的文件夹结构后,再以汇入的方式进行。汇入时 Android Studio 会将 Gradle 的项目资讯与 IDE 资讯连结起来,以便在 IDE 中进行各项开发上的工作,所以会产生额外的文件夹与文件。

当所建立的 Gradle Project 不是 Single Project,而是像上方文件夹结构所示的 Multi-Project Build,建议事先在 IDE 外部编辑好 settings.gradle,以利 IDE 可以正确解析项目的结构。在 settings.gradle 编辑完成后,可按下 Toolbar 上的 Sync Project with Gradle Files 图示,以确认 Project Tool Window 有读取最后的结果。

settings.gradle 内容示范如下:

include ':web-module', ':common-module'

以 RESTful 类型的后台程序开发来说,这样的功能及整合性已经达成进行源代码编写工作的低标了。但如果要牵涉到网页输出的部份,像是:JavaScript、CSS 的撰写就真的要 Ultimate Edition 才有提供,或是试试看这个小工具

在研究 Gradle 所使用的 Groovy 语言时有一些想法,有兴趣的人可以参考一下。

接下来将会进入到下一个研究主题:设定共用库

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,392评论 25 707
  • afinalAfinal是一个android的ioc,orm框架 https://github.com/yangf...
    passiontim阅读 15,396评论 2 45
  • 昼夜干咳指枯黄,口臭齿褐肺油黑。 瘾来自力怎把持,瘾去戒止如抽丝。
    曾良知阅读 159评论 0 0
  • 文/牧马南山 像往常一般,在物资缺乏的年代,在月暮到来之前要尽早睡去,因为当黑夜笼罩时,就什么也看不见了。 像别人...
    tonight阅读 320评论 1 2