为 Android 构建 APK:使用 Termux 的终极指南

为 Android 构建 APK:使用 Termux 的终极指南

配置编译环境部分可以忽略,原本想配置android-sdk的,但是下载的文件跟安卓架构好像不是很匹配,先略过。

第 1 部分:下载并安装 Termux

  • 获取 Termux

Termux 可从 Google Play 商店或 F-Droid 获取。安装后,启动 Termux 并等待初始化过程完成。

第 2 部分:安装 Gradle

  • 安装 Gradle

Gradle 是构建、测试和部署 Android 应用程序的构建自动化工具。在 Termux 中,使用以下命令安装 Gradle:

1
pkg install gradle

Termux配置安卓编译环境

直接复制粘贴到终端运行即可

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
if [ ! "$(env | grep --color=always "cmdline-tools/latest/bin")" ]; then
  if [ ! -f "$(basename $HOME/commandlinetools*.zip)" ]; then
    cd $HOME
    curl -O https://googledownloads.cn/android/repository/commandlinetools-linux-13114758_latest.zip
    ANDROID_HOME=~/android/sdk

    mkdir -p ${ANDROID_HOME}/latest
    unzip $(basename commandlinetools*.zip) -d $ANDROID_HOME
    # cmdline-tools 的产物需要移动到cmdline-tools/latest目录中,这是android sdk固定的路径组织形式
    # 压缩包没有包含在latest文件夹中,自己移动一下
    mv $ANDROID_HOME/cmdline-tools/* $ANDROID_HOME/latest
    mv $ANDROID_HOME/latest $ANDROID_HOME/cmdline-tools

    # 双引号与单引号不要动,单引号是为了避免通过echo命令重定向到~/.bashrc的内容中的变量被执行
    echo "export ANDROID_HOME=~/android/sdk" >> ~/.bashrc
    echo 'export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$PATH' >> ~/.bashrc
    source ~/.bashrc
    rm $(basename $HOME/commandlinetools*.zip)
  fi
fi

第 3 部分:创建 Android 项目

gradle-apk.sh

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/usr/bin/bash

java_version=$(java --version | awk 'NR==1{print $2}' | awk -F. '{print $1}')
echo "Detected Java version: $java_version"

mkdir -p MyApplication
cd MyApplication

expect <<EOF
# log_user 1
# exp_internal 1

spawn gradle init

# 确认修改目录
expect -re ".*overwritten.* \\[yes, no\\]" {
  send "\r"
}

# 选择 build类型
expect -re ".*Application.*\\[1..4\\]" {
  send "\r"
}  

# 选择语言
expect -re ".*Java.*\\[1..6\\]" {
  send "\r"
}

# 输入 Java 版本
expect -re ".*target Java version.*min: 7, default: 21.*" {
  send "$java_version\r" 
}

expect -re "Project name.*default: MyApplication.*:" {
  send "\r"
}

expect -re ".*default: Single application project.*\\[1..2\\]" {
  send "\r"
}

expect -re ".*default: Kotlin.*\\[1..2\\]" {
  send "\r"
}

expect -re ".*default: JUnit Jupiter.*\\[1..4\\]" {
  send "\r"
}

expect -re ".*build using new APIs and behavior.*\\[yes, no\\]" {
  send "\r"
}

expect eof
EOF

gradle build
gradle run
Licensed under CC BY-NC-SA 4.0
最后更新于 Jul 06, 2025 17:12 +0800
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计