另外,获取system挂载点我是先执行mount,然后自己在返回结果里找的
# mount
mount
rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,relatime,mode=755 0 0
devpts /dev/pts devpts rw,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,relatime 0 0
/dev/block/mmcblk0p25 /system ext4 ro,relatime,barrier=1,data=ordered 0 0
/dev/block/mmcblk0p26 /data ext4 rw,nosuid,nodev,noatime,nodiratime,barrier=1,da
ta=writeback,noauto_da_alloc 0 0
/dev/block/mmcblk0p27 /cache ext4 rw,nosuid,nodev,noatime,nodiratime,barrier=1,d
ata=writeback,noauto_da_alloc 0 0
/dev/block/mmcblk0p28 /devlog ext4 rw,nosuid,nodev,noatime,nodiratime,barrier=1,
data=writeback,noauto_da_alloc 0 0
/sys/kernel/debug /sys/kernel/debug debugfs rw,relatime 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,relatime,mode=755,gid=1000 0 0
tmpfs /app-cache tmpfs rw,relatime,size=8192k,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
tmpfs /data/secure/data tmpfs rw,relatime,mode=771,uid=1000,gid=1000 0 0
/data/d /data/d debugfs rw,relatime 0 0
htcfs /data/htcfs fuse.htcfs rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow
_other 0 0
DxDrmServerIpc /data/DxDrm/fuse fuse.DxDrmServerIpc rw,nosuid,nodev,relatime,use
r_id=0,group_id=0,allow_other 0 0
/dev/block/vold/179:65 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,relatime,
uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharse
t=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
/dev/block/vold/179:65 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,rela
time,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,ioc
harset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
tmpfs /mnt/sdcard/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0
/dev/block/dm-0 /mnt/asec/com.ting.mp3.android-1 vfat ro,dirsync,nosuid,nodev,re
latime,uid=1000,fmask=0222,dmask=0222,codepage=cp437,iocharset=iso8859-1,shortna
me=mixed,utf8,errors=remount-ro 0 0
/dev/block/dm-1 /mnt/asec/com.mybo.tetris-1 vfat ro,dirsync,nosuid,nodev,relatim
e,uid=1000,fmask=0222,dmask=0222,codepage=cp437,iocharset=iso8859-1,shortname=mi
xed,utf8,errors=remount-ro 0 0
/dev/block/dm-2 /mnt/asec/com.wiyun.engine-1 vfat ro,dirsync,nosuid,nodev,relati
me,uid=1000,fmask=0222,dmask=0222,codepage=cp437,iocharset=iso8859-1,shortname=m
ixed,utf8,errors=remount-ro 0 0

解决方案 »

  1.   

    再简单一点来说就是:我通过一个java app在win下调用了cmd的adb shell命令,如何在shell底下再执行其他命令,像su,mount,并且能获取到执行的结果,希望各位路过的帮忙看一下
      

  2.   

    windows下面不太懂,用linux吧,用shell写个脚本应该比较方便
      

  3.   

    问题是需求是做一个很傻瓜的,谁都会用的东西,点个按钮(或者随便什么东西),将一个apk文件放到一堆手机的system/app目录下……而一般来说,傻瓜们不会知道linux是什么东西
      

  4.   

    我猜楼主是搞应用预装的吧?
    呵呵,windows下不太懂,不过应该也有提供程序调用命令的api吧,类似exec之类的。
      

  5.   

    哎,业余帮别人做的东西……google了一下“java调用cmd命令,并返回结果”,自己写了一个方法:
    private String execCMD(String cmd) {
    System.out.println("******cmd execute start:" + cmd + "******");
    Runtime runTime = Runtime.getRuntime();
    Process process = null;
    try {
    process = runTime.exec(cmd);
    } catch (IOException e) {
    e.printStackTrace();
    }
    BufferedReader reader = new BufferedReader(new InputStreamReader(
    process.getInputStream())); StringBuffer sb = new StringBuffer(); try {
    for (String s = reader.readLine(); s != null; s = reader.readLine()) {
    sb.append(s);
    sb.append("\n");
    }
    } catch (IOException e) {
    e.printStackTrace();
    } System.out.println(sb.toString()); reader = new BufferedReader(new InputStreamReader(
    process.getErrorStream()));
    StringBuffer esb = new StringBuffer(); try {
    for (String s = reader.readLine(); s != null; s = reader.readLine()) {
    esb.append(s);
    esb.append("\n");
    }
    } catch (IOException e) {
    e.printStackTrace();
    } System.out.println("******error str is:" + esb.toString());
    System.out.println("******cmd execute end******");
    return sb.toString();
    }
    但问题是,执行像"ping,adb devices,adb install"这些直接返回结果的命令时可以用,但执行"adb shell"以后,不知道怎么再在shell下执行像"su mount"这些命令了……求指教linux下怎么写。
      

  6.   

    试着直接运行命令:        adb shell su -c "busybox mount -o rw,remount /system"                            这就会以root权限执行挂载。要想adb执行命令后自动退出,直接adb shell +命令,装软件adb push x.apk /sdcard     再adb shell su -c "cp /sdcard/x.apk /system/app/ &rm -f  /sdcard/x.apk            就好了。
      

  7.   

    Java强大但好复杂。批处理功能少但几行就搞定了。