最近在做一个项目,需要在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命令方法相关推荐

  1. Android短视频app开发中如何实现上下滑动切换效果

    在大部分短视频app开发中,都会在app内增加上下滑动切换视频的功能,即下滑切换到下一条短视频,上滑切回到上一条.这种机制可以给用户带来良好的视觉体验,云豹作为优秀的app源码供应商,在该效果的实现上 ...

  2. 如何进行游戏陪玩app开发中的启动性能测试?

    用于测试启动的 Shell 命令 本文的编写目的,更多的在于介绍游戏陪玩app开发性能.启动测试以及我进行游戏陪玩app开发启动测试背后的原因.但如果您只是希望能够快速获得结论,可以直接参考下面的内容 ...

  3. app开发中的异步处理(一)

    本文是我打算完成的一个系列<Android和iOS开发中的异步处理>的开篇. 从2012年开始开发微爱App的第一个iOS版本计算,我和整个团队接触iOS和Android开发已经有4年时间 ...

  4. java做直播需要哪些技术_直播APP开发中需要解决哪些技术难点?千联信息

    泛娱乐发展的火热,网红经济不断发酵的今天,不少企业靠着开发直播APP狠狠的赚了一波,导致很多人眼红,也想投入其中. 那么开发一款直播APP开发中需要解决哪些技术难点?小编在这里就来为大家解答: 视频直 ...

  5. APP开发中这十个细节能直接影响到用户体验,那么如何提升用户体验?

    随着软件开发技术的不断发展和完善,有众多同类选择的APP用户越来越挑剔,单单拼功能拼硬件已经不足以捕获用户芳心.在APP使用过程中,大部分用户无意识地培养出了对使用体验的重视感.这警醒企业,只盯着为用 ...

  6. 直播app开发中这几个功能影响后期运营

    直播app开发中的常见功能我们都有所了解,但是对于功能的选择我们也会存在一定的瓶颈期,功能的出彩影响着后期运营的效果,所以把一些功能设计好是非常有必要的.今天就和南京软件开发公司软世通,一起来了解直播 ...

  7. 婚恋交友app开发中需要注意的安全问题

    前言 随着移动设备的普及,婚恋交友app已经成为了人们生活中重要的一部分.但是,这些应用的开发者需要确保应用的安全性,以保护用户的隐私和数据免受攻击.本文将介绍在婚恋交友app开发中需要注意的安全问题 ...

  8. HTML5+移动APP开发中遇到的各种代码元素的含义(四)

    系列目录 跨平台移动APP开发中遇到的各种代码元素的含义(一) HTML5+移动APP开发中遇到的各种代码元素的含义(二) HTML5+移动APP开发中遇到的各种代码元素的含义(三) 目录 系列目录 ...

  9. APP开发中的UI设计

           UI设计是 APP开发中一个必不可少的部分,用户体验也是影响 APP产品成功与否的重要因素,用户体验包括用户的使用感受和操作感受.就 UI设计来说,它的主要内容有:界面.图标.颜色.字体 ...

最新文章

  1. libcurl多线程下载开发过程中需要注意的一个问题
  2. HTML5 Audio标签方法和函数API介绍
  3. C#实现Web应用程序定时启动任务
  4. JAVA命令运行cmd命令得到的结果乱码Runtime.getRuntime().exec();
  5. 26.进程空间和线程空间
  6. 虚继承c语言例子,C/C++ 多继承{虚基类,虚继承,构造顺序,析构顺序}
  7. 项目经理的职责(转载)
  8. DefaultMessageListenerContainer
  9. myEclipse 界面窗口打不开问题
  10. 功能自动化接入持续集成方案
  11. 黑盒测试和白盒测试之间的差别
  12. Stata做KHB中介效应分析
  13. input框隐藏和不可编辑
  14. Python--快速爬取千张高清壁纸
  15. Linux SCSI设备容量打印代码分析
  16. multism中ui和uo应该怎么表示_Multisim在模拟与数字电子技术中的应用(最终版)最新版...
  17. 如何使用ANSYS workbench导出最清晰的图的步骤
  18. 数据结构(54) B树、B+树
  19. 个税继续教育证书有哪些 计算机,个税继续教育包括函授吗 个人所得税的继续教育主要包括哪些...
  20. IE打开报错,提示该内存不能为read的解决办法!

热门文章

  1. Android使用Jenkins打包上传蒲公英
  2. 单个方程的不动点迭代法
  3. 【BZOJ-1913】signaling信号覆盖 极角排序 + 组合
  4. Linux环境使用阿里云短信服务报错
  5. 闷棍暴打面试官 Spring源码系列: (一) Spring 如何解决循环依赖
  6. STM32读写W25Q
  7. 剪一段旧时光,暗香绽放
  8. HDU 1175 连连看【2011年11月14号更新】
  9. 悬赏计划 | 参与Gitee X OpenMLDB开源项目,做开源才不是「用爱发电」!
  10. hdu 5435 A serious math problem(数位dp)