内核版本信息可以通过adb进入shell查看:

cat /proc/version

其定义是在kernel/fs/proc/version.c和kernel/init/version.c两个文件中。

kernel/init/version.c中如下代码:

const char linux_proc_banner[] =
    "%s version %s"
    " (" LINUX_COMPILE_BY "@" LINUX_COMPILE_HOST ")"
    " (" LINUX_COMPILER ") %s\n";

以上就是内核版本的组成格式,其中的宏定义可以从内核代码中找到。另外几个格式符(%s)的内容就是在kernel/fs/proc/version.c中的如下代码中合成:

static int version_proc_show(struct seq_file *m, void *v)
{
    seq_printf(m, linux_proc_banner,
        utsname()->sysname,
        utsname()->release,
        utsname()->version);
    return 0;
}

3个%s分别对应“utsname()->sysname”,“ utsname()->release”,“utsname()->version)”三个变量信息。

如果想要修改内核版本信息,可以直接在以上两个代码段中修改为字符串即可。

如果改动较大,系统设置中的内核版本号可能会显示不出来,这时候需要在“frameworks\base\packages\SettingsLib\src\com\android\settingslib\DeviceInfoUtils.java”中配合修改代码,才能正常显示。如下部分代码:

public static String formatKernelVersion(String rawKernelVersion) {
        // Example (see tests for more):
        // Linux version 3.0.31-g6fb96c9 (android-build@xxx.xxx.xxx.xxx.com) \
        //     (gcc version 4.6.x-xxx 20120106 (prerelease) (GCC) ) #1 SMP PREEMPT \
        //     Thu Jun 28 11:02:39 PDT 2012

final String PROC_VERSION_REGEX =
                "Linux version (\\S+) " + /* group 1: "3.0.31-g6fb96c9" */
                "\\((\\S+?)\\) " +        /* group 2: "x@y.com" (kernel builder) */
                "(?:\\(gcc.+? \\)) " +    /* ignore: GCC version information */
                "(#\\d+) " +              /* group 3: "#1" */
                "(?:.*?)?" +              /* ignore: optional SMP, PREEMPT, and any CONFIG_FLAGS */
                "((Sun|Mon|Tue|Wed|Thu|Fri|Sat).+)"; /* group 4: "Thu Jun 28 11:02:39 PDT 2012" */

Matcher m = Pattern.compile(PROC_VERSION_REGEX).matcher(rawKernelVersion);
        if (!m.matches()) {
            Log.e(TAG, "Regex did not match on /proc/version: " + rawKernelVersion);
            return "Unavailable";
        } else if (m.groupCount() < 4) {
            Log.e(TAG, "Regex match on /proc/version only returned " + m.groupCount()
                    + " groups");
            return "Unavailable";
        }
        return m.group(1) + "\n" +                 // 3.0.31-g6fb96c9
                m.group(2) + " " + m.group(3) + "\n" + // x@y.com #1
                m.group(4);                            // Thu Jun 28 11:02:39 PDT 2012
    }

以上代码中的版本号格式“PROC_VERSION_REGEX” 是与内核中的“linux_proc_banner”呼应的,如果对应不上,系统设置中就无法正确识别和显示了。

如果只修改系统设置中的内核版本号可以只修改这个DeviceInfoUtils.java文件即可(直接在return后面修改即可)。如果修改使所有app生效,就需要修改内核中的配置了。

