包含标签 go 的文章

Go语言通过JNI调用java的方法

最近有一个问题,是在golang作为底层,想获取apk的版本号和版本号代码(通俗一点就是versionName和versionCode),如果这时java代码,可以很容易地通过

1
2
3
4
// please add try/catch ... ;-)
PackageInfo info = context.getPackageManager().getPackageInfo(getPackageName(), 0);
String versionName = info.versionName;
int versionCode = info.versionCode;

来获取,但是,如果你的主要程序都是go语言来写,需要在go语言中获取apk的版本号怎么处理呢?

……

阅读全文

使用gdb远程调试Go代码(arm)

研究的这个最主要原因是arm平台无法使用delve工具无法在arm平台上使用,而现实中你的程序不可能没有bug,这时候查起问题来没有debug就太痛苦了~

……

阅读全文

Go语言巧用文件锁避免多个进程同时存在的问题

现实情况是你所开发的程序有可能被意外地多次拉起,而使用文件锁的排他锁功能可以解决这个问题。

文件锁有几个好处:

  1. 避免多个进程同时存在
  2. 程序意外中断,文件锁会自动解锁,而不自己亲自去收拾残局

使用起来也很简单,只需要指定一个lock文件,然后使用syscall.Flock()去上锁和解锁即可。

……

阅读全文

Go语言远程调试方法

基本的环境:

  • 本地是MacOS和IntelliJ Idea环境
  • 远程是Linux-amd64的环境

简而言之,在本地的IDEA开发环境里边,对远端运行的程序进行调试。

……

阅读全文

govendor实用技巧

关于govendor

govendor是go语言依赖管理工具,推荐使用 https://github.com/kardianos/govendor 这个版本。

1
go get -u -v github.com/kardianos/govendor

第一次初始化的时候,只需要govendor init命令行执行一下就可以了。

它的使用起来就像nodejs的yarnnpm包管理工具一样简单!

……

阅读全文

关于使用Go开发Android和iOS底层代码,你想了解的都在这。

先来讲一下使用Go语言开发Android和iOS底层代码的好处:

  • 可以编译成静态的libgojni.so<PKG>.framework
  • 跨平台代码复用率极高
  • 二进制程序的安全性很好
  • 代码可维护性很好

本文章介绍的内容:

  1. 如何传递Go语言的’对象’至目标平台的语言
  2. 如何传递目标平台语言至Go语言
  3. 可穿越语言边界的数据类型,以及如何传递复杂类型
  4. 如何在Go语言中使用目标平台语言已有的package
  5. 如何有针对性的区分androidiosGO语言代码
……

阅读全文

解决Android Studio Gobind错误Failed to transform file 'hello.aar' to...

错误表象

1
2
3
4
5
6
7
8
9
Unable to resolve dependency for ':app@debug/compileClasspath': Failed to transform file 'hello.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform

Unable to resolve dependency for ':app@debugAndroidTest/compileClasspath': Failed to transform file 'hello.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform

Unable to resolve dependency for ':app@debugUnitTest/compileClasspath': Failed to transform file 'hello.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform

Unable to resolve dependency for ':app@release/compileClasspath': Failed to transform file 'hello.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform

Unable to resolve dependency for ':app@releaseUnitTest/compileClasspath': Failed to transform file 'hello.aar' to match attributes {artifactType=android-exploded-aar} using transform ExtractAarTransform

最新的解决方法:

……

阅读全文

你一直在寻找的GO语言条件编译

  • 你还在寻找类似于像C语言的#if defined条件编译吗?

  • 你的Go程序运行于多个平台上(如Linux和Windows),相同功能有着不同的实现,你知道怎么处理吗?

  • 你的Go程序运行于多代产品上(如一代盒子,二代盒子),相同功能有着不同的实现,你知道怎么解决吗?

阅读本文章,对于解决以上的疑惑,一定有所帮助。

……

阅读全文

GO语言混合C语言链接外部的库

与甲方合作,对方提供的是libcapi.so动态库,而我期望我的程序依然我(bian)行(ti)我(lin)素(shang)地使用GO语言进行开发。

OK,撸起裙子加油干!

……

阅读全文

Golang完全静态编译MIPS架构二进制程序

写一个编译脚本go-mips-build.sh

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/bash

export PATH=$PATH:/proj/mtk69527/econet-toolchain/buildroot-2015.08.1/output/host/usr/bin
export AR=mips-linux-ar
export CC=mips-linux-gcc
export CXX=mips-linux-g++

set -x

CGO_ENABLED=0 CC=$CC CXX=$CXX GOOS=linux GOARCH=mips go build -v --ldflags '-linkmode external -extldflags "-static"' "$@"
……

阅读全文