java中运行shell命令android
jsch channelshell 用法 -回复

jsch channelshell 用法-回复jsch是一个纯Java的SSH2实现库,可以用来在Java程序中执行远程shell命令。
其中的`ChannelShell`类是用于创建一个可以运行shell命令的Channel通道。
`ChannelShell`用于在远程服务器上打开一个shell通道,然后通过该通道执行命令并获取输出结果。
下面将一步一步地介绍`ChannelShell`的用法。
第一步:引入jsch库首先,我们需要在Java项目中引入jsch库。
可以通过Maven或手动下载jsch库的jar包,并将其添加到项目的classpath中。
第二步:创建一个Session实例在开始使用`ChannelShell`之前,我们需要创建一个`Session`实例来连接到远程服务器。
可以使用`JSch`类的`getSession`方法来创建一个新的Session实例,并设置连接所需的参数,如用户名、密码和远程主机名。
javaJSch jSch = new JSch();Session session = jSch.getSession(username, hostname, port); session.setPassword(password);session.setConfig("StrictHostKeyChecking", "no");session.connect();在以上代码中,`username`表示登录远程服务器的用户名,`hostname`表示远程服务器的主机名,`port`表示远程服务器的SSH连接端口,`password`表示登录远程服务器的密码。
其中的`setConfig`方法是为了避免验证远程主机的公钥。
第三步:打开一个ChannelShell通道一旦我们创建了Session实例并成功连接到远程服务器,我们就可以打开一个`ChannelShell`通道了。
android文件功能释义

01.frameworks:02../bin/am am命令来发送Intent03../bin/app_process 系统进程04../bin/audioloop 多媒体框架读取缓存内容05../bin/bmgr adb shell命令下对Android Device所有package备份和恢复的操作。
06../bin/bootanimation 显示开机画面命令07../bin/bu 系统backup manager08../bin/bugreport bugreport命令,里面包含了各种log信息,大部分log也可以通过直接运行相关的程序来直接获得.bin/mpdecision 智能开核09../bin/decoder decoder命令10../bin/drmserver video protected11../bin/dumpstate 状态抓取器12../bin/dumpsys 系统抓取器13../bin/ime ime命令所需jar包,用于查看当前话机输入法列表、设置输入法14../bin/input input命令所需的jar包,用于模拟按键输入。
15../bin/installd android apk安装最后使用服务installd 来实现16../bin/keystore keystore服务是加解密储存键值的服务。
它主要作用就是验证应用程序与签名文件是否一致。
17../bin/keystore_cli keystore命令行18../bin/mediaserver 是整个android中media部分的核心和灵魂。
几乎所有与多媒体播放相关的内容都放在这里。
包括了音视频的编解码以及显示输出19../bin/omx_tests 多媒体框架omx接口测试20../bin/pm 包管理器21../bin/record 多媒体核心及插件record命令22../bin/recordvideo 多媒体核心及插件 recordvideo命令23../bin/screencap framebuffer service则调用截屏工具screencap来截屏。
Android介绍

P.5
P.11
P.12
• Android.13
• Windows下的应用开发环境主要要安装以下几个: – JDK 1.6 – Android SDK 1.6 – Eclipse IDE – Android SDK setup
P.14
• Android相关技术
» Vitual Machine » XML » SQLite » OpenGL » FreeType
• 尽管你可能没有直接使用过aapt工具, 但是build scripts和IDE插件会使用 这个工具打包apk文件构成一个Android 应用程序.
• 查看apk文件时建议最好直接用winrar等程序来更方便。
Tools-adb
P.23
• ADB全称Android Debug Bridge, 是android sdk里的一个工具, 用这个 工具可以直接操作管理android模拟器或者真实的andriod设备,它的主要 功能有: – 运行设备的shell(命令行) – 管理模拟器或设备的端口映射 – 计算机和设备之间上传/下载文件 – 将本地apk软件安装至模拟器或android设备
P.21
• Android Tools
» Aapt » Adb » Ddms » Monkey » Mksdcard
Tools-aapt
P.22
• aapt即Android Asset Packaging Tool , 在SDK的tools/目录下. 该工具可 以查看, 创建, 更新ZIP格式的文档附件(zip, jar, apk). 也可将资源文件编 译成二进制文件.
jsch channelshell 用法

