今天的主要内容为Android 原生应用开发得到Go 语言支持,那么我们首先简单看下GO是什么呢?
Go是Google开发的一种编译型,並發型,并具有垃圾回收功能的编程语言。
Google工程师和独立开发人员提出了几份不同的提案,旨在让Go语言支持开发原生的Android应用。这项工作无法让Go语言编写的应用使用Android NDK的全部接口,但有可能使用其中的一个子集。
David Crawshaw是Google的工程师,他写了一份提案,旨在让Go语言部分支持编写Android应用。根据他的说法,“用Go语言来实现整个Android平台非常困难。Android平台是用Java写的,并拥有庞大的API层。”
但是,Crawshaw说,一部分Android应用——比如游戏——使用了精简得多的C语言API编写代码,这些API由Android NDK提供。这样,使用Go语言来开发和NDK一样的功能,提供对Android的支持是有可能实现的。
Crawshaw建议在Go 1.4的开发周期中,Go语言的代码库引入一个叫GOOS=android的选项,这个选项可以提供以下功能:
为Android NDK中导出的OpenGL、OpenSL和OpenMAX接口,提供Go语言的绑定(binding)。
从Java语言到Go语言的绑定生成器(binding generator)。如果我们有一个Go语言编写的软件包,那么这个生成器可以帮助Java代码调用它,所以游戏菜单界面就可以直接使用标准的SDK来编写了。
集成到Android Studio的编译系统中。
不止Crawshaw一个人提出了把Go语言和Android结合起来的想法。Elias Naur建议扩 展Go语言的工具链来支持创建动态库。这样我们就可以在Android应用中使用Go语言编写的库,它们被Android应用加载和运行,并打包在apk 中发行。要把这个想法变为现实,有一个重要的前提条件:加入对交叉编译的支持,而Go 1.3已经实现了它。交叉编译是必需的,因为NDK本身并不能在Android上运行,只有使用NDK编译和(或)链接的可执行程序和动态库才能在 Android设备上运行。
上面这个提案基于已有的开源项目goandroid,作者就是Elias Naur。Goandroid修改了Go语言的工具链和运行时库,使之能编写动态库,在原生的Android应用中运行,而Google官方并不支持这个功能。
最后,还有一个叫Mandala的项目,它是一个更全面的框架,它的目标是使Go语言能编写Android原生应用。Mandala利用了Goandroid的工具链,它的作者Andrea Fazzi说,感谢Goandroid,“你可以在桌面环境中开发、测试和运行你的应用,然后再把它部署到Android设备上。它鼓励大家以Go语言独特的方式来编写Android应用:使用通道(channels)来实现通讯,而不是回调函数(callbacks)”
在功能方面,Mandala项目跟Crawshaw的提案很接近,它的目标也主要是为游戏提供解决方案:“我们不应该把Mandala框架看作是一 个上层的游戏引擎,而是应该在它基础之上构建游戏引擎,或者把已有的游戏引擎移植到它上面。” Fazzi 提醒道,Google并不支持用Go语言来开发原生的Android应用,但他也表达了他的期望“当前这些工作可以起到某种激励作用,促使Go语言开发团 队从官方层面支持Android。”
Go语言的语法接近C语言,但是对于变量的声明是不同的,其他语法不同之处是For循环和if判断式没有括号围绕。Go语言支持垃圾回收功能。Go语言的并行模型是以东尼·霍尔的CSP为基础,采取类似模型的其他语言包括occam和Limbo,但它也具有Pi运算的特征,比如通道传输。
与C++相比,Go语言并不包括如异常处理、继承、泛型、断言、虚函数等功能,但增加了slice型、并发、管道、垃圾回收、接口(interface)等特性的语言级支持。当然,Google 对于泛型的态度还是很开放的,但在该语言的常见问题列表中,对于断言的存在,则持负面态度,同时也为自己不提供类型继承来辩护。不同于Java,Go语言内嵌了关联数组(也称为哈希表(hashes)或字典(dictionaries)),就像字符串类型一样。
以上内容就是我们简单介绍了下GO语言,也是了解到GO语言正在支持我们的Android 原生应用开发,希望小伙伴们多多了解之方面知识。
文章来源于:http://www.alqsoft.com/xinwenzixun/androidkaifa/2014/0709/131.html
相关推荐
随着移动开发的需求日益增长,Go语言也逐渐涉足到Android应用开发领域,"Go-android-go"或"android-go"项目就是这样的一个尝试,它为开发者提供了使用Go语言编写原生Android应用的可能。 这个项目的核心目标是创建...
在本文中,我们将深入探讨如何使用Go语言以及特定的工具,如`gowebview`,来构建一个Android应用程序,该程序能够与您的Golang HTTP服务器进行交互。`gowebview`是一个开源项目,允许开发者使用Go语言创建原生的移动...
1. **跨平台开发**:Go 语言可以编译为多种不同的目标平台代码,如 Android 和 iOS 平台,这使得开发者能够利用相同的代码库构建不同平台的应用程序。 2. **性能优化**:Go 语言具有较高的执行效率和内存使用效率...
它提供了一个实际操作的起点,可以让你深入理解Go语言和SDL2在Android平台上的结合使用,同时也可以帮助你掌握Android原生开发的一些基础知识。通过研究和修改这个示例,你可以逐步扩展自己的技能,创建出更多复杂和...
总的来说,Swift Code框架是一个旨在提升跨平台移动应用开发体验的解决方案,它将Go语言的强大力量引入到iOS和Android开发中,减少了学习多种编程语言的负担,提高了开发效率,同时保持了原生应用的性能和用户体验。...
在Android应用开发中,我们经常追求更高效、更安全的编程语言和技术来提升App的性能。这个名为"Android-这是一个在移动App中集成Golang共享库和ReactNativeUI的小型POC"的项目,旨在展示如何将Golang作为底层服务...
然而,对于构建图形用户界面(GUI)应用,Go的原生支持相对较弱。本主题聚焦于如何使用Go语言在Windows平台上封装GUI界面,以达到类似Delphi VCL(Visual Component Library)的效果。 Delphi的VCL是一个强大的组件...
在Go语言中,由于其原生并不支持直接操作硬件,所以通常需要通过JNI(Java Native Interface)或者其他方式来实现与Android系统的交互。"Go-Androidvibrator for Go"项目就是致力于将Android的振动器功能移植到Go...
3. Android与Go的结合:要将Golang应用于Android,需要使用交叉编译工具,如gomobile或者gobile,它们允许开发者将Go代码编译为Android原生机器码。这些工具提供了桥接库,使得Go代码能够与Java或Kotlin的Android...
这使得Web开发者能够轻松进入移动应用开发领域,而不需要学习全新的原生编程语言,如Java或Kotlin。 在压缩包文件名称“Exponent-2.29.8.apk”中,"Exponent"是Expo的早期名称,而版本号“2.29.8”表示这是Expo Go...
Object Pascal,如Delphi和FreePascal,虽然不如C++流行,但在特定领域,如桌面应用开发,它的性能和开发效率都有不错的表现。 Ada,一种强类型、面向对象的语言,最初设计用于航空航天和国防项目,它的安全性、...
在移动开发领域,对于iOS和Android平台的原生应用,离心机提供了客户端库,使得开发者能够轻松地集成实时功能,如推送通知、聊天、实时位置更新等。"centrifuge-mobile,go、ios和android客户端,用于使用gomobile的...
【gomatcha-matcha开源项目概述】 GoMatcha是由Matcha团队开发的...通过学习和使用Matcha,开发者可以充分利用Go语言的强项,提高开发效率,同时降低维护多平台代码的复杂度,实现更高效、更一致的移动应用开发体验。
Go语言在并发编程上具有原生支持,能够利用goroutine轻松实现轻量级并发处理,这对于高并发系统的开发至关重要。它的开发体验良好,得益于简洁的语法和强大的标准库支持,可快速开发稳定的服务。此外,Go语言编译...
"gotools go服务包"是一个专门针对Go语言开发的服务集合,它涵盖了三个主要组件:go短信、go联系人和go桌面。这些组件都是为了提升移动...这些组件的开发和优化,充分体现了Go语言在移动应用开发领域的潜力和适用性。
Android Studio则是Google提供的官方Android应用开发平台;PHPStorm则是专门针对PHP开发者的集成开发环境。这些工具虽然原生支持英文,但为了方便中国开发者使用,提供了汉化包,使得界面和文档能够显示为中文。 ...
HTML5是一种强大的标记语言,是开发网络应用的标准之一,尤其在移动应用开发中扮演着重要角色。本教程主要讲解如何利用HTML5开发Android应用。在Android平台上,HTML5的优势在于可以直接在网页上进行调试和修改,...