Android系统信息获取 之十三:Linux内核版本信息获取
2016-10-14 11:41
609 查看
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目录:
[html] view
plain copy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/9e12f1d3e499fc949c886e7c9e0484f9)
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命令获取的,那么该过程我们当然可以通过代码来实现它。
[java] view
plain copy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/9e12f1d3e499fc949c886e7c9e0484f9)
/***
* 获取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。
这个方法和上面的大同小异,只是使用的方法略微不同。
具体如下:
[java] view
plain copy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/9e12f1d3e499fc949c886e7c9e0484f9)
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;
}
首先,使用adb工具我们能够很快获取Android手机(Android模拟器)的Linux内核版本。
用adb工具连接模拟器,查看内核版本信息,看看模拟器上跑的内核是不是我们刚才编译出来的内核:
USER-NAME@MACHINE-NAME:~/Android$ adb shell
这时候如果是第一次运行 adb shell命令,会看到以下输出,不用管它,再运行一次adb shell命令就可以了。
切换到proc目录:
[html] view
plain copy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
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命令获取的,那么该过程我们当然可以通过代码来实现它。
[java] view
plain copy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
/***
* 获取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。
这个方法和上面的大同小异,只是使用的方法略微不同。
具体如下:
[java] view
plain copy
![](https://oscdn.geek-share.com/Uploads/Images/Content/201611/a7c8e286f463007e2a900848b93dd72c.png)
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;
}
相关文章推荐
- Android系统信息获取 之十三:Linux内核版本信息获取
- Android系统信息之Linux内核版本信息获取
- android系统信息(内存、cpu、sd卡、电量、版本)获取
- Android 获取常用的系统及应用的版本信息
- Android 获取当前APP和系统的版本信息
- Android 获取当前APP和系统的版本信息
- Android 系统信息获取(CPU,RAM,ROM,Battery,SD-card,版本等)
- Android 系统信息获取(CPU,RAM,ROM,Battery,SD-card,版本等)(转)
- 解析Android获取系统cpu信息,内存,版本,电量等信息的方法详解(转)
- Android获取系统的硬件信息、系统版本以及如何检测ROM类型
- Android获取手机型号,系统版本,App版本号等信息
- Android系统信息获取 之二:版本信息获取
- android 系统版本信息的获取(附修正时差)
- Android获取系统的硬件信息、系统版本以及如何检测ROM类型
- Android获取系统cpu信息,内存,版本,电量等信息
- Android 系统信息获取(CPU,RAM,ROM,Battery,SD-card,版本等)
- android系统信息(内存、cpu、sd卡、电量、版本)获取
- Android获取手机型号,系统版本,App版本号等信息
- android 系统版本信息工具类 获取设备型号 设置屏幕亮度 软键盘 获取屏幕高度宽度
- android系统信息(内存、cpu、sd卡、电量、版本)获取