AIDE 2.0 引入对原生 C/C++ 应用的支持

  • Abel Avram
  • 臧秀涛

2013 年 5 月 15 日

话题:Java移动C++Android语言 & 开发

Android IDE,或者说 AIDE,是一款运行在 Android 之上的集成开发工具,用于开发 Android 应用。AIDE 2.0引入了很多增强,其中包括如下几个方面:

  • 支持 C/C++,可以使用Android NDK。这类应用既可以在 Android 设备上开发,也可以在 PC 或 Mac 上的 Eclipse 中开发。与 Java 应用类似,使用 Eclipse 开发的应用可以导入 AIDE 中。
  • 设计视图——修改了布局后,可以在设计视图中查看效果,不必构建应用
  • 改进了 UI——引入了编辑器选项卡和行号
  • 改进了与 Git 的集成——AIDE 提供了这样的选项,在创建新应用时,可以创建一个新的 Git 仓库

尽管 AIDE 可以在手机上使用,但它更适合在平板或在即将发布的搭载 Intel Atom 处理器的 Android 笔记本上使用。为进一步了解该产品,InfoQ 采访了 AIDE 的创建者之一 Hans Kratz。

InfoQ:听你说AIDE的下载量已经超过100万次,你是否估算过,有多少开发者将其应用于实际项目了?

HK到今天为止,AIDE 的下载用户已达 120 万,而且它仍出现在 30 万用户的设备上。对很多开发者而言,AIDE 是他们使用的第一个开发工具。还有一些开发者使用它来浏览代码,或进行小的修改。进行“严肃的”开发的程序员会购买高级版。

InfoQAIDE应用捆绑在Android SDK的移动版本之上。移动版Android SDK里包含哪些东西?

HKAIDE 包括一个 android.jar 文件,其中包含的是 Android Java API,还有一些支持构建过程的二进制文件(“aapt”和“aidl”)。此外,它还带有从 Android SDK 示例代码改编而来的项目模板。要使用 AIDE 进行 C/C++ 原生开发,还需要下载 AIDE 裁剪定制的 Android 原生开发包(NDK),大小为 50MB。

非常感谢 Google 几乎开源了 Android 的所有代码,我们因而得以重新发布那些文件。不然,像 AIDE 这样的工具是不可能出现的。

InfoQ8欧元的高级版提供了哪些东西?

HK高级版支持开发较大型的项目(多于 5 个源文件),支持 Git 的 commit、push 和 branch 等命令,可以生成能够部署到 Google Play 的应用包,此外还支持其他一些好东西。

InfoQAIDE需要根权限来查看日志文件吗?

HKGoogle 认为允许应用访问 Android 日志设施(logcat)存在安全风险,所以从 Jelly Bean 版本开始就锁定了该功能。遗憾的是,这意味着在 Android 4.1 及以后的版本中,即便像 AIDE 这样的开发工具也需要根权限来访问日志。如果 Google 能为开发者提供一种方式来访问日志的话,那就好极了。

InfoQ:是否提供了调试所开发应用的选项?

HKAIDE 目前还没有提供调试器。很多用户都在要求调试功能。因此我们正在研究如何提供该功能。在应用所运行的设备上调试该应用,在技术和 UI 方面面临一些独特的挑战,但是我们之前处理过类似的问题。所以我们有信心最终提供调试功能。

InfoQ:请描述一下AIDE的重构功能吧。

HKAIDE 构建了一个定制的代码分析引擎,支持重构和代码导航,这些功能与 Eclipse 和其他桌面 IDE 所提供的功能类似。它还不像 Eclipse 那样功能齐全,但它针对移动设备这种资源受限的环境进行了优化。它提供的仍然是日常使用的最重要功能,而且可以与桌面工具的质量媲美:重命名(方法、字段、类或变量)、提取方法、内联变量和引入变量等。此外,还有一些“编码”功能,它们依赖于代码分析,但与重构无关:找到(方法、字段、类或变量的)使用处、转到(方法、字段、类或变量的)定义、组织导入、使用 try-catch 包围、自动格式化代码及为字段创建 setter/getter 或构造器。

InfoQ:未来有什么计划?

HKAIDE 最初只支持用 Java 开发应用,而现在也支持 C/C++ 了。但我们并不希望止步于此,所以我们在考虑支持其他应用开发框架。

如果想了解有关这一独特的IDE的更多信息,可以参考去年的InfoQ文章:AIDE——运行于Android上的Android Java IDE该工具可以从 Google Play获取

查看英文原文:AIDE 2.0 Introduces Support for Native C/C++ Apps

Java移动C++Android语言 & 开发