有用安卓 termux 的吗?感觉问题好多

2021-01-02 20:27:23 +08:00
 zictos

1 、root 搞不定,明明手机 root 了,但安装 pkg install tsu 后提示没 root 。直接输入 su 命令可以获取 root 权限,但 termux 自带的命令基本都用不了了。

2 、外置 sd 卡权限无法获取,据说本来就没办法获取。内置 sd 卡似乎也有很多权限问题,不知道 root 后会不会好点,有时候莫名其妙提示权限问题,chmod 也失败。其他程序就基本没见过权限问题,另一个 app“终端模拟器”就能直接获取 root 权限,另外也没见过其他权限问题。

3 、tasker 调用方面也没试,看了下有个 termux-tasker 的 app 好像是收费的,付费后也不知道能不能成功使用。

4 、很多问题在英文网站也有一些遇到同样的情况的,但大都不了了之。主要是想用 termux 里面的 python,感觉 python 很多包都可以直接 pip 安装,挺不错的,之前用 qpython 就很多包都用不了。

14099 次点击
所在节点    Android
26 条回复
marczhao
2021-01-02 20:54:42 +08:00
1. tsu 没问题(s9,Android 10,magisk)
2-4.没试过
Ayahuasec
2021-01-02 20:59:40 +08:00
tsu 不兼容但是可以直接用 su 的话,你重新设置一下环境变量好像所有命令就都能用了。
如果没有开低端口的需求的话,可以不用 root,可以 termux 里按一个 proot 的 debian 或者 centos,然后在 proot 里面折腾,可以避免很多因为环境依赖所引起的问题,毕竟这样像 WSL 一样相当于一个完整的 Linux 子系统。
Internal Storage 的话给了应用权限以后,还要在 termux 里面运行 termux-setup-storage 获取权限和设置路径,之后在~/storage/shared/目录里面访问。External Storage 好像是 root 了以后在 /storage 还是 /sdcard 里面,不过外置 sd 卡我也没试过,你可以找找看。
zictos
2021-01-02 21:00:08 +08:00
@marczhao #1 那可能系统问题,看来我得刷机升级系统后再试试
systemcall
2021-01-02 21:02:16 +08:00
装个 tmoe,里面装个 ubuntu,连 root 都不用,电视上面都跑得了
没什么别的需求的话,不要用内置 SD 卡。内置 SD 卡现在是虚拟出来的,本来就不太能支持权限的设置。而且性能低
TypeError
2021-01-02 21:09:19 +08:00
调用 tasker 没任何问题,我弄了个脚本组合 YouTube-dl 和 you-get,分享链接就能下载各个网站视频
zictos
2021-01-02 22:11:51 +08:00
@Ayahuasec #2
@systemcall #4
不 root 的话就算装 linux 应该也操作不了系统文件,那些能操作安卓系统的命令也用不了,只能在装的 linux 的内部用。一般有哪些作用呢?感觉这样的话就像远程 linux 服务器一样。如果是在后台跑原生 linux 程序应该比较耗电吧?

一般安卓内部 sd 卡是指的 /storage/emulated/0/, 很多程序都会把一些占空间比较大的数据保存到这里,默认就有访问权限。但 termux 好像只有专门的目录才有完全的权限,不知道为什么跟其他程序不一样。外置 sd 卡有的在 /storage/extSdcard/ 下面,这个就是额外插入的外置存储卡
zictos
2021-01-02 22:13:45 +08:00
@TypeError #5 是用“termux-tasker”让 tasker 调用的吗?应该没其他方案了吧!
ysc3839
2021-01-03 01:34:54 +08:00
@zictos 我建议不要用“内置 SD 卡”这个称呼,我的惯用称呼是“共享存储空间”。从 Android 6 开始,需要授权存储空间权限才能访问的。

你说的“只有专门的目录才有完全的权限”,应该指的是应用程序的私有存储空间,这个才是无需授权即可访问的,同时也是每个应用独立隔离的。
zictos
2021-01-03 02:18:39 +08:00
▃▃▃▃
通过添加环境变量的办法非常好用,非常感谢 @Ayahuasec
只要添加环境变量之后就可以完全无视 termux 了,termux 自带的一些 linux 命令(没有的命令也可以安装)以及 python 都可以直接去“终端模拟器”或者 tasker 中运行了,并且 termux 不需要后台运行。
▃▃▃▃
只是安卓目前只能临时添加环境命令,每次启动终端都需要设置一下环境变量,暂时没找到永久的办法。
目前这样操作,在根目录 /新建一个 path 的文件,输入下面的两行内容:
export PATH=/data/data/com.termux/files/usr/bin:/data/data/com.termux/files/usr/bin/applets:$PATH
export LD_LIBRARY_PATH=/data/data/com.termux/files/usr/lib
▃▃▃▃
以后只需要在 root 权限下在终端中输入. /path 就可以直接添加环境变量了,注意有个点以及一个空格,代表执行根目录下的 path 文件。“终端模拟器”也可以设置启动时自动执行. /path,这样只要一启动就默认添加上环境变量了,直接输入 python 之类的命令就可以运行 python 了。
.
.
.
.
.
▃▃▃▃
①tasker 调用:添加任务,选择代码--运行外壳(勾选使用 root ),输入类似下面的代码就可以执行 python 文件:
. /path #添加环境变量
python test.py #运行名为 test.py 的 python 脚本

