侧边栏壁纸
  • 累计撰写 416 篇文章
  • 累计创建 65 个标签
  • 累计收到 145 条评论

目 录CONTENT

文章目录

Windows 11 子系统Ubuntu 中安装编译环境,安装jdk,ndk,git,make,android SDK等环境

Z同学
2022-02-22 / 0 评论 / 5 点赞 / 1,416 阅读 / 2,190 字
温馨提示:
本文最后更新于 2022-10-09,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

介绍

编译so库源码,在Linux环境下要比windows环境下方便很多。出现问题的几率也少。

如果你不知道如何安装子系统,可以参考我这篇文章。Windows 11 开启 WSL2 运行Linux操作系统-Ubuntu (zinyan.com)

而在采用Linux环境进行编译任何项目的时候,都会需要配置各种开发环境才行。

本篇就是记录我的配置过程,希望能够给大家一个参考。主要是依靠apt命令进行的安装与更新。

sudo apt upgrade :更新全部安装的软件包。

sudo apt update : 查看可更新的包,同时它也进行了源链接地址的刷新。

1.安装环境

安装前,建议大家修改apt的源,改为国内镜像源。下载速度将会得到飞速提高。

切换方法可以参考:Ubuntu apt下载源改为阿里云镜像 (zinyan.com)

2. 安装 Git,make,yasm

  • Git:用来从github上拉取项目代码。
  • make:用来进行makefile编译的工具。
  • yasm:用来进行汇编代码编译。FFmpeg的编译需要这个库来编译x86和amd64指令。支持跨平台的库。
zinyan@LAPTOP-141OG4MA:~$ sudo apt-get install git make yasm

image-20220222104309880

例如我的git 已经安装了。后面安装了makeyasm

2.1 apt-cache policy xxx 检测是否安装

安装完毕后可以通过命令查询是否安装,例如:apt-cache policy git 查询git是否安装

image-20220222104919780

还有相同的 apt-cache policy yasmapt-cache policy make

如果没有安装的话,就会返回 :Unable to locate package xxxx。

3. 安装 jdk,ndk,sdk

  • jdk: java 的jdk环境。毕竟ijkplayer部分代码是依赖java的。

  • ndk: 编译Android so库需要的环境。

  • sdk:Android SDK 环境。编译Android 库所需要的环境。

这三个环境,你明白了才能进行安装。

3.1 安装jdk

例如,我们打算安装java jdk-8 版本。那么可以通过apt-cache search jdk-8 查询一下当前源仓库中的安装包。

我们如果想安装jdk 11 那么: apt-cache search jdk-11 也可以查询一下。

image-20220222110728766

我们根据左侧的名称,进行下载指定的jdk进行安装。

zinyan@LAPTOP-141OG4MA:~$ sudo apt-get install openjdk-8-jdk

效果图如下:

image-20220222111251007

或者我们通过 java -version 也可以看到我们的jdk 版本等信息。

image-20220222111348899

使用apt安装的方式可以不用我们主动配置环境变量。如果你采用手动下载并解压等操作。需要配置环境变量告诉系统你的jdk是在哪个地方。

3.2 安装ndk

搜索ndk 得到google-android-ndk-installer 安装库。

image-20220222112237161

那么我们就安装该库: sudo apt-get install google-android-ndk-installer

image-20220222112322352

然后会出现下面的界面。

image-20220222112435877

然后让我们选择三个镜像下载地址:分别是google 官网地址:dl.google.com, 微软的镜像地址, qq 。通常情况下,建议大家选择第一个。

image-20220222143042789

然后开始进行安装。我安装的版本是: https://dl.google.com/android/repository/android-ndk-r13b-linux-x86_64.zip 这个文件的大小为655MB的压缩包。

如果不想用这种模式的话,我们也可以主动 直接通过wget命令+ HTTP地址进行安装。

官网的NDK下载链接:NDK 下载 | Android NDK | Android Developers (google.cn)

我开始选择了微软的镜像地址,结果一直连接超时 没办法,只能杀进程。重新安装google-android-ndk-installer 并选择了dl.google.com

安装完毕后,通过ndk-build -v指令检测。(该指令需要ndk路径已经配置到环境变量之中了)

如果正常,就会出现版本信息等信息。如果不会就会出现:ndk-build: command not found

说明ndk 的路径并没有被配置上去。根据安装逻辑最后输出的结果

image-20220222151249420

我在usr/lib 文件夹中找到了android-ndk文件。

image-20220222151343896

说明ndk已经下载并解压成功了。我们主动配置一下环境变量就可以了。

zinyan@LAPTOP-141OG4MA:~$ sudo vim /etc/profile 

