Android中shell控制cpu,Android app开发中获取cpu arm架构信息及执行shell命令方法
最近在做一个项目,需要在app开发过程中去判断cpu的arm架构,比如说是armeabi-v7a,或是arm64-v8a。
其实,在adb shell命令下面,可以通过getprop的方式,获取到一些信息,比如:
rk3399_urbetter:/ # getprop|grep arm
[dalvik.vm.isa.arm.features]: [default]
[dalvik.vm.isa.arm.variant]: [cortex-a53.a57]
[dalvik.vm.isa.arm64.features]: [default]
[dalvik.vm.isa.arm64.variant]: [cortex-a53]
[persist.sys.alarm.fixed]: [300000]
[ro.config.alarm_alert]: [Alarm_Classic.ogg]
[ro.product.cpu.abi]: [arm64-v8a]
[ro.product.cpu.abilist]: [arm64-v8a,armeabi-v7a,armeabi]
[ro.product.cpu.abilist32]: [armeabi-v7a,armeabi]
[ro.product.cpu.abilist64]: [arm64-v8a]
rk3399_urbetter:/ #
可以看到,现在cpu的架构是支持arm64-v8a。
那么,在app的开发过程中,是怎么样获取到这个值呢。
分成两个层次来讨论:
1) native层
在native层,可以通过property_get()函数来实现,比如:
char value[PROPERTY_VALUE_MAX];
property_get(EXIT_PROP_NAME, value, "0");
2) java层
这次遇到的问题就是需要在java层去做这个事情。网络上面有介绍可以使用System.getproperty()来达到这个目标,不过Java的System.getProperty得到null,这个让我非常的郁闷,找了不少方式也都没有办法解决。如果有人知道为什么返回null,帮忙说明下。后面我自己也看看源码。
后面我找到了个折中的解决方案,就是在java层执行shell 命令,直接通过getprop的shell命令来获取到结果。
cpu_abi = mCMD.execCmd("getprop ro.product.cpu.abi");
public static String execCmd(String cmd) {
DataOutputStream dos = null;
String result = "";
String lastline = " ";
try {
Process process = Runtime.getRuntime().exec(cmd);// 经过Root处理的android系统即有su命令
//get the err line
InputStream stderr = process.getErrorStream();
InputStreamReader isrerr = new InputStreamReader(stderr);
BufferedReader brerr = new BufferedReader(isrerr);
//get the output line
InputStream outs = process.getInputStream();
InputStreamReader isrout = new InputStreamReader(outs);
BufferedReader brout = new BufferedReader(isrout);
String errline = null;
// get the whole error message
String line = "";
while ( (line = brerr.readLine()) != null)
{
result += line;
result += "/n";
}
if( result != "" )
{
// put the result string on the screen
Log.i(TAG," the str error message " + result.toString());
}
// get the whole standard output string
while ( (line = brout.readLine()) != null)
{
lastline = line;
result += line;
result += "/n";
}
if( result != "" )
{
// put the result string on the screen
Log.i(TAG," the standard output message " + lastline.toString());
}
}catch(Throwable t)
{
t.printStackTrace();
}
return lastline.toString();
}
Android中shell控制cpu,Android app开发中获取cpu arm架构信息及执行shell命令方法相关推荐
- Android短视频app开发中如何实现上下滑动切换效果
在大部分短视频app开发中,都会在app内增加上下滑动切换视频的功能,即下滑切换到下一条短视频,上滑切回到上一条.这种机制可以给用户带来良好的视觉体验,云豹作为优秀的app源码供应商,在该效果的实现上 ...
- 如何进行游戏陪玩app开发中的启动性能测试?
用于测试启动的 Shell 命令 本文的编写目的,更多的在于介绍游戏陪玩app开发性能.启动测试以及我进行游戏陪玩app开发启动测试背后的原因.但如果您只是希望能够快速获得结论,可以直接参考下面的内容 ...
- app开发中的异步处理(一)
本文是我打算完成的一个系列<Android和iOS开发中的异步处理>的开篇. 从2012年开始开发微爱App的第一个iOS版本计算,我和整个团队接触iOS和Android开发已经有4年时间 ...
- java做直播需要哪些技术_直播APP开发中需要解决哪些技术难点?千联信息
泛娱乐发展的火热,网红经济不断发酵的今天,不少企业靠着开发直播APP狠狠的赚了一波,导致很多人眼红,也想投入其中. 那么开发一款直播APP开发中需要解决哪些技术难点?小编在这里就来为大家解答: 视频直 ...
- APP开发中这十个细节能直接影响到用户体验,那么如何提升用户体验?
随着软件开发技术的不断发展和完善,有众多同类选择的APP用户越来越挑剔,单单拼功能拼硬件已经不足以捕获用户芳心.在APP使用过程中,大部分用户无意识地培养出了对使用体验的重视感.这警醒企业,只盯着为用 ...
- 直播app开发中这几个功能影响后期运营
直播app开发中的常见功能我们都有所了解,但是对于功能的选择我们也会存在一定的瓶颈期,功能的出彩影响着后期运营的效果,所以把一些功能设计好是非常有必要的.今天就和南京软件开发公司软世通,一起来了解直播 ...
- 婚恋交友app开发中需要注意的安全问题
前言 随着移动设备的普及,婚恋交友app已经成为了人们生活中重要的一部分.但是,这些应用的开发者需要确保应用的安全性,以保护用户的隐私和数据免受攻击.本文将介绍在婚恋交友app开发中需要注意的安全问题 ...
- HTML5+移动APP开发中遇到的各种代码元素的含义(四)
系列目录 跨平台移动APP开发中遇到的各种代码元素的含义(一) HTML5+移动APP开发中遇到的各种代码元素的含义(二) HTML5+移动APP开发中遇到的各种代码元素的含义(三) 目录 系列目录 ...
- APP开发中的UI设计
UI设计是 APP开发中一个必不可少的部分,用户体验也是影响 APP产品成功与否的重要因素,用户体验包括用户的使用感受和操作感受.就 UI设计来说,它的主要内容有:界面.图标.颜色.字体 ...
最新文章
- libcurl多线程下载开发过程中需要注意的一个问题
- HTML5 Audio标签方法和函数API介绍
- C#实现Web应用程序定时启动任务
- JAVA命令运行cmd命令得到的结果乱码Runtime.getRuntime().exec();
- 26.进程空间和线程空间
- 虚继承c语言例子,C/C++ 多继承{虚基类,虚继承,构造顺序,析构顺序}
- 项目经理的职责(转载)
- DefaultMessageListenerContainer
- myEclipse 界面窗口打不开问题
- 功能自动化接入持续集成方案
- 黑盒测试和白盒测试之间的差别
- Stata做KHB中介效应分析
- input框隐藏和不可编辑
- Python--快速爬取千张高清壁纸
- Linux SCSI设备容量打印代码分析
- multism中ui和uo应该怎么表示_Multisim在模拟与数字电子技术中的应用(最终版)最新版...
- 如何使用ANSYS workbench导出最清晰的图的步骤
- 数据结构(54) B树、B+树
- 个税继续教育证书有哪些 计算机,个税继续教育包括函授吗 个人所得税的继续教育主要包括哪些...
- IE打开报错,提示该内存不能为read的解决办法!