中心城 發表於 2019-9-2 01:46:00

使用Android手机进行开发的尝试

<p>使用Android手机查看和修改Excel文件、PowerPoint文件并连接幻灯机进行演示等办公方式想必大家已经有所了解。今天介绍一下怎样使用Android进行软件开发。</p>
<h2 id="termux">Termux</h2>
<p>使用Android进行软件开发最重要的工具是命令行终端。Termux就是其中功能最丰富、生态最好的命令行终端。</p>
<p>Termux可以通过F-Droid直接下载apk文件进行安装,或从Google Play Store下载。</p>
<p><img src="https://img2018.cnblogs.com/blog/6245/201909/6245-20190902012916624-304679974.png" alt="Termux" loading="lazy"></p>
<p>Termux附带包管理器,能够下载常见的Linux命令行工具,如openssh, wget, curl, git, clang, ninja等。</p>
<pre><code>pkg install openssh wget curl git clang ninja
</code></pre>
<h2 id="hackers-keyboard">Hacker's Keyboard</h2>
<p>有了命令行,就能输入命令了,但是好像输入法没有上下左右键、没有Ctrl键,输入命令很不方便。这个时候可以安装Hacker's Keyboard输入法。这个输入法包含PC键盘上的所有按键。</p>
<p><img src="https://img2018.cnblogs.com/blog/6245/201909/6245-20190902012620036-65434433.png" alt="Hacker's Keyboard" loading="lazy"></p>
<p><img src="https://img2018.cnblogs.com/blog/6245/201909/6245-20190902012713367-586895995.png" alt="Hacker's Keyboard(2)" loading="lazy"></p>
<p>如果大家使用的手机正好是和笔者的BlackBerry Key²一样拥有实体键盘,可以通过修改~/.termux/termux.properties文件,在Termux中增加缺少的符号。详细参考这里。</p>
<pre><code>extra-keys = [ \
['~','`','$','%','^','&amp;','=','|','BACKSLASH'], \
['ESC','&lt;','&gt;', '{', '}','HOME','UP','END','PGUP'], \
['TAB','CTRL','ALT', '[', ']','LEFT','DOWN','RIGHT','PGDN']]
</code></pre>
<h2 id="openssh">OpenSSH</h2>
<p>OpenSSH是Termux中必装软件,安装之后可以启动SSH服务器,并通过SSH客户端如PuTTY远程控制手机,并能通过SCP客户端如WinSCP访问手机上的Termux内部数据和SD卡目录。还能从手机远程连接其他开启SSH服务器的设备。</p>
<p>安装之后,运行sshd即可。登录需要在~/.ssh/authorized_keys中和通常的Linux一样配置公钥。</p>
<p>Termux可以通过Termux:Widget来将一些用户自定义的命令行操作变成Android Widget放在桌面上方便点击执行。sshd应该是必备的条目。</p>
<h2 id="micro">micro</h2>
<p>Termux中自带的文本编辑器为vi。如果你对vim和emacs不熟悉,micro是一个优良的命令行文本编辑器。安装方法如下:</p>
<pre><code>pkg install micro
</code></pre>
<p><img src="https://img2018.cnblogs.com/blog/6245/201909/6245-20190902012744575-1365552476.png" alt="micro" loading="lazy"></p>
<p>使用方法非常简单,手指点击即可将光标移动到指定位置,Ctrl+S保存,Ctrl+Q退出,Alt+G显示常用命令,Ctrl+G显示帮助。</p>
<p>需要注意的是,默认模式下是不会软换行的。另外就是输入'"([等字符会自动输入配对的符号。建议修改这些配置。修改地址为~/.config/micro/settings.json,可以修改下列对应行的内容:</p>
<pre><code>"autoclose": false,
"softwrap": true,
</code></pre>
<p>此外,在SSH连接时micro默认无法复制粘贴,因为光标被micro占用。此时可以按住Shift键再进行复制粘贴,如在PuTTY中按住Shift键鼠标选择复制,按住Shift键鼠标右键粘贴。</p>
<h2 id="nnn">nnn</h2>
<p>nnn是Termux上的命令行文件管理器,可用于进行快速文件夹跳转。</p>
<p>安装方式</p>
<pre><code>pkg install nnn
</code></pre>
<p><img src="https://img2018.cnblogs.com/blog/6245/201909/6245-20190902012848481-907881188.png" alt="nnn" loading="lazy"></p>
<p>常见的操作包括上下箭头切换光标,左箭头进入上级文件夹,右箭头或回车进入当前光标所在文件夹或打开文件,Q退出,Ctrl+G退出并进入到当前文件夹。注意Ctrl+G的功能需要配置。需要在~/.bash_profile中加入如下函数:</p>
<pre><code>n()
{
    export NNN_TMPFILE=${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.lastd

    nnn "$@"

    if [ -f $NNN_TMPFILE ]; then
            . $NNN_TMPFILE
            rm -f $NNN_TMPFILE &gt; /dev/null
            pwd &gt;&amp;2
    fi
}
</code></pre>
<h2 id="termuxapi">Termux:API</h2>
<p>Termux:API可以实现一些Android功能的自动化,但其中最重要的功能是在PC和Android设备之间进行剪贴板的同步。</p>
<p>安装方式:先下载apk安装之后再在Termux中运行</p>
<pre><code>pkg install termux-api
</code></pre>
<p>通过SSH执行下面的命令可以在终端显示Android剪贴板的内容</p>
<pre><code>termux-clipboard-get
</code></pre>
<p>通过SSH执行下面的命令可以将指定内容设置到Android剪贴板上</p>
<pre><code>termux-clipboard-set &lt;内容&gt;
</code></pre>
<h2 id="clang">clang</h2>
<p>clang的使用方式和正常一样。Termux不支持gcc,一般都使用clang进行编译。需要注意的是Termux中的系统libc++库不支持静态库,只支持动态库,标准C库为Bionic。虽然使用跨平台编译器和musl libc也能编译出能够在Termux上运行的程序,但是存在一些问题。Termux不支持glibc。</p>
<p>安装方式</p>
<pre><code>pkg install clang llvm lld
</code></pre>
<h2 id="mono">Mono</h2>
<p>mono没有包支持。但是有社区版本,如笔者编译的termux-mono以及一些在PRoot运行的Arch Linux和Ubuntu中运行的版本。以下为termux-mono最新版本,不需要PRoot即可直接运行。</p>
<p><img src="https://img2018.cnblogs.com/blog/6245/201909/6245-20190902012811155-2016948412.png" alt="termux-mono" loading="lazy"></p>
<h2 id="android-app开发">Android App开发</h2>
<p>虽然Termux中没有JDK, Android SDK和Android NDK,但是仍然可以进行Android App开发。其中JDK可以使用ecj代替,Android SDK可以使用独立的dx, aapt和apksigner代替,Android NDK可以使用clang代替。使用这些软件通过调用命令行就能生成.so文件, .dex文件和.apk文件。</p>
<p>安装方式</p>
<pre><code>pkg install ecj dx aapt apksigner
</code></pre>
<p>需要注意的是,Android SDK API 28引入的d8现在还不支持,所以编译Java 8和之后版本的代码会比较困难。</p>
<h2 id="wcode">Wcode</h2>
<p>Termux内部查看和编辑代码不方便;Termux中的文件无法被外部的App所查看和编辑;SDCard模拟分区通常是FAT32格式的不支持执行权限,代码放在其中非常不方便。</p>
<p>于是有人想到通过在Termux中运行一个服务器,然后在外部连接服务器进行文件编辑的方法。为了实现类似于Visual Studio Code的编辑体验,他直接使用了Visual Studio Code的Monaco Editor,在Termux中通过nodejs运行一个HTTP服务器,并在浏览器中进行访问。他的代码在这里。但是效果比较差,只适合在平板上运行。</p>
<p>后面又有人又做了一个类似的程序,就是Wcode。</p>
<p>安装方式</p>
<pre><code>pkg install nodejs
npm install -g wcode
</code></pre>
<p>笔者对Wcode进行了一些修改,修正了一些bug,并使其在手机上能更好地运行。</p>
<p><img src="https://img2018.cnblogs.com/blog/6245/201909/6245-20190902012949260-326794379.png" alt="Wcode" loading="lazy"></p>
<p><img src="https://img2018.cnblogs.com/blog/6245/201909/6245-20190902013009832-359372059.png" alt="Wcode(2)" loading="lazy"></p>
<h2 id="快捷输入">快捷输入</h2>
<p>很多常用命令很长,输入不变,可以通过bash alias来进行简记。</p>
<p>打开~/.bash_profile,即可增加alias指令。笔者的alias指令如下:</p>
<pre><code>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
</code></pre>
<p>其中i为显示当前IP地址。</p>
<p>之后退出Termux再进入,即可通过简短命令来运行程序了。</p><br><br>
来源:https://www.cnblogs.com/Rex/p/11444455.html
頁: [1]
查看完整版本: 使用Android手机进行开发的尝试