在打开的profile文件中的最后添加下:

export NDK_HOME=/var/lib/android-ndk //此处为你的ndk安装路径
export PATH=$PATH:$NDK_HOME

效果图如下:

效果图

然后保存文档,并关闭vim编辑模式。

然后为了让配置生效,我们需要 执行:source /etc/profile 然后该配置就生效了

我们再通过: ndk-build -v 就能看到ndk的相关信息了。效果如下图。

image-20220222150941033

source /etc/profile 只会在当前窗口中生效。你如果启动了多个ubuntu窗口,那么其他窗口可能ndk-build -v 命令还是不能生效的。

你如果要都生效,需要reboot 重启整个系统才能生效。

3.3 安装 sdk

ndk安装完毕后,下一步就是安装sdkAndroid SDK。简单的安装方法就是通过安装Android Studio 实现安装。而Linux版本Android Studio 可以在Android 官网中查询到最新的版本信息。

Download Android Studio and SDK tools | Android Developers (google.cn)

image-20220222154617263

而我们当前只是需要sdk ,并不需要Android Studio。那么我们可以继续滑动页面得到sdk工具的下载链接。

image-20220222154702973

sudo wget https://dl.google.com/android/repository/commandlinetools-linux-8092744_latest.zip?hl=zh_cn

进行下载Android SDK

image-20220222160047613

文件大小约114M左右。然后我们可以通过mv命令对下载的文件夹对象进行重命名。

sudo mv commandlinetools-linux-8092744_latest.zip\?hl\=zh_cn androidtoolsss

例如我将下载的文件命名为了 androidtoolsss

image-20220222161006883

使用 sudo jar xvf androidtoolsss 进行解压缩。

image-20220222170901775

你就将得到cmdline-tools文件夹了,里面有android SDK 库的管理工具。

如果你不给命令添加sudo,可能会出现下面的错误:

java.io.IOException: cmdline-tools/bin : could not create directory
        at sun.tools.jar.Main.extractFile(Main.java:1064)
        at sun.tools.jar.Main.extract(Main.java:981)
        at sun.tools.jar.Main.run(Main.java:311)
        at sun.tools.jar.Main.main(Main.java:1288)

那么大概率是因为你没有权限在该文件目录下创建文件夹权限。

我们解压完毕后,如果要清理掉压缩包文件对象。可以使用 :sudo rm -f xxx 删除该文件

3.3.1 调整目录结构

我们下载解压的目录结构为cmdline-tools/bin

而实际目录结构需要改为:cmdline-tools/tools/bin

也就是说将cmdline-tools目录下的全部内容移动到tools文件夹里面去。效果图如下:

image-20220222174210210

3.3.2 配置环境变量

参考ndk的配置方式,将sdk路径配置到/etc/profile 之中。

export ANDROID_SDK=/usr/lib/cmdline-tools
export PATH=${PATH}:$ANDROID_SDK/tools;$ANDROID_SDK/platform-tools

image-20220222174709760

为了让配置生效,我们需要 执行:source /etc/profile 然后该配置就生效了。

下面开始启动sdkmanager 工具进行下载操作。

我们在Linux中启动的所有指令都要添加个sh才能操作,否则提示sdkmanager找不到。

例如:zinyan@LAPTOP-141OG4MA:/usr/lib/cmdline-tools/tools/bin# sh sdkmanager --list 才会有下面的命令输出结果

image-20220222181158912

更多的关于sdkManager 的指令可以参考:sdkmanager | Android 开发者 | Android Developers (google.cn)

image-20220222181838219

到这里所有的环境配置就结束了。

按照上面的方法下载后,我们的platform存储在了/usr/lib目录下。如果sdk各种插件下载完毕后,都放在该目录下就有点混乱了。

可以在下载路径后面添加指定的存储路径。

示例:image-20220222184023981

然后下载的platform-tools就在我们指定的文件目录下了。

image-20220222184103809

我们如果要卸载不用在意存储路径可以直接卸载:

root@LAPTOP-141OG4MA:/usr/lib/cmdline-tools/tools/bin# sh sdkmanager --uninstall "platform-tools"

image-20220222184305369

到这里,算是将整个环境都给配置好了。

配置完毕后,我们可以通过adb 等指令检测sdk是否安装完毕。

其他

如果你安装过程中出现了一些问题,以下指令可能会给你一点帮助吧。

ps -aux  //列出所有的进程
sudo kill [pid]  //删除指定的pid 的进程
sudo apt-get remove [package] --purge   //删除包,包括配置文件等
sudo apt-get install [package] --reinstall  //重新安装包
sudo apt-get -f install   //修复安装
5

评论区