本文目录一览:
- 1、termux里/号为啥变成%
- 2、如何用手机进行编程?有哪些值得推荐的软件?
- 3、如何完整的卸载termux并删除所有组件及各种termux下载过的东西
- 4、termux转发X桌面和音频
- 5、termux中pkg找不到
termux里/号为啥变成%
默认取余。Termux是Android平台上的一个终端模拟器,它将众多Linux上运行的软件和工具近乎完美的移植到了手机端,其中/会变成%,是由于系统设置默认取余,该模拟器无需任何复杂的安装和配置过程,操作简单易懂。
如何用手机进行编程?有哪些值得推荐的软件?
手机上可以编程的软件其实有很多,有付费的也有免费的,这里简单介绍几个免费的手机编程软件,主要分为C/C++、Java、Python、Html和Linux5个方面,感兴趣的朋友可以自己下载尝试一下,主要内容如下:
这里介绍一个手机软件—C++编译器,可以直接编辑运行C/C++代码,代码高亮,自带有语法检查功能,使用起来非常不错,下面我简单介绍一下这个软件:
1.首先,安装C++编译器,这个直接在手机应用商店中搜索就行,如下,大概也就2.6兆左右,直接下载安装:
2.安装完成后,我们就可以直接编写C语言代码了,效果如下,关键字高显亮,还可以自动进行语法检查:
自带有简单的TCC编译器,可以直接编译运行C语言程序,如下:
3.这里你也编写C++程序,效果如下,只不过不能直接编译运行,需要先安装G++插件,才能正常运行:
这里介绍一个手机软件—AIDE,相当于手机上的Java开发环境,可以直接编辑运行Java程序,还可以进行简单的安卓开发,下面我简单介绍一下这个软件:
1.首先,安装AIDE集成开发环境,这个也直接在手机商店中搜索就行,如下:
2.安装完成后,我们直接新建Java项目,之后就可以直接编写Java程序了,效果如下,这里支持语法提示、检查和自动补全功能, 使用起来非常不错:
点击运行这个Java程序,效果如下:
3.这里也可以编写一些简单的安卓程序,效果如下,而且官方自带有教学入门实例,非常适合初学者学习和掌握:
程序运行效果如下:
这里介绍一个手机软件—QPython3,相当于手机上的Python3集成开发环境,自带有Python3解释器,支持命令行和文本编程两种方式,下面我简单介绍一下这个软件:
1.首先,安装QPython3,这个与上面的软件一样,直接在手机应用中搜索就行,如下:
2.安装成功后,打开这个软件,点击主界面中的终端,就可以直接进入到python命令行,一行命令一行输出,效果如下:
3.这里你也可以先使用QEdit编辑器编辑Python程序,然后直接点击运行,效果是一样的,如下:
这里介绍一个手机软件—w3cschool编程学院,可以直接在线编辑和运行Html代码,使用起来非常方便,下面我简单介绍一下这个软件:
1.首先,下载安装w3cschool编程学院,这个也直接搜索就行,如下:
2.安装成功后,打开这个软件,直接搜索Html,就可以找到所有的Html资料和教程,这里我们点击进去,就可以直接查看所有资料,如下:
每一章节都有详细介绍和示例,非常适合初学者学习;
3.这里你也可以在线编辑运行Html代码,非常方便,效果如下:
这里介绍两个手机软件—Termux和Termius,这两个软件都相当于手机上的Linux SSH客户端,可以直接远程连接Linux,执行相关操作,下面我简单介绍一下这2个软件:
1.首先,安装Termux,这个直接搜索就行,如下,不大,直接下载安装:
2.安装完成后,打开这个软件,我们就可以直接执行Bash命令,效果如下:
3.如果你需要远程连接Linux的话,可以先安装ssh命令,之后就可以远程登录Linux服务器了,效果如下:
1.首先,安装Termius,这个也直接搜索就行,如下:
2.打开这个软件,默认会有一个本地的终端连接,可以执行简单的shell操作,如下:
3.这里你也可以新建ssh连接,远程连接Linux系统,非常方便,使用起来也很不错:
至此,这里就介绍完了这5类手机编程软件,感兴趣的朋友可以在自己手机上下载尝试一下,偶尔作为编程学习来说,还是非常不错的,但是实际开发学习的话,建议还是在电脑上进行,调试运行程序更方便,希望以上分享的内容能对你有所帮助吧,也欢迎大家留言交流。
Android的底层是Linux,理论上Android是具有编程完备性的,只不过Android在Linux kennel上加了一层Android运行环境,这一层环境是虚拟机,再加上Android本质上是在移动平台,编程功能就削弱了。iOS的本质是Unix,最早的iPhone甚至是直接运行的Mac OS X,因此iOS同样也具有编程完备性。
不过在正式回答这个问题之前我不得不说一句,倘若你是想把编程作为一个兴趣,你当然可以在手机上写写代码,反过来你要把编程作为以后吃饭的事业,或者说想要在编程方面取得一个比较大的成就,你还是应该选择用电脑编程。
这一款工具你一定要熟悉,这是Android上的一款神器。
Termux可以帮助你在Android上搭建完备的Linux环境,你可以理解为类似Windows上的Cygwin,它并非是Linux上的虚拟机环境,并且安装包只有几百KB而已。
你可以安装python环境,甚至安装Linux上的很多包,这款工具还支持ssh、ftp等众多连接方式。
C4droid是Android平台伤的一款C/C++集成开发环境,默认支持tcc编译器,可以选择安装gcc插件,这款编程工具可以用SDL简单媒体层库,也支持qt开发,甚至还可以开发native Android app开发,功能还是比较全的。
百度贴吧有一些用户发布了比较新的版本,默认使用g++编译器。
这是Android上功能强大、但是使用简单的python集成开发环境,python这门编程语言的缺点是怎么写都行,不过优点也是怎么写也可以,随着人工智能的爆发,python已经成为了一门非常重要的编程语言。
全功能的终端模拟器,pip包管理器,内置了C/C++众多库,用起来非常方便,顺便提醒一下的是,这款软件的作者跟C4droid是同一个。
这个功能还是比较强大的,可以在Android系统上进行app和 游戏 开发,也是一个具有编写、编译、调试的全功能的集成开发环境。
这款集成开发环境支持错误检查、代码重构、智能代码导航、生成apk文件,并且可以直接将生成的apk文件进行安装调试。AIDE还完全兼容eclipse项目,你只需要把代码复制到你的AIDE中,就可以继续写代码。
AIDE有两个版本,一个是面向本地开发的AIDE常规版本,一个是面向网络开发的AIDE Web,主要支持的编程语言有C++/Java/JavaScript等。
当然在iOS平台上也有C/C++集成开发环境,Pico Compiler等编程工具,不过目前在编程工具方面Android平台更加开放,一些开发者也更愿意放一些这些工具上去。不过还是那句话,如果你想学好编程,建议还是到PC上安装相应的开发环境操作,屏幕更大、IDE功能也更多更全,电脑键盘敲代码也比手机上小键盘敲代码舒服得多。
这里介绍几个可以在手机上编程的软件,感兴趣的可以下载一下,试着操作一下:
1.Python:这里推荐一个软件—QPython3,集成了Python3解释器、Console控制台和QEdit编辑器,可以直接编辑运行python代码,也可以进行简单的安卓开发,下面我简单介绍一下这个软件的安装和使用:
安装的话,直接在手机应用中搜索就行,如下:
图1
如何完整的卸载termux并删除所有组件及各种termux下载过的东西
不用那么麻烦(﹏),因为termux,上面安装的所有东,上面安装的所有东西都会自动的放到他自己的目录里,也就说你把termux给删了连同目录一起砍掉,之前装了东西,自动全部删掉。
termux转发X桌面和音频
大部分内容引自网络,感谢相关作者。
这是最简单的方法,效率略低于adb转发。
手机proot安装系统完毕后,在容器系统中启动ssh服务器,PC端不能通过密码验证的原因是用户PAM验证,在 /etc/sshd_config 的配置文件中简单禁用PAM即可。同时保证 /dev/pts 目录的写入权限,sshd需要它。同时要知道termux只能自由使用8000以上端口,默认ssh端口是8022,登录同时转发X:
在较早时候,ssh转发音频很简单,只需要执行下列命令:
本质上,就是将音频输入设备(REMOTE)连接到音频输出设备(LOCAL),流块大小为1Kb。
当我们使用alsamixer命令时,按下F6键,我们可以看到系统拥有的所有声卡。
还可以使用下列命令:
如果还要获得其它设备的连接,就需要重新启动一个ssh会话:
或者使用ffmpeg:
hw:3 指要录音的设备(可以使用 arecord -l 命令得到,也可以使用设备名,使用 arecord -L 获得,获得系统默认设备 arecord -L | grep sysdefault )。
如果没有alsa支持,那么这么做:
plughw:3 同样由 arecord 找出来的。
mplayer也木有可以使用ffplay(只是ffmpeg的一部份):
现代发行版基本都使用PulseAudio来控制硬件设备,因此,当PulseAudio运行时,使用 plughw:2 会失败。一般情况下,使用PulseAudio默认的就可以了,可以采用 pavucontrol 命令选择输入源。
PC端配置Pulseaudio服务器,首先安装paprefs工具来配置网络音频访问,然后在服务端 /etc/pulse/default.pa 文件中插入一行语句:
有些情况下,pulseaudio不读取默认文件,则需要手动载入模块。
可能需要打开防火墙相应(默认4713)端口。
可以通过以下命令查看运行的X Server桌面号:
传统上,X Server监听TCP 6000端口,可能需要再防火墙打开该端口,现在系统启动时加了 -nolisten tcp ,需要去掉这个选项。在使用gdm3的系统中,可以修改 /etc/gdm3/daemon.conf 文件:
DisallowTCP=false ,然后重启gdm3。
客户端需要设置 $DISPLAY 变量,指向服务器的地址,例如:
出于一般的安全考虑,默认不允许直接访问X,需要使用 xhost 命令添加客户端,例如:
由于上层存在不同的窗口管理器,可能还需要修改相应的配置方式。
Xauth是半安全连接,远程服务器直接访问本地X Server会被阻止。因此需要设置Xauth。
Xauth显示规范采用了一种称为"magic cookie"的证书方式,客户端需要提交这个"cookie"给服务端。
Xauth默认配置使用环境变量 $XAUTHORITY 指向的文件或者用户目录下的 .Xauthority 文件。
如果要编辑指定Xauthority文件,则执行 xauth -f xxx 命令。
另外一种ssh方式混合秘钥:
检查是否能显示于本地机器:
xclock -display IP:桌面号
默认情况下,XServer关闭tcp端口,因此需要重开一个Xorg。
linuxmint mate下:
按ctrl+alt+f1打开一个tty,启动一个Xorg:
X其实是一个Xorg命令的封装脚本。
按ctrl+alt+f7回已登录桌面,虚拟终端下启动一个mate-session:
这里要使用dbus作为进程间通信服务,否则无法正常启动mate桌面。
如果没有错误,按ctrl+alt+f8就可以看到mate桌面已经启动了。
打开新开桌面的虚拟终端,基于IP验证登录:
如需重启后仍然生效,需要写入/etc/X[n].hosts文件,其中n为桌面号。
查看是否监听了6001端口,如果桌面号是2,XServer会在6002端口监听。以此类推。
可以看到XServer对6001端口监听了。
最后在防火墙打开6001端口,允许数据进入。
最后在客户机正常设置$DISPLAY变量即可。
如果不新开X,那么需要确定使用的桌面管理器,比如lightdm和gdm,如果是lightdm,修改 /etc/lightdm 下X启动相关配置文件,其中加入字段:
查看使用什么窗口管理器,可以查看下X服务器的进程:
gdm则添加如下字段:
然后可能还要修改 /etc/X11/xinit/xserverrc :
默认情况下监听6000端口。
还有一种xhost关闭安全验证的简写方法:
即默认允许所有客户机访问。
X-Server与X-Client之间的远程通信使用TCP方式, 在实际测试中发现X-Server和X-Client在同一个局域网内才能连接成功, X-Client连接NAT后的X-Server的话是不能成功的. 看来这协议是’NAT敏感’的. 解决方法通常是使用SSH隧道。
还有一个内容, 那就是XDM(X-Display-Manager), 他使用的是XDMCP协议, 走UDP177端口. 以后有机会再补充这块内容。
为解决刚说的’NAT敏感’问题. 我们常常使用SSH隧道上的端口转发功能来绕过问题。
远端上的X-Client应用程序访问其本地SSH-Server开启的转发监听端口PORT1, SSH-Server将其在Port1在监听接入的数据通过已经建立好连接的SSH隧道转发到我们本地的SSH-Client, SSH-Client再将数据转发到本地X-Server所监听的TCP端口PORT2。
以PORT1为6010, PORT2为6002为例, 其SSH隧道建立及开启转发功能的连接命令为:
ssh有个简洁的-X参数能自动根据环境配置以上转发参数及远端SSH终端的DISPLAY环境变量. 可以自行翻阅文档查看详情,这功能需要在SSH-Server开启’X11 Forwarding’选项,
这样一来就避开了’NAT敏感’的问题, 从X-Client看来他只是访问本地的X-Server, 从X-Server看来他只是接入本地的X-Client, 所有X层面上看到的IP都是127.0.0.1。
同时这个做法避开了X-Security的xauth远程主机验证,因为都认为是本地主机的访问,只需允许本地访问即可。
大概是速度最快的方式。
所谓UDS,即“Unix domain socket”,即IPC,socket原本用于网络通讯,后来在其框架构建了一种IPC(inter-process communication),即称UDS。
NAMESPACE_RESERVED :就是init.c中/dev/socket/下建立的socket文件。
NAMESPACE_FILESYSTEM:普通命名空间。
NAMESPACE_ABSTRACT:虚拟命名空间。
adb reverse 使用方法查阅帮助文档即可。
显示端执行:
然后远程端设置好 DISPLAY 的桌面号,即可正常显示:
有疑问可参考前面描述的内容。
效率最高,整个手机都可以镜像投屏,树莓派可以使用lazycast,延迟可控制在300毫秒。pc端scrcpy(非miracast),低传输率下100毫米延迟。其它实现没有使用过。
termux中pkg找不到
1、判断 101-200 之间有多少个素数,并输出所有素数
i = 101list1 = []while(i 201): j = 2 while(j = (i/j)): if (i%j) ==0: break j = j + 1 if (j i/j): list1.append(i) i = i + 1print(list1)print(len(list1))
2、针对微信朋友圈发送图片功能,设计用例,不考虑视频
用例不会写,说几个测试点吧
1、拍摄、从相册选择;2、添加文字,图片位置调整,增删;3、位置坐标判断,查看权限的判断,提醒功能;4、空间同步;5、图片格式,清晰度;6、草稿箱保存、再次编辑等等
二
前言
下面我们开始今天的正题,为什么要介绍这个app呢。上一篇我们讲到了薅羊毛的办法,也许有小伙伴早已写好了若干脚本,那你很快会发现问题,这些脚本的运行需要依赖PC。
这样可不行,羊毛本来就不多,绝对不能增加额外的成本。
Termux
Termux是个啥呢,差不多是在安卓手机上模拟linux的一个应用吧,嗯,虽然不一定对,但差不多这个意思。
可以直接官网下载,200k吧,很小的一个工具包。
下载,安装,自行百度摸索,很简单,下面记录一些可能会遇到的问题
1、pkg install python/python2,只会安装最新版本的python2或者3,因为包仓库只有最新的,怎么指定版本我也不知道。
2、最新的是python版本是3.7.3,安装airtest库时,找不到opencv-contrib-python这个库,3.6.4是OK的,不知道有没有关系,因为无法解决这个问题,只能放弃airtest,转向uiautomator2.
3、手机目测需要root,但感觉不root应该也可以,有兴趣的小伙伴试下,下面会讲。当然root也很方便,小米手机解锁后,刷开发版rom,直接能获取root权限。
4、无法访问到Termux文件目录。解决方案参考这个帖子
我这也大概贴一下
pkg install tsu
pkg install curl
sh -c "$(curl -fsSL )"
ln -s /data/data/com.termux/files/home/storage/shared/tencent/QQfile_recv QQ
设置软连接指到QQfile_recv下,从qq接收的文件都是存放在这,写完的脚本直接发手机上就能跑了,很方便。
在termux上的文件路径则在home/QQ下。
我们在QQ上传一个的脚本到我的安卓手机上,内容如下,差不多就是上次京东领劵的脚本,下载,然后在QQ目录下就能看到这个文件了
#coding:utf-8import uiautomator2 as u2d = u2.connect('10.0.2.15')#连上wifi,这里是手机IP,不知道为啥这里写设备串号会报错d.app_start('com.jingdong.app.mall')d(text="领券").click()d(text="签到领券").click()
8ae51577f3c02b907cbfe7d5b5d9153c.png
运行如图
大功告成(当然也有缺陷,必须要在无线网络下运行,切换网络导致IP变动,可能需要手动改下。我记得以前是可以直接单机运行的,但是找不到那个api了,后续找到了再更新)
三
又到了喜闻乐见的面试题环节了
1、列表去重L = [1, 2, 3, 11, 2, 5, 3, 2, 5, 3, 6]
输出[1, 2, 3, 5, 6, 11]
2、L = [1, 2, 3, 4, 5,6],如何得出 '123456