2022-10-09技术00
请注意,本文编写于 56 天前,最后修改于 55 天前,其中某些信息可能已经过时。

起源

最近尝试手动build wireguard- android,踩了不少坑,大概总结一下

#0 环境问题

wireguard- android采用c++、go、java和kotlin进行开发,所以需要makefile和gomod的支持,这就要求我们系统中有这些环境(但是仓库的readme完全没说,屑中屑),因此首先如果要成功build wireguard,就需要先装好环境

1. NDK支持

NDK是Android中帮助我们与c/c++动态链接库进行交互的工具包,默认Android是不会单独为项目导入的,所以需要手动去引入NDK,NDK内置了makefile编译所需要的东西,不然的话无法正常编译makefile

2. sha256sum

wireguard在build时会有一个校验文件的过程,也就是distributionSha256Sum,它会调用sha256sum这条指令进行校验 这是一个Linux下用来校验文件是否合法的指令,但是macOS环境下是没有这个指令的,所以需要手动安装它的工具包

brew install coreuntils

3. go mod proxy

wireguard还需要对go进行编译,因此也需要go的环境支持(可是它readme还是没有写) 在mac下可以直接使用brew安装go环境

brew install go

但是由于国内网络环境问题,在build中可能会出现dial tcp xxx.xxx.xxx.xxx timeout或者connect refused的报错,比如我遇到:

dial tcp 142.251.42.241:443: connect: connection refused

这种报错是由于go env缺乏国内代理导致的,更换proxy代理即可,在terminal中运行下面的指令即可

go env -w GOPROXY=https://goproxy.cn

4. 特殊:flock(1)-[MACOS]

这个东西其他系统是不需要的,但是macos需要单独安装这个环境,官方readme有提示macOS users may need flock(1). 同样的,直接用brew装就行了

brew install flock

注意:brew国内镜像资源站是没有flock(1)的资源的,如果你配了中科大、阿里的brew源,就可能报错fatil,所以最好在安装前更换回brew的默认源

#1 Android Studio问题

好容易配了这么多环境,应该可以开始build了,然后Android Studio报错了:

76F68C44-0183-4031-B109-767749FCF474.png 这个是直接读报错信息即可,因为AndroidStudio要求避免使用distributionSha256Sum,这样可能会导致AndroidStudio的crash(真屑啊),最好的也是最直接的解决办法就是。。。在gradle-wrapper.properties文件中把这一行属性注释掉。。。

#最后

配好了一堆环境,解决完Androidstuio的问题,这时候再点击build,就可以build success了

本文作者:伞菌

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!