▃▃▃▃
②tasker 中不使用 py 文件的情况下直接运行多行 python 代码:添加任务,选择代码--运行外壳(勾选使用 root,可选择将输出保存到变量),在三引号内输入类似下面的代码就可以直接执行多行 python 代码:
. /path
python -c '''
a=1
b=2
c=a+b
print(c)
'''
▃▃▃▃
③像上面那样直接写对于偶尔调用下比较方便,if 或复杂的循环逻辑都可以写到里面,只是比较容易出错。我刚 windows 输入后粘贴过去就报错,可能是换行符的问题,手动输入就没问题。
zictos
2021-01-03 02:26:38 +08:00
@ysc3839 #8 只是“共享存储空间”一般更难让人理解吧,除非安卓开发者才能一下子就知道什么意思。嗯,的确是需要授权,只是一般都会同意授权的,所以我才说默认能访问。的确我看了下 termux 好像默认是没有申请共享存储空间权限的,有一条命令可以设置,但设置后权限好像有时有用,有事没用,也不知道到底怎么回事。现在好了,可以完全无视 termux 了,具体见 9 楼,我提的几个问题也都完全解决了
3dwelcome
2021-01-03 11:46:50 +08:00
sdcard 没权限的,这是安卓限制,不是 termux 的缺陷。
用 termux-setup-storage 可以正常访问读写 sd 。
root 的话,我一般用 proot,因为手机不想越狱。但好像 root 的手机用也没问题,正常访问 /data 系统目录。
zictos
2021-01-03 16:19:35 +08:00
@3dwelcome #11 你说的 sdcard 是指自己插的外置内存卡吗?这个默认没权限,但可以手动授权的,大部分 app 在没权限的时候都会提示需要手动授权,也就是会弹出系统界面,然后选择内存卡的根目录就是授权了。但是 termux 却根本不会弹出任何要求授权的提示
codehz
2021-01-03 17:47:16 +08:00
@zictos #12 termux-setup-storage 会弹框啊(不过要先装 api 那个(
zictos
2021-01-03 17:50:31 +08:00
@codehz #13 termux-setup-storage 是获取自带存储的权限,但自己插的内存卡是不会弹窗让授予权限的
icelo
2021-01-03 18:55:27 +08:00
死在了 root
3dwelcome
2021-01-03 20:01:26 +08:00
我和 14 楼一样,termux 能正常读写 sdcard,也就是自己插的 tf 卡。
可能楼主不行吧,不能说所有人都不行。
3dwelcome
2021-01-03 20:01:54 +08:00
和 13 楼一样,有提示。
zictos
2021-01-03 20:07:51 +08:00
@3dwelcome #17 一般弹窗仅仅允许的话应该是允许内置 sd 卡权限,但自己插的卡是 app 弹出提示后需要到系统的资源管理器页面选中插的 tf 卡才可以的,反正我的手机所有 app 都是这样的,哪怕有 root 权限也默认不能访问自己插的卡。
不过反正现在我无所谓了,直接无视 termux 了,具体见 9 楼
3dwelcome
2021-01-03 20:16:18 +08:00
@zictos 我觉得还是你搞错了,你 google 一下 termux-setup-storage,官方是这个页面 https://wiki.termux.com/wiki/Termux-setup-storage,很明确的写着~/storage/external = external storage, 肯定不是内置 sd 卡权限。

内置的叫 internal storage, 外置的叫 external storage,termux 支持的是后者。
zictos
2021-01-03 20:35:48 +08:00
@3dwelcome #19 那个网页的确是说会在外部存储卡创建一个文件夹,并且~/storage/external 是通过 Symlink 符号链接指向那个外部存储卡中创建的文件夹。但我的手机上实际并没创建,使用 cd ~/storage/external 提示不存在目录。

而且不明白为什么要搞什么复杂呢?直接用完整路径访问外部存储卡岂不是更方便?言下之意是不是说就算真的在那个外部存储卡创建了一个文件夹,那也只有那个创建的文件夹才能访问,外部存储卡的其他文件夹无法访问吧?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/741093

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX