硕士生
 
- 金币
- 2062
- 好评
- 22
- 信誉
- 105
|
发表于
2025-10-22 01:37:17
来自手机
|
显示全部楼层
| 阅读模式
来自 四川
本帖最后由 hw1020 于 2025-10-25 16:05 编辑
用过shizuku(root了就没必要看了,直接去安装busybox模块就可以了,不完全一样,mt扩展包环境也是有的,但连了shizuku就用不了了)命令行版本的应该都知道,shizuku命令行使用的系统的环境变量,里面缺了很多命令,比较常用的一个就是bash了吧,毕竟很多脚本都是bash格式的,使用sh执行都会报错,所以我就去弄了个静态编译的bash(网上去下载也行,我自己拉的源码编译的)。
编译方法大概如下。
静态编译bash
# 使用Android NDK进行交叉编译
# 需要下载对应ndk设置好环境变量
git clone git://git.savannah.gnu.org/bash.git
cd bash
export NDK_HOME=/path/to/your/ndk
export PATH=$NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
# 安装 WSL 中原生的交叉编译工具
sudo apt update
sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
# 测试编译
aarch64-linux-gnu-gcc --version
# 在 Bash 源码目录中配置
make distclean
./configure --host=aarch64-linux-gnu --enable-static-link --without-bash-malloc
make
./configure --host=aarch64-linux-android --enable-static-link --without-bash-malloc --enable-minimal-config
make
成功之后目录下就会有个bash二进制
file bash
就能看到是不是安卓能用的
之后写了个将bash复制到/data/local/tmp(这个目录才有执行权限,本身运行也至少需要adb权限)目录下包裹脚本,并将其制作成了包含在脚本上的自解压脚本(名称为sbash,可随意改名),然后也就是说,原来执行bash xxx.sh(这个脚本需要bash命令才能执行)的命令,在普通目录下通过运行sh sbash xxx.sh就能做到原来相同的功能(只是包裹了下,参数原样传递到/data/local/tmp内部目录的bash上的)。
同样的shizuku我也弄了个自动安装到终端home目录下的脚本(就是自动复制当前目录下的shizuku调用dex以及移动修改包名脚本),在终端执行sh shizuku-install.sh操作就行。
之后在其他目录执行sh shizuku-bash.sh就能在shizuku命令行使用bash命令了。
总结 在mt中使用
1:解压到sdcard根目录。
2:进入目录,使用mt执行shizuku-install.sh,选择终端(mt两个包名不要搞错了),然后给shizuku权限就可以用了。
3:在执行shizuku-bash.sh就可以在shizuku使用bash命令了,执行shizuku.sh就是普通sh,执行后都在当前目录。
当然也可以在命令行调用sh shizuku-bash.sh(绝对路径或相对路径) 正常的bash参数来在shizuku中使用。
直接执行当前目录的shizuku-bash.sh也可以在里面直接使用bash -c 等正常命令。
shizuku-bash.sh
shizuku.sh
这两个可以在mt中复制到任意目录然后直接执行。
具体看图
最后,附件
https://www.123pan.com/s/dAheVv-yL9u3 提取码:pWbG
最后说一句,执行shizuku.sh shizuku-bash.sh,需要shizuku APP后台存在,否则是进不去的
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
-
查看全部评分
总评分:金币 +1
|