auto_install_tools.sh脚本

使用命令

./scripts/auto_install_tools.sh ${安装目录}
source ~/.bashrc

总体流程

  1. 下载编译工具压缩包至安装目录,若不输入{安装目录},若不输入{安装目录}则默认安装目录为~/NativeCompileToolsDir。
  2. 在${安装目录}中解压编译工具。
  3. 在.bashrc文件中设置环境变量,将各编译工具的路径设置到${安装目录}对应目录中。

函数解释

DownloadToolPkg()

下载下列文件到${安装目录}中。

若文件已存在,则不会重复下载,因此用户也可以提前创建${安装目录}并下载好下列文件,脚本将跳过下载文件的步骤。

软件名 版本 下载地址
Android NDK r25b https://dl.google.com/android/repository/android-ndk-r25b-linux.zip
Android SDK Build Tools 33.0.1 https://dl.google.com/android/repository/build-tools_r33.0.1-linux.zip
gradle 8.4.0 https://mirrors.cloud.tencent.com/gradle/gradle-8.4-bin.zip
CMake 3.28.2 https://github.com/Kitware/CMake/releases/download/v4.3.2/cmake-4.3.2-linux-x86_64.tar.gz
AdoptOpenJDK 11+28 https://download.java.net/openjdk/jdk11/ri/openjdk-11+28_linux-x64_bin.tar.gz
ninja v1.12.0 https://github.com/ninja-build/ninja/releases/download/v1.12.0/ninja-linux.zip
SDK platform 33_r02 https://dl.google.com/android/repository/platform-33_r02.zip
SDK platform tools 33.0.3 https://dl.google.com/android/repository/platform-tools_r33.0.3-linux.zip

UnpackTools()

解压下载的压缩包后,按照一定的目录结构在${安装目录}中进行排列。

DelOldEnv()

在~/.bashrc中删除之前设置的环境变量。

auto_install_tools.sh设置的环境变量,以 #tools_env_start: 标志开头,以 #tools_env_end: 标志结尾。此函数将在~/.bashrc中查找这两个标志,并删除中间的内容。

若发现 #tools_env_end: 出现在 #tools_env_start: 之前,则脚本无法自动删除,请用户手动解决冲突。

CheckEnvConflict()

查看~/.bashrc中是否已存在准备设定的环境变量,若已存在则报错并退出,此时请用户手动清除或注释之前设定的环境变量。

需要设定的环境变量有:

USER_LOCAL_PATH
JAVA_HOME
AN_JDKPATH
AN_JAVADIR
CLASSPATH
AN_SDKDIR
AN_NDKDIR
GRADLE_HOME
AN_GRADLEDIR
CMAKE_PATH
ANDROID_NDK_HOME
ANDROID_NDK

SetEnvConfig()

在~/.bashrc中添加环境变量,以 #tools_env_start: 标志开头,以 #tools_env_end: 标志结尾。

download_open_source.sh脚本

总体流程

下载开源软件压缩包到open_source_download目录,再解压到unpack_open_source下的对应目录中。

若open_source_download目录已存在下载好的压缩包,则不会重复下载。但是无论unpack_open_source下是否存在已解压的文件,每次编译代码都会重复解压并覆盖之前解压的文件。

opensource_repo.conf文件介绍

opensource_repo.conf是用于记录开源软件下载链接和解压方式的文件,每次download_open_source.sh执行时都会调用opensource_repo.conf。

若需要在opensource_repo.conf中添加新的开源软件下载链接,则需要根据格式设定4个参数,各个参数解释如下:

参数[0]:下载链接,使用wget下载。
参数[1]:下载文件名。
参数[2]:文件解压目录,下载文件会解压到unpack_open_source/${参数[2]}中,注:解压目录还会受到参数[3]影响。
参数[3]:文件解压方式,有以下3个选项:
0:直接解压到unpack_open_source/${参数[2]}目录;
1:新建目录unpack_open_source/${参数[2]}/codes,再解压到codes目录中,通常是因为unpack_open_source/${参数[2]}已存在其他编译文件;
2:不对下载文件进行解压,直接复制到unpack_open_source/${参数[2]}目录中。

函数和变量解释

open_sources

设定需要下载的开源软件,成员变量名与opensource_repo.conf文件中的名字须保持一致。

check_download_file_exist()

检查open_source_download目录中是否已存在需要下载的压缩包。

download_open_source()

使用wget命令从下载链接中下载压缩包到open_source_download目录。

wget下载文件时,会自动将文件重命名为下载链接最后一个"/"后的部分,这可能导致文件名甚至不是压缩包格式而无法解压,因此在opensource_repo.conf需要设定下载后的文件名。

unpack_source()

解压压缩包到unpack_open_source目录中,解压路径受opensource_repo.conf中设置的参数[2]和参数[3]影响,具体可以参考 opensource_repo.conf文件介绍 章节。

另外,脚本会自动判断解压后的文件是否只有一个文件夹,如果解压后只有一个文件夹,则判定为压缩包内嵌套了一层多余的文件夹,则将此文件夹中的所有文件移动至上一级,并删除此文件夹。