Android的底层是Linux内核,因此在shell环境下可以运行Linux命令,尤其是经过root处理的android系统,基本上可以通过调用Linux命令完全控制手机,下面的RootCmd.java代码可以实现运行Linux外部命令。
package my.android.codeimport android.os.Environment
import dalvik.annotation.Signature
import java.io.BufferedReader
import java.io.DataInputStream
import java.io.DataOutputStream
import java.io.File
import java.io.FileReader
import java.io.InputStream
import java.io.OutputStream
import java.util.Vector
public final class RootCmd
{
//执行linux命令并且输出结果
protected static Vector execRootCmd(String paramString)
{
Vector localVector = new Vector()
try
{
Process localProcess = Runtime.getRuntime().exec("su ")//经过Root处理的android系统即有su命令
OutputStream localOutputStream = localProcess.getOutputStream()
DataOutputStream localDataOutputStream = new DataOutputStream(localOutputStream)
InputStream localInputStream = localProcess.getInputStream()
DataInputStream localDataInputStream = new DataInputStream(localInputStream)
String str1 = String.valueOf(paramString)
String str2 = str1 + "\n"
localDataOutputStream.writeBytes(str2)
localDataOutputStream.flush()
String str3 = localDataInputStream.readLine()
localVector.add(str3)
localDataOutputStream.writeBytes("exit\n")
localDataOutputStream.flush()
localProcess.waitFor()
return localVector
}
catch (Exception localException)
{
localException.printStackTrace()
}
}
//执行linux命令但不关注结果输出
protected static int execRootCmdSilent(String paramString)
{
try
{
Process localProcess = Runtime.getRuntime().exec("su")
Object localObject = localProcess.getOutputStream()
DataOutputStream localDataOutputStream = new DataOutputStream((OutputStream)localObject)
String str = String.valueOf(paramString)
localObject = str + "\n"
localDataOutputStream.writeBytes((String)localObject)
localDataOutputStream.flush()
localDataOutputStream.writeBytes("exit\n")
localDataOutputStream.flush()
localProcess.waitFor()
localObject = localProcess.exitValue()
return localObject
}
catch (Exception localException)
{
localException.printStackTrace()
}
}
//判断机器Android是否已经root,即是否获取root权限
protected static boolean haveRoot()
{
int i = execRootCmdSilent("echo test") //通过执行测试命令来检测
if (i != -1) return true
retrun false
}
}
Linux上的软件少得可怜,要是能够直接运行安卓程序,那将是意见很酷的事情。方法原理:首先这个方法不需要开启安卓虚拟机,是直接在Linux上运行的。 谷歌在很早之前提出了archon的方案,能够直接在PC端运行安卓app,但是并不是很完善,所以不保证所有app可运行,请自测。后来deepin对其进行了加强,在此感谢深度团队。部分为转载内容,再次感谢原作者。理论基于Debian的系统都可以,本人基于Linux mint17.3,其他Linux发行版请自行测试。一、安装运行环境首先要安装chrome浏览器,可到 http://www.google.cn/chrome/browser/desktop/index.html 下载在我提供的资源网址中,选择环境包文件夹安装 archon-integration*.deb 和 deepin-archon*.deb即可二、安装安卓app1.安装打包好的安卓app的deb包直接在我提供的资源网址中,选择Android-apps文件夹下的对应安卓app的安装包即可也可以到网址: http://packages.deepin.com/deepin/pool/non-free/a/ 下载对应的安卓app安装包2.直接运行apka.下载测试的安卓apk程序,请尽量下载Pad版本;b.解压apk程序,终端执行:/usr/lib/node_modules/chromeos-apk/chromeos-apk --archon -t --scale --name "Android App" xxx.apk ##xxx.apk为被解压的apk文件名c.测试运行,终端执行:/lastore/framework/myarchon/archonrun --silent-launch --load-and-launch-app=被解压apk程序的完整路径如果想一部到位,仅仅是测试的,也可以下载环境包中的Android.sh.zip 解压出 Android.sh运行android.sh xx.apk即可看到软件运行情况。1、在linux中安装virtualbox,然后安装安卓系统,再安装apk2、尝试安装shashlink,这个是安卓的一个模拟库,一般来说,支持x86的安卓的apk才可以运行,只支持arm的不能运行。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)