RK3399 Android7.1修改安兔兔等第三方软件读到的内核版本信息相关推荐

  1. RK3399 Android7.1修改安兔兔等读到的cpu最大频率为1.992GHz

    RK3399最大频率为1.8GHz,可修改安兔兔等第三方应用读到的cpu最大频率值为1.992GHz,不影响实际运行频率. diff --git a/kernel/drivers/cpufreq/cp ...

  2. [RK3399][Android7.1]修改系统配置同时输出Speaker和USB音频

    参考链接:Android7.1 音频声音控制策略 参考文中给了两种方法,第一种没有成功,第二种成功了.第一种可能是参数给错了,例子给的是Speaker和耳机,我需要的是Speaker和USB音频. 第 ...

  3. rk3399 Android7.1 修改系统时区、修改默认输入法、修改系统默认语言

    1.修改默认语言 进入源码目录,使用如下命令 root@ubuntu:/3399_backup/g3399-v7-1-2-20180529_backup# find . -name full_base ...

  4. RK3399 Android7.1修改系统默认USB功能

    在device\rockchip\common\device.mk中修改persist.sys.usb.config的值,如下将USB功能默认设置为MTP(去掉ADB): ifeq ($(strip ...

  5. android7.1自带壁纸,RK3399 Android7.1 修改壁纸

    1.自定义壁纸 默认壁纸是default_wallpaper,在/frameworks/base/core/res/res,找到drawable-sw720dp-nodpi .drawable-sw6 ...

  6. RK3399 Android7.1修改序列号从eMMC中读取

    若使用RK提供的序列号烧写工具烧写的序列号,则需要修改系统从eMMC/flash中读取烧写的序列号.如下: diff --git a/system/core/drmservice/drmservice ...

  7. RK3399 Android7.1修改系统串口设备的权限

    在device\rockchip\common\ueventd.rockchip.rc中添加代码修改对应串口设备的权限,例如: # for uart /dev/ttyS1                ...

  8. RK3399 Android7.1修改系统电池容量值

    修改device\rockchip\common\overlay\frameworks\base\core\res\res\xml\power_profile.xml中"<item n ...

  9. RK3399 Android7.1修改系统默认壁纸

    替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.jpg 替换frameworks/base/core/res/res/d ...

最新文章

  1. b站看那个的python_用Python获取B站播放历史记录 !男友居然天天背着我看这些!...
  2. office web apps 只有64bit
  3. js断点和调试学习总结3
  4. 软件工程---第四章---形式化分析
  5. python使用欧氏距离knn_python运用sklearn实现KNN分类算法
  6. iframe高度自适应,终于解决了
  7. Hive问题汇总记录,持续更新
  8. java静态初始化块无法直接调用,关于JAVA静态初始化块,初始化块,构造器调用顺序的有关问题...
  9. linux上如何查看具体的命令属于哪个安装包
  10. Anaconda中使用图形化界面创建虚拟环境
  11. python tensorflow 智能家居_用GPU加速深度学习: Windows安装CUDA+TensorFlow教程
  12. quartus仿真34:74161构成长度为10的序列发生器
  13. 手机万能摄像头ip搜索工具_一款 APP,130 多种功能,让你的手机秒变万能工具箱...
  14. mysql进阶教程pdf_SQL进阶教程 (MICK著) 高清pdf完整版
  15. 笔记本护眼设置——全面攻略(保护视力)(笔者倾情奉献+强烈推荐)
  16. gen-cpp/.deps/ChildService.Plo: No such file or directory
  17. 1024程序员节日随笔
  18. 用Python做九宫格照片
  19. 如何阅读论文?读论文的三个层次
  20. 广东药科大学计算机专业分数线,2016广东药科大学录取分数线_省内分数线

热门文章

  1. Altium designer18系列教程一 建工程和封装介绍
  2. win7无线热点_智能手机变成台式电脑的无线网卡来使用并连接WIFI上网的方法
  3. matlab圆周运动仿真,Matlab软件在推导匀速圆周运动方程及绘制图像上的应用
  4. 枝枝叶梗高傲的顶着莲蓬像是
  5. SQL Server中已满事务日志原因的检测
  6. string数据库使用和实践第三部分数据处理 流程-参数--后续分析
  7. ALM系统介绍(三)
  8. xampp control-panel深深的坑
  9. 墨客FileStorm生态与四块科技生态联合发布会
  10. aseprite手机版_texture packs泰拉瑞亚