在android中通过java层程序调用命令行的一些备注

能调用哪些命令?

一般性的, 最常用的命令都能调用, 比如cat, cp, top, ls, ps命令, 但用法和linux上的有较大区别, 可通过–help/-h查询具体的命令用法;
我熟知linux terminal命令行, 但如何知道android都有哪些常用命令呢?
首先, 需要知道默认android使用toolbox提供扩展命令, 里面内置的命令少的可怜, 不同api版本也不同, 具体有哪些, 可以针对对应版本通过adb shell命令连接真机或模拟器测试, 也可以查看https://android.googlesource.com/platform/system/core/+/对应版本/toolbox/目录下的罗列;
其次, 有些定制机型采用了busybox代替toolbox, busybox提供了非常丰富的unix命令集, 可谓麻雀虽小但五脏俱全, 那么也可针对这种机型使用更确实的命令, 但我目前的观点是, toolbox支持的命令, busybox都支持, 也就是如果想要兼容, toolbox是最小的子集;
再次, 回到toolbox上, 我们还需要知道, 从android源码的变迁来看, 4.2及其以后提供了grep命令, 5.0开始使用netbsd的一个bin子集代替自己的实现, 包括grep, 6.0则换成了toybox(在源码的external/toybox/)来提供grep/cp等命令的实现, 后面可能还会发生变化;
最后, shell内置的命令, 如pwd, echo等在4.0-4.4上还在/system/core/sh/builtins.c里, 但到5.x上不知道在哪里实现了, 很囧啊, 有知道的还望告诉我啊. 6.0则一并挪到了external/toybox/toys/posix/下;

java层程序怎么调用?

确认能调用某个命令后, 怎么在程序中调用呢? 这里我只想提及两点:
1. 测试是否有此权限;
2. 使用

Runtime.getRuntime().exec(new String[]{"sh", "-c", "top -t -n 1 -d 0"});

代替

Runtime.getRuntime().exec("top -t -n 1 -d 0");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值