android app下运行linux脚本代码
2018-03-04 16:36
393 查看
场景
在@函兮的要求下,在手机root的情况下,完整的利用八核的性能,将linux代码写入到android 手机上,通过app的形式,进行测试。代码
# 强制读写系统分区 busybox mount -o rw,remount /dev/block/bootdevice/by-name/system # busybox mount -o rw,remount /dev/block/platform/msm_sdcc.1/by-name/system # 开始设置性能 当前模式:性能模式 stop thermald stop mpdecision stop thermal-engine echo 0 > /sys/module/msm_thermal/core_control/enabled echo 1 > /sys/devices/system/cpu/cpu0/online echo 1 > /sys/devices/system/cpu/cpu1/online echo 1 > /sys/devices/system/cpu/cpu2/online echo 1 > /sys/devices/system/cpu/cpu3/online echo 1 > /sys/devices/system/cpu/cpu4/online echo 1 > /sys/devices/system/cpu/cpu5/online echo 1 > /sys/devices/system/cpu/cpu6/online echo 1 > /sys/devices/system/cpu/cpu7/online busybox echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor busybox echo performance > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor busybox echo performance > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor busybox echo performance > /sys/devices/system/cpu/cpu5/cpufreq/scaling_governor busybox echo performance > /sys/devices/system/cpu/cpu7/cpufreq/scaling_governor echo performance > /sys/class/kgsl/kgsl-3d0/devfreq/governor # busybox echo 0 > /sys/devices/soc.0/fdb00000.qcom,kgsl-3d0/kgsl/kgsl-3d0/min_pwrlevel # busybox echo 4 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus # 缓存目录权限应当为777 busybox chmod -R 777 /data/local/tmp/ tmp=/data/local/tmp/80rompk_error.txt
工具类的代码:
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; } }
这段代码直接在onCreate()` 里面直接调用即可。
相关文章推荐
- android 混淆代码后 app 运行报错时, 如何精准定位报错位置
- php脚本(功能ios/android推送;技术mongodb队列,MQTT,锁文件。linux运行)
- 以chroot方式在android运行linux的脚本(自用)
- android代码中运行二进制程序或脚本
- Linux下运行java代码的Shell脚本设置
- linux 能否实现用户登录运行脚本?
- 网页脚本运行代码功能特效
- 可以运行网页脚本的代码框源代码
- 统计文件夹下代码行,python脚本,linux可用
- 在linux下写的代码,用的是utf-8,结果拿到XP下运行的时候,所有的中文都成乱码
- Linux能否实现用户登录运行脚本?
- Linux Bash Shell学习(七):shell编程基础——运行Shell脚本、function
- Linux下创建脚本并用命令方式运行
- 在linux下写的代码,用的是utf-8,结果拿到XP下运行的时候,所有的中文都成乱码
- Linux下运行Java程序脚本
- UNIX/Linux下运行脚本文件出现bad interpreter:No such file or directory的原因和解决办法
- 容易部署的 论坛 “运行代码”脚本
- 一个将java程序运行在linux系统后台的脚本
- 在Linux中开机自动运行普通用户脚本程序
- 让一个脚本自动定时运行,设置、启动 linux定时脚本 (crontab详解)