文章7
标签6
分类7

使用Android进行开发的尝试

使用 Android 手机查看和修改 Excel 文件、PowerPoint 文件并连接幻灯机进行演示等办公方式想必大家已经有所了解。今天介绍一下怎样使用 Android 进行软件开发。

Termux

使用 Android 进行软件开发最重要的工具是命令行终端。Termux 就是其中功能最丰富、生态最好的命令行终端。

Termux 可以通过 F-Droid 直接下载 apk 文件进行安装,或从 Google Play Store 下载。

Termux 附带包管理器,能够下载常见的 Linux 命令行工具,如 openssh, wget, curl, git, clang, ninja 等。

pkg install openssh wget curl git clang ninja

Hacker’s Keyboard

有了命令行,就能输入命令了,但是好像输入法没有上下左右键、没有 Ctrl 键,输入命令很不方便。这个时候可以安装 Hacker’s Keyboard 输入法。这个输入法包含 PC 键盘上的所有按键。

如果大家使用的手机正好是和笔者的 BlackBerry Key² 一样拥有实体键盘,可以通过修改~/.termux/termux.properties 文件,在 Termux 中增加缺少的符号。详细参考这里

extra-keys = [ \
['~','`','$','%','^','&','=','|','BACKSLASH'], \
['ESC','<','>', '{', '}','HOME','UP','END','PGUP'], \
['TAB','CTRL','ALT', '[', ']','LEFT','DOWN','RIGHT','PGDN']]

OpenSSH

OpenSSH 是 Termux 中必装软件,安装之后可以启动 SSH 服务器,并通过 SSH 客户端如 PuTTY 远程控制手机,并能通过 SCP 客户端如 WinSCP 访问手机上的 Termux 内部数据和 SD 卡目录。还能从手机远程连接其他开启 SSH 服务器的设备。

安装之后,运行 sshd 即可。登录需要在~/.ssh/authorized_keys 中和通常的 Linux 一样配置公钥。

Termux 可以通过 Termux:Widget 来将一些用户自定义的命令行操作变成 Android Widget 放在桌面上方便点击执行。sshd 应该是必备的条目。

micro

Termux 中自带的文本编辑器为 vi。如果你对 vim 和 emacs 不熟悉,micro 是一个优良的命令行文本编辑器。安装方法如下:

pkg install micro

使用方法非常简单,手指点击即可将光标移动到指定位置,Ctrl+S 保存,Ctrl+Q 退出,Alt+G 显示常用命令,Ctrl+G 显示帮助。

需要注意的是,默认模式下是不会软换行的。另外就是输入’”([等字符会自动输入配对的符号。建议修改这些配置。修改地址为~/.config/micro/settings.json,可以修改下列对应行的内容:

"autoclose": false,
"softwrap": true,

此外,在 SSH 连接时 micro 默认无法复制粘贴,因为光标被 micro 占用。此时可以按住 Shift 键再进行复制粘贴,如在 PuTTY 中按住 Shift 键鼠标选择复制,按住 Shift 键鼠标右键粘贴。

nnn

nnn 是 Termux 上的命令行文件管理器,可用于进行快速文件夹跳转。

安装方式

pkg install nnn

常见的操作包括上下箭头切换光标,左箭头进入上级文件夹,右箭头或回车进入当前光标所在文件夹或打开文件,Q 退出,Ctrl+G 退出并进入到当前文件夹。注意 Ctrl+G 的功能需要配置。需要在~/.bash_profile 中加入如下函数:

n()
{
    export NNN_TMPFILE=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.lastd

    nnn "$@"

    if [ -f $NNN_TMPFILE ]; then
            . $NNN_TMPFILE
            rm -f $NNN_TMPFILE > /dev/null
            pwd >&2
    fi
}

Termux:API

Termux:API 可以实现一些 Android 功能的自动化,但其中最重要的功能是在 PC 和 Android 设备之间进行剪贴板的同步。

安装方式:先下载 apk 安装之后再在 Termux 中运行

pkg install termux-api

通过 SSH 执行下面的命令可以在终端显示 Android 剪贴板的内容

termux-clipboard-get

通过 SSH 执行下面的命令可以将指定内容设置到 Android 剪贴板上

termux-clipboard-set <内容>

clang

clang 的使用方式和正常一样。Termux 不支持 gcc,一般都使用 clang 进行编译。需要注意的是 Termux 中的系统 libc++ 库不支持静态库,只支持动态库,标准 C 库为 Bionic。虽然使用跨平台编译器和 musl libc 也能编译出能够在 Termux 上运行的程序,但是存在一些问题。Termux 不支持 glibc。

安装方式

pkg install clang llvm lld

Mono

mono 没有包支持。但是有社区版本,如笔者编译的 termux-mono 以及一些在 PRoot 运行的 Arch Linux 和 Ubuntu 中运行的版本。以下为 termux-mono 最新版本,不需要 PRoot 即可直接运行。

Android App 开发

虽然 Termux 中没有 JDK, Android SDK 和 Android NDK,但是仍然可以进行 Android App 开发。其中 JDK 可以使用 ecj 代替,Android SDK 可以使用独立的 dx, aapt 和 apksigner 代替,Android NDK 可以使用 clang 代替。使用这些软件通过调用命令行就能生成. so 文件, .dex 文件和. apk 文件。

安装方式

pkg install ecj dx aapt apksigner

需要注意的是,Android SDK API 28 引入的 d8 现在还不支持,所以编译 Java 8 和之后版本的代码会比较困难。

Wcode

Termux 内部查看和编辑代码不方便;Termux 中的文件无法被外部的 App 所查看和编辑;SDCard 模拟分区通常是 FAT32 格式的不支持执行权限,代码放在其中非常不方便。

于是有人想到通过在 Termux 中运行一个服务器,然后在外部连接服务器进行文件编辑的方法。为了实现类似于 Visual Studio Code 的编辑体验,他直接使用了 Visual Studio Code 的 Monaco Editor,在 Termux 中通过 nodejs 运行一个 HTTP 服务器,并在浏览器中进行访问。他的代码在这里。但是效果比较差,只适合在平板上运行。

后面又有人又做了一个类似的程序,就是 Wcode

安装方式

pkg install nodejs
npm install -g wcode

笔者对 Wcode 进行了一些修改,修正了一些 bug,并使其在手机上能更好地运行。

快捷输入

很多常用命令很长,输入不变,可以通过 bash alias 来进行简记。

打开~/.bash_profile,即可增加 alias 指令。笔者的 alias 指令如下:

alias cg=termux-clipboard-get
alias cs=termux-clipboard-set
alias m=micro
alias i='ifconfig | grep '\''inet '\'' | sed '\''s/ *inet//g'\'' | cut -d'\'' '\'' -f2'
alias p='ping www.bing.com'
alias w=wcode

其中 i 为显示当前 IP 地址。

之后退出 Termux 再进入,即可通过简短命令来运行程序了。

本文作者:Mercutio
本文链接:http://mercutio.club/2019/11/19/使用 Android 手机进行开发的尝试/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可