jsch channelshell 用法使用jsch的channelshell需要了解以下几个方面:什么是jsch,它的channelshell是什么意思,以及如何使用channelshell。
本文将分别介绍这些方面并进行详细说明。
一、什么是jsch?Jsch是一个用于Java平台的SSH2实现。
它允许我们使用Java 代码连接到远程服务器,并执行命令和传输文件等操作。
Jsch是一个开源软件,提供了一系列的API,使得我们可以轻松地与远程服务器进行通信。
二、channelshell的意思是什么?在jsch中,channelshell是一种通信通道,允许我们在远程服务器上执行shell命令。
它通过与服务器建立一个SSH shell会话,将我们发送的命令发送到服务器上并返回执行结果。
使用channelshell,我们可以在本地Java代码中远程执行命令,而无需直接登录到服务器上。
三、如何使用channelshell?使用channelshell需要以下几个步骤:步骤一:建立与远程服务器的连接使用jsch的Session类,我们可以建立与远程服务器的连接。
首先,我们需要创建一个Session对象,并设置连接所需的主机名、用户名和密码等参数。
然后,调用Session对象的connect()方法来建立实际的连接。
javaString host = "example";String user = "username";String password = "password";JSch jsch = new JSch();Session session = jsch.getSession(user, host, 22);session.setPassword(password);session.setConfig("StrictHostKeyChecking", "no");session.connect();步骤二:打开channelshell通道在建立与远程服务器的连接之后,我们需要打开channelshell 通道。
hutool的jschutil.execbyshell方法 -回复

hutool的jschutil.execbyshell方法-回复关于hutool框架中的jschutil.execbyshell方法,您想了解什么信息?回答:Hutool是一个面向Java开发的工具类库,提供了众多的工具类和方法,简化了Java开发过程中的一些常见任务。
其中,jschutil是Hutool 中与SSH连接和操作相关的工具类之一。
该类提供了execbyshell方法,用于通过SSH连接执行远程主机上的Shell命令或脚本。
下面,将逐步解释这个方法的使用方法和效果。
1. 引入Hutool的依赖要使用Hutool的jschutil工具类,首先需要在项目的依赖中引入Hutool的相关库。
可以通过Maven或其他构建工具来添加以下依赖项:xml<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.7.10</version></dependency>确认构建工具已将依赖添加到项目中后,可以开始使用jschutil中的方法。
2. 创建SSH连接在使用execbyshell方法之前,需要建立与目标主机的SSH连接。
首先,需要构建一个`SSHClient`对象,并通过`setSessionConfig`方法设置连接所需的参数:javaSSHClient client = new SSHClient();SessionConfig config = new SessionConfig();config.setHost("localhost"); 远程主机地址config.setPort(22); SSH端口,默认为22config.setUser("username"); 登录用户名config.setPassword("password"); 登录密码client.setSessionConfig(config);可以根据需要设置其他的参数,例如超时时间、连接重试次数等等。
利用mm命令编译Android模块

在Android开发过程中,当我们只需要编译某个修改过的模块时,使用mm命令可以使你不用编译整个Android项目,而只需单独编译该模块即可,这样速度是不是很快呢?具体的步骤如下:1. 在Android源代码目录下:[c-sharp]view plaincopy1cd mydroid2source build/envsetup.sh也可以将source ~/mydroid/build/envsetup.sh放到~/.bashrc中,这样每次打开shell时就会自动运行该脚本。
2. 在shell中使用help命令查看可以运行的命令[c-sharp]view plaincopy3# help4Invoke ". build/envsetup.sh" from your shell to add the following functions to your environment:5- croot: Changes directory to the top of the tree.6- m: Makes from the top of the tree.7- mm: Builds all of the modules in the current directory.8- mmm: Builds all of the modules in the supplied directories.9- cgrep: Greps on all local C/C++ files.10- jgrep: Greps on all local Java files.11- resgrep: Greps on all local res/*.xml files.12- godir: Go to the directory containing a file.1314Look at the source to view more functions. The complete list is:15add_lunch_combo cgrep check_product check_variant choosecombo chooseproduct choosetype choosevariant cproj croot findmakefile gdbclient get_abs_build_var getbugreports get_build_var getprebuilt gettop godir help isviewserverstarted jgreplunch m mm mmm pid printconfig print_lunch_menu resgrep runhat runtest set_java_home setpaths set_sequence_number set_stuff_for_environment settitle smoketeststartviewserver stopviewserver systemstack tapas tracedmdump可以看到mm命令,意思是编译当前文件夹下的所有模块。
Android不需要root权限也可卸载系统应用的adb命令
Android不需要root权限也可卸载系统应⽤的adb命令重要提醒:卸载某个系统应⽤之前,需要先通过 apk提取器或 ES⽂件浏览器⼯具将系统应⽤进⾏备份,以防⽌被卸载后,导致⼿机出现问题,若出现问题,还可以有机会重新安装回来,切记⼀个不需要root权限也可卸载系统应⽤的adb命令⽅法⼀(推荐):adb shell pm uninstall [-k] [--user USER_ID] 包名参数说明:k 卸载应⽤且保留数据与缓存,如果不加 -k 则全部删除。
user 指定⽤户 id,Android 系统⽀持多个⽤户,默认⽤户只有⼀个,id=0。
可以⽤这个命令,user 和 debug 版本都可以⽤,所有应⽤都能卸载掉。
⽐如这⾥卸载 360 浏览器:adb shell pm uninstall -k --user 0 com.qihoo.browser看到 Success 字样,代表卸载成功。
⽅法⼆: disable应⽤(disable应⽤后,应⽤并没有被卸载,只是桌⾯没有图标了;hide 命令可以卸载应⽤,保留数据,但是运⾏失败)C:\Users\zz>adb shell pm hide --user 0 com.sec.android.easyMoverError: ng.SecurityException: Neither user 2000 nor current process has android.permission.MANAGE_USERS.通过命令:adb shell pm disable-user --user 0 包名C:\Users\zz>adb shell pm disable-user --user 0 com.sec.android.easyMoverPackage com.sec.android.easyMover new state: disabled-userC:\Users\zz>adb shell pm enable --user 0 com.sec.android.easyMoverPackage com.sec.android.easyMover new state: enabled例如:C:\Users\zz>adb shell pm uninstall com.redstone.ota.ui // ⽆法卸载Failure [DELETE_FAILED_INTERNAL_ERROR]C:\Users\zz>adb shell pm uninstall --user 0 com.redstone.ota.ui //添加 --user 参数后,便能卸载成功SuccessQ&A1. 我想卸载某个应⽤,但不知道这个应⽤包名?打开应⽤,执⾏如下命令(linux系统):adb shell dumpsys window | grep mCurrentFocus打开应⽤,执⾏如下命令(window系统):adb shell dumpsys window | findstr mCurrentFocus2. 我把⼀些系统应⽤卸载了,怎么恢复?可以通过恢复出⼚设置⽅式恢复。
Android平台简单介绍
Android平台简单介绍1. 起源和发展Android是由Android公司的创始⼈Andy Rubin创造的,⽽后被Google收购,Google的⽬标是将Android打造成⼀个标准化、开放式的移动操作系统平台。
Android是开放源代码的移动操作系统软件,提供了丰富的功能和酷炫的⽤户界⾯。
Google不断优化和改进Android系统,并开放原⽣的安卓系统源代码允许各个软件⼚商或者⼿机⼚商进⾏定制化的修改。
同时Google也提供了丰富的Android API和强⼤的开发环境,使得在Android平台上开发Android App变得⼗分便捷。
Android是⽬前移动端市场占有率最⾼的⼿机操作系统,事实上,Android已经不仅仅⽤在⼿机端,还⼴泛⽤于TV、⼿表等各种可穿戴设备以及各种智能硬件。
2. Android平台架构Android平台是基于Linux内核构建起来的,从上到下主要包含四个层次:应⽤程序层,这⼀层主要包含各种应⽤程序软件,包括最基本的通话、短信、联系⼈、浏览器等App,还包括⼤量开发者开发的各种App;应⽤程序框架层,所有的App都是基于应⽤框架层开发的,应⽤框架层提供了⼤量的API供开发者使⽤,开发者也可以提交⾃⼰开发的功能模块;系统环境层,这⼀层包含了⽀持上层功能所需要的⼤量C/C++函数库,还包括Android运⾏时环境,Android运⾏时环境包括Java核⼼库以及Android虚拟机;Linux内核层,Android内核建⽴在Linux 2.6之上,这⼀层提供最基础的诸如内存管理、进程管理、⽹络协议栈等操作系统级服务;关于Android虚拟机,在5.0版本之前使⽤的是Dalvik虚拟机,⽽⾃5.0版本之后使⽤的是ART。
Dalvik虚拟机是⼀种解释执⾏的虚拟机,由于其在运⾏App时进⾏动态编译,使得运⾏App的速度⽐较慢。
ART采⽤AOT(Ahead of Time)的技术在安装App时就进⾏编译,使得运⾏App的效率得到较⼤提升。
安卓Android ROM定制、移植教程。
CyanogenMOD移植教程转自秋叶随风Ivan;乐蛙论坛等。
第一章:环境的搭建一.系统选择和安装建议使用ubuntu LTS 10.04 X64新手朋友推荐Deepin Linux 基于ubuntu定制的,适合新手使用/download系统安装教程,以下方法通用于UBUNTU官方版本U盘安装:/index.php/Unetbootin光盘安装:/index.php/光盘安装搭建android编译环境:英文好的请猛击这里:WIKI:/index.php?title=Building_from_source1.安装JDK因为ANDROID大部分东西是java写的,所以首先我们需要安装JDK 打开终端按照如下命令输入或者直接复制粘贴:编译android 2.3 或者更新的版本请使用jdk 6$ sudo add-apt-repository "deb / lucid partner"$ sudo apt-get update$ sudo apt-get install sun-java6-jdk如果你需要编译的是2.2以下的版本请使用JDK 5,因为现在大家都是使用Gingerbread 以上的系统,这里就不介绍jdk5如何安装的了,如果有需要请度娘或者google2.安装各种依赖包64位环境:依然是终端中输入$ sudo apt-get install git-core gnupg flex bison gperfbuild-essential \zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \libgl1-mesa-dev g++-multilib mingw32 tofrodospython-markdown \libxml2-utils xsltproc如果这些依赖包依然不能解决你的问题,请参考如下:/wiki/HTC_Hero_(CDMA):_Com pile_CyanogenMod_(Linux)/source/initializing.html3.下载代码打开终端:在个人目录下面使用的是android 代替我的工程,用cm7代替CM7的源码用CM9代替CM9的源码如果要更新下载CM7的源码请输入:mkdir -p ~/binmkdir -p ~/android/cm7个人目录下的bin目录是为了保存repo 等更新脚本的依然再终端输入:curlhttps:///dl/googlesource/git-repo/repo > ~/bin/repochmod a+x ~/bin/repo可以把~/bin/repo 加入到环境变量里面终端输入sudo gedit /etc/environment在PATH=“”加入PA TH="/home/ivanhuang/bin:" ivanhuang为个人目录的名称,也就是计算机登录名更改结束之后终端输入source /etc/environment就能直接在终端中使用repo 命令了。
hutool的jschutil.execbyshell方法 -回复
hutool的jschutil.execbyshell方法-回复以hutool的JschUtil.execByShell方法为主题,我们将一步一步解答:JschUtil是Hutool工具包中的一个类库,它是基于JSch库开发的,提供了一系列方便的操作远程服务器的工具方法。
而execByShell方法是其中一个重要的方法,它用于执行Shell命令并返回执行结果。
在本文中,我们将分为以下几个部分来深入了解JschUtil.execByShell 方法:1. JschUtil概述2. execByShell方法的使用场景3. 方法详解- 方法签名- 参数说明- 返回值说明- 方法实现原理4. 使用示例5. 总结1. JschUtil概述JschUtil是Hutool工具包中的一个类库,它封装了JSch库,提供了一套简单易用的方法来操作远程服务器。
JSch是一个基于Java的SSH2实现,可以用于执行远程Shell命令、传输文件等。
Hutool工具包的JschUtil类库对JSch进行了封装,使得使用更加便捷和简单。
2. execByShell方法的使用场景execByShell方法是JschUtil类中的一个关键方法,它用于执行远程Shell命令并返回执行结果。
这个方法在一些需要操作远程服务器的场景中非常有用,比如远程服务器部署、远程日志查看等。
3. 方法详解3.1 方法签名javapublic static String execByShell(Session session, String command, String charset)3.2 参数说明- session:一个已经连接的SSH会话,使用JschUtil.getSession方法获取- command:要执行的Shell命令- charset:执行命令时所使用的字符编码,默认为UTF-83.3 返回值说明execByShell方法返回一个String类型的结果,代表Shell命令的执行结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java中运行Shell for Android
1. #! /system/bin/sh
2. #最简单的一个shell,没什么功能
3. #需要注意的是必须是 #! /system/bin/sh开头(有空格)
4. #和一般linux不同,如果用#!/bin/sh就会找不到(因为没有)
5. ls
复制代码
在cmd中用adb push d:\\x.sh /data/kenshin上传shell
第一个参数是本地文件位置,第二个是远程位置(也就是放在android中的
位置),在根目录的data目录下,kenshin是我自己创建的一个文件夹. 如果失
败了,说是只有只读权限的话,需要修改文件夹的权限.具体如下:
进入adb shell,使用mount命令查看挂了哪些块.
1. C:\Documents and Settings\Kenshintang>adb shell
2. # mount
3. mount
4. rootfs / rootfs ro 0 0
5. tmpfs /dev tmpfs rw,mode=755 0 0
6. devpts /dev/pts devpts rw,mode=600 0 0
7. proc /proc proc rw 0 0
8. sysfs /sys sysfs rw 0 0
9. tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0
10./dev/block/mtdblock0 /system yaffs2 ro,noatime,nodiratime 0 0
11./dev/block/mtdblock1 /data yaffs2 rw,nosuid,nodev 0 0
12./dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev 0 0
复制代码
比如/dev/block/mtdblock0 /system就是只读的,/dev/block/mtdblock1
/data是读写的
修改读写权限用mount命令
例如 mount -t yaffs2 -o remount,rw,noatime,nodiratime
/dev/mtdblock0 /system
-o选项用来描述设备或者档案的挂接方式,常用的有
loop:用来把一个文件当成硬盘分区挂接上系统
ro:采用只读方式挂接设备
rw:采用读写方式挂接设备
具体的用法可以google linux命令mout的用法.
上面那句话的意思就是让/system文件夹有读写的权限
2. cd到shell所在的文件夹,查看x.sh的权限,一般上传上去的话是没有执行
权限的,可以用ls -l查看
使用chmod 777 x.sh增加权限,具体可以google chmod的用法.
3. 执行 ./x.sh
4. 如何在程序中执行shell
package com.kenshin.hellocommand;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloCommand extends Activity {
/** Called when the activity is first created. */
private TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView)findViewById(R.id.tv01);
try {
execCommand("./data/kenshin/x.sh");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void execCommand(String command) throws IOException {
// start the ls command running
//String[] args = new String[]{"sh", "-c", command};
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec(command); //这句话就是
shell与高级语言间的调用
//如果有参数
的话可以用另外一个被重载的exec方法
//实际上这样执行时启动了一个子进程,它没有父进程的控制台
//也就看不到输出,所以我们需要用输出流来得到shell执行后的
输出
InputStream inputstream = proc.getInputStream();
InputStreamReader inputstreamreader = new
InputStreamReader(inputstream);
BufferedReader bufferedreader = new
BufferedReader(inputstreamreader);
// read the ls output
String line = "";
StringBuilder sb = new StringBuilder(line);
while ((line = bufferedreader.readLine()) != null) {
//System.out.println(line);
sb.append(line);
sb.append('\n');
}
tv.setText(sb.toString());
//使用exec执行不会等执行成功以后才返回,它会立即返回
//所以在某些情况下是很要命的(比如复制文件的时候)
//使用wairFor()可以等待命令执行完成以后才返回
try {
if (proc.waitFor() != 0) {
System.err.println("exit value = " +
proc.exitValue());
}
}
catch (InterruptedException e) {
System.err.println(e);
}
}
}