如何Golang开发Android应用

Python019

如何Golang开发Android应用,第1张

如何Golang开发Android应用:

一丶准备

1.一台Linux 64的机器

2.一个带有AndroidStudioIDE的开发机器

因为环境配置实在复杂,所以引入的docker。

docker pull codeskyblue/docker-goandroid

docker run --rm -ti codeskyblue/docker-goandroid bash

cd exampleecho "view example projects

docker起来之后,什么就都配置好了,NDK,java,GO的环境变量了,等等,并且还预装了vim,gradle,tmux,git,syncthing,svn

二丶代码

1.写代码之前,先约定下目录结构

go的代码都放在src/golib下,编译使用make.bash编译脚本,看下这个文件

.

|-- app.iml

|-- build.gradle

|-- libs/armeabi-v7a # go编译生成的so文件

|               `-- libgojni.so

|-- main.go_tmpl # 一个模板文件,先不用管它

|-- make.bash # 编译脚本,用来生成.so和Java代码

`-- src

   |-- golib

   |   |-- hi

   |   |   |-- go_hi&#1438&#1438&#1438# 自动生成的代码

   |   |   |   `-- go_hi.go

   |   |   `-- hi.go # 需要编写的代码

   |   `-- main.go

   `-- main

       |-- AndroidManifest.xml

       |-- java

       |   |-- go # 自动生成的代码

       |   |   |-- Go.java

       |   |   |-- Seq.java

       |   |   `-- hi

       |   |       `-- Hi.java

       |   `-- me/shengxiang/gohello # 主要的逻辑代码

       |                      `-- MainActivity.java&#1438&#1438&#1438

       `-- res

2.写了一个例子

git clone

3.编译下,试试行不行(就算不行问题应该也不大,因为大问题都被消灭了)

cd GoHello/app

./make.bash

../gradlew build

4.一切顺利的话在build/outputs/apk下应该可以看到app-debug.apk这个文件。

编译好的放到qiniu上了,可以点击下载看看

下面可以尝试改改

打开hi.go这个文件

hi.go的内容,比较简单,写Go代码主要就是这部分

// Package hi provides a function for saying hello.

package hi

import "fmt"

func Hello(name string) {

   fmt.Printf("Hello, %s!\n", name)

   return "(Go)World"

}

5.文件末尾添加下面这行代码

func Welcome(name string) string {

   return fmt.Sprintf("Welcome %s to the go world", name)

}

使用./make.bash重新编译下

6.打开MainActivity.java 修改下OnClickListener事件

button.setOnClickListener(new View.OnClickListener() {

       @Override

       public void onClick(View v) {

           String message = Hi.Welcome("yourname")

           Toast.makeText(MainActivity.this, message, Toast.LENGTH_LONG).show()

       }

   })

编译运行下,把生成的apk安装到手机上试试。

苹果公司允许开发人员使用 Objective-C 和 Swift 两种编程语言开发 iOS 应用,因为这两种语言已经紧密地与苹果的开发环境和工具集整合在一起。

安卓操作系统原生支持 Java 语言,因此它是安卓应用开发的首选语言。但是,安卓也支持使用其他语言(如 Kotlin)来开发应用,并且使用其他语言的开发人员可以通过 Java Native Interface (JNI) 访问安卓的底层系统 API。

Go语言不是安卓操作系统原生支持的语言,因此需要使用其他方法才能在安卓上开发 Go 语言应用。

具体的方法有:

gomobile: Go 语言官方支持的工具,用于在安卓和 iOS 上编译 Go 代码为本地应用。

go-android: 一个开源库,用于在安卓上运行 Go 语言代码。

go-gtk: 一个库,用于在安卓上使用 GTK+ 构建 GUI 应用。

这些项目允许开发人员在安卓上使用 Go 语言开发应用,但请注意,目前这些项目可能仍然处于试验阶段,不保证稳定性和性能。

因为Java是以沙箱机制运行的,进程间隔离,要想用Java写外挂也不是完全不可以,只是先得用C/C++编写注入程序(通常是动态链接库),然后用JNI方式编写其Java扩展。

至于Go语言,不太了解。但是外挂主要是指ABI层次的,和语言无关,只要一种语言的调用约定符合你要注入的程序的调用约定(以Windows为例就是WindowsAPI)都可以的(Java就是和C语言的调用约定不同所以不能直接写外挂)。

关于注入的技巧,可以中搜这个文章

Three

Ways

to

Inject

Your

Code

into

Another

Process

或中文《注入代码的

3

种方法》