Android获取Linux图像信息,Android系统信息获取 之十三:Linux内核版本信息获取
Android系统信息获取 之十三:Linux内核版本信息获取
Android系统是基于Linux的,各个Android版本对应的Linux版本不尽相同,我们这里不去追究各个Android对应的Linux版本是什么,而是通过工具或者使用代码的方法去获取我们使用的Android源码或者我们的Android手机目前使用的Linux版本。
首先,使用adb工具我们能够很快获取Android手机(Android模拟器)的Linux内核版本。
用adb工具连接模拟器,查看内核版本信息,看看模拟器上跑的内核是不是我们刚才编译出来的内核:
USER-NAME@MACHINE-NAME:~/Android$ adb shell
这时候如果是第一次运行 adb shell命令,会看到以下输出,不用管它,再运行一次adb shell命令就可以了。
切换到proc目录:
root@android:/ # cd proc
root@android:/proc # cat version
Linux version 3.0.8 (user@machine) (gcc version 4.4.3 (GCC) ) #1 SMP PREEMP
T Mon Mar 3 11:32:08 CST 2014
机器名user@machine;日期Mon Mar 3 11:32:08 CST 2014;Linux内核版本为Linux ersion 3.0.8
其次,在一些应用中我们有可能需要获取Linux内核的版本信息,基于adb命令行的的获取方式,我们知道Linux版本信息是通过Linux命令获取的,那么该过程我们当然可以通过代码来实现它。
/***
* 获取Android Linux内核版本信息
*/
public void getLinuxKernalInfo() {
Process process = null;
String mLinuxKernal = null;
try {
process = Runtime.getRuntime().exec("cat /proc/version");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// get the output line
InputStream outs = process.getInputStream();
InputStreamReader isrout = new InputStreamReader(outs);
BufferedReader brout = new BufferedReader(isrout, 8 * 1024);
String result = "";
String line;
// get the whole standard output string
try {
while ((line = brout.readLine()) != null) {
result += line;
// result += "\n";
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (result != "") {
String Keyword = "version ";
int index = result.indexOf(Keyword);
Log.v(TAG, "----"+result);
line = result.substring(index + Keyword.length());
index = line.indexOf(" ");
// tv01.setText(line.substring(0,index));
mLinuxKernal = line.substring(0, index);
Log.d(TAG, "----Linux Kernal is : " + mLinuxKernal);
}
}
除了上面的方法以外还可以通过给processbuilder传入一个String数组,String数组有两个String,前一个代表liunx系统的命令,后面一个代表要执行该命令的文件然后就是获得该命令执行后所返回的字符串信息以流的形式再传回来得到 result。
这个方法和上面的大同小异,只是使用的方法略微不同。
具体如下:
public String getLinuxKernalInfoEx() {
String result = "";
String line;
String[] cmd = new String[] { "/system/bin/cat", "/proc/version" };
String workdirectory = "/system/bin/";
try {
ProcessBuilder bulider = new ProcessBuilder(cmd);
bulider.directory(new File(workdirectory));
bulider.redirectErrorStream(true);
Process process = bulider.start();
InputStream in = process.getInputStream();
InputStreamReader isrout = new InputStreamReader(in);
BufferedReader brout = new BufferedReader(isrout, 8 * 1024);
while ((line = brout.readLine()) != null) {
result += line;
// result += "\n";
}
in.close();
} catch (Exception e) {
e.printStackTrace();
}
Log.i(TAG,"----Linux Kernal is :"+result);
return result;
}
在开发中可酌情使用。
----------------------------------
欢迎浏览、技术交流
请尊重劳动成果
转载请注明出处,谢谢!
http://blog.csdn.net/netwalk/article/details/20928221
Android获取Linux图像信息,Android系统信息获取 之十三:Linux内核版本信息获取相关推荐
- Android系统信息获取 之十三:Linux内核版本信息获取
Android系统是基于Linux的,各个Android版本对应的Linux版本不尽相同,我们这里不去追究各个Android对应的Linux版本是什么,而是通过工具或者使用代码的方法去获取我们使用的A ...
- 【Android 逆向】Android 系统文件分析 ( /proc/ 目录文件分析 | 记录系统和进程信息 | version 内核版本信息文件 )
文章目录 一.proc 目录简介 二.version 内核版本信息文件 一.proc 目录简介 进入 /proc/ 目录 , 查看该目录下的文件 , 该目录中的文件的作用 , 主要是记录系统和进程的信 ...
- 如何获取嵌入式设备的内核版本信息
1.有源码时 VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 35 EXTRAVERSION = .7 NAME = Yokohama 如果你有内核的源码,可以在内核顶层的 ...
- Android系统信息获取 之二:版本信息获取
获取当前应用的版本号: [java] view plaincopy private String getAppVersionName() throws Exception { // 获取package ...
- 智能机浏览器版本信息获取
/* * 智能机浏览器版本信息: * */var browser = { versions: function () { var u = navigator.userAgent, app = navi ...
- matlab实现获取tof,一种结合TOF技术和双目视觉的深度信息获取装置及其方法与流程...
本发明涉及深度传感器.机器视觉.三维重建.双目立体视觉.TOF技术领域,尤其涉及一种结合TOF技术和双目视觉的深度信息获取装置及其方法. 背景技术: 近年来,深度信息在传感器中获得了越来越多的应用.获 ...
- Android 应用(5)——android10.0升级webview浏览器内核版本
参考链接: https://www.jianshu.com/p/a673718ef80a https://www.freesion.com/article/7856574309/ webview资源链 ...
- linux内核版本信息说明
linux有两种版本,一个是核心(kernel)版,一个是发行(distribution)版.核心版的序号由三部分数字构成,其形式为: major.minor.patchlevel 其中,majoro ...
- 输出linux内核版本信息,查看linux内核和版本信息
一.查看Linux内核版本命令(2种方法): 1.cat /proc/version Linux version 3.10.0_1-0-0-8 (root@xxx) (gcc version 4.8. ...
最新文章
- Cloud for Customer Fiori client导航栏里工作中心层级显示设定
- Django 模型与 Mysql 数据类型对应
- 正则表达式在iOS中的运用
- 牛津学霸的20条读博建议
- Vue.js之使用vue-cli初始化项目
- PHP创建与解析 XML 1 (36)
- document.execCommand() 解析
- Redhat Linux配置远程桌面
- iOS 自定义底部tabbar加号按钮实现方法
- 互联网+创新创业大赛项目计划书,个人原创你学会了吗?
- 安卓Autojs逆向破解必备基础smail基础语法
- 知乎周源微信_每周源代码34-F#的兴起
- python函数调用键盘热键_Python自定义快捷键,热键,HotKey
- Gastroenterology:益生菌长双歧杆菌NCC3001能降低抑郁评分并改变大脑活动
- c# ppt 转 html,C# 实现PPT 每一页转成图片
- 关于组装电脑注意事项
- BeanUtils.populate的用法
- oracle 企业管理器网页打不开 解决https://localhost:1158/em问题
- 难得的巧记十二个月的单词
- 计算机开启时提示键盘错误,进入BIOS自检找不到键盘提示Keyboard error怎么办
热门文章
- CAP 2.4版本发布,支持版本隔离特性
- 在ASP.NET Core中使用brotli压缩
- 微软亚太区资料科学总监:R 语言是 VS 生态第一顺位
- 浅析如何在Nancy中生成API文档
- rest_framework11:jwt简单例子/自定制基于jwt认证类
- Android中文图混排时文图的居中对齐 FontMetrics以及自定义ImageSpan实现
- C#数组原来这么简单,你学废了吗?
- 三联《少年》创刊,各领域佼佼者畅言新知,帮少年建立思维素养体系!
- 身家4400亿美元的他,吃低于3美元的早餐,和2个老婆同居28年!
- TensorFlow发布全新版本,又会带来哪些变革?