一种安卓系统固件源代码还原方法及存储介质技术方案

技术编号:19008947 阅读:31 留言:0更新日期:2018-09-22 08:51
一种安卓系统固件源代码还原方法及存储介质,其中方法包括步骤,保存固件源代码根目录下的.repo/manifests目录的仓库信息,所述仓库信息包括.repo/manifests目录远端仓库地址信息、分支名信息以及manifest文件名;保存固件源代码根目录下所有子仓库的提交信息为本地仓库提交信息文件,所述提交信息包括子仓库的远端仓库地址信息、子仓库的分支名信息以及子仓库的本地提交号;以满足在系统固件的设计过程中需要提取编译状态进行还原修改的问题。

A firmware source code recovery method and storage medium for Android system

An Android firmware source code restore method and storage medium, wherein the method includes steps to save the warehouse information of the. repo / manifests directory under the firmware source code root directory, the warehouse information includes the remote warehouse address information of the. repo / manifests directory, the branch name information and the manifest file name, and the firmware source code is saved. The submission information of all sub-warehouses in the root directory is the submission information file for the local warehouse. The submission information includes the remote address information of the sub-warehouse, the branch name information of the sub-warehouse, and the local submission number of the sub-warehouse.

【技术实现步骤摘要】
一种安卓系统固件源代码还原方法及存储介质
本专利技术涉及安卓系统设计领域,尤其涉及一种安卓系统固件源代码还原方法。
技术介绍
目前编译出来的Android固件并不包含是从哪份源代码编译出来的信息。客户将这样的固件烧录进设备后,一旦出现问题,无从考证代码状态。基于这个现状,本专利技术提出一种能够从Android固件中还原此固件的源代码的方法,用来帮助问题的处理。处理该问题的研发人员,能够从固件文件或者烧录到设备上的固件中提取它所对应的源码状态信息,进而还原出相同的测试环境复现问题,有益于问题的处理。为实现从Android固件中还原此固件的源代码的方法,需要从固件生成方式上入手,在编译时收集必要的当前代码状态信息,并保存到固件中。当需要确认该固件所对应的源代码时,可以从固件文件或者已经烧录了该固件的设备上提取当时编译的代码状态信息,进而将当时的代码状态完整还原出来。
技术实现思路
为此,需要提供一种安卓系统固件代码的还原方法,以满足在系统固件的设计过程中需要提取编译状态进行还原修改的问题;为实现上述目的,专利技术人提供了一种安卓系统固件源代码还原方法,包括步骤,保存固件源代码根目录下的.repo/manifests目录的仓库信息,所述仓库信息包括.repo/manifests目录远端仓库地址信息、分支名信息以及manifest文件名;保存固件源代码根目录下所有子仓库的提交信息为本地仓库提交信息文件,所述提交信息包括子仓库的远端仓库地址信息、子仓库的分支名信息以及子仓库的本地提交号;保存固件源代码根目录下所有子仓库与其对应的远端仓库的差异代码信息,所述差异代码信息包括子仓库所跟踪的远端仓库分支名、子仓库与子仓库所跟踪的远端仓库的合并基准提交号、子仓库与子仓库所跟踪的远端仓库的差异代码,分别将结果输出到带有子仓库目录名信息的文件夹;将上述代码状态信息保存至代码状态信息集文件夹,再将文件夹压缩后集成到安卓编译系统,生成第一代码状态信息集保存进固件;在需要还原固件源代码时,从固件中分离所述第一代码状态信息集,根据第一代码状态信息集,下载.repo/manifests文件夹所对应的远端仓库的最新内容,替换默认指向的manifest.xml为本地仓库提交信息文件,将本地仓库提交信息文件中的本地提交号改为差异代码信息中的合并基准提交号,进而通过reposync还原出未打上差异代码补丁的源代码;遍历第一代码状态信息集当中的差异代码文件夹,将差异代码合并入源代码,即可完整还原出固件对应的源代码。进一步地,还包括步骤,遍历固件源代码工程中所有由manifest管理的git代码仓库,收集子仓库所跟踪的远端仓库分支名、子仓库与子仓库所跟踪的远端仓库的合并基准提交号、子仓库与子仓库所跟踪的远端仓库的差异代码,分别将结果输出到带有子仓库目录名信息的文件夹;将所述第一代码状态信息集压缩为代码状态信息集压缩包,集成进安卓固件中。具体地,保存固件源代码根目录下所有子仓库与其对应的远端仓库的差异代码信息具体包括步骤,判断当前仓库是否为未修改的AOSP仓库,若否,即修改过AOSP代码或者引进的新仓库,还进行下述步骤:找出本地已提交但未上传或合并进远端代码仓库的提交集,然后记录该仓库的远端仓库地址和指向的分支名,找出本地提交与远端代码仓库的合并基准点并将其记录;遍历所有修改过的代码仓库,找出本地未提交的差异代码,将本地未提交的差异代码保存到带有子仓库目录名信息的文件夹。优选地,所述步骤,将所述代码状态信息集文件夹压缩,集成进安卓编译系统的新生成固件中具体包括步骤,向安卓编译系统的设备编译配置文件中添加PRODUCT_COPY_FILES脚本,所述脚本用于代码状态信息集压缩包集成到系统格式的固件镜像文件中;执行编译命令make,根据上述添加的脚本,执行保存当前代码状态的脚本程序;待编译系统完成编译,生成当前代码状态的信息集,并保存进安卓固件中。进一步地,还包括步骤,从设备固件中分离代码状态信息集,根据manifest远程仓库地址信息,分支下载地址信息,manifest文件名信息,使用repoinit命令获取当前最新的manifest.xml内容;修改默认指向的manifest.xml,使其能够通过reposync下载到未打上差异代码补丁的源代码,步骤包括:替换默认指向的manifest.xml为本地仓库提交信息文件,遍历所有差异代码信息文件夹,获取保存了合并基准点提交号信息的文件夹,通过该文件夹名中带的仓库目录名信息,找到manifest.xml文件中相同仓库目录名的行,替换该行中的提交号为合并基准点提交号;进而通过reposync还原出未打上差异代码补丁的源代码;遍历所有差异代码信息文件夹,通过文件夹名中带的仓库目录名信息,将差异代码补丁文件分别拷贝到对应代码仓库目录下;所述补丁文件包括本地未提交补丁和本地已提交但未合并到远程仓库的补丁,将补丁文件更新到源代码上,即可完成固件所对应的源代码的完整还原。一种安卓系统固件源代码还原存储介质,存储有计算机程序,所述计算机程序在被运行时执行下述步骤,保存固件源代码根目录下的.repo/manifests目录的仓库信息,所述仓库信息包括.repo/manifests目录远端仓库地址信息、分支名信息以及manifest文件名;保存固件源代码根目录下所有子仓库的提交信息为本地仓库提交信息文件,所述提交信息包括子仓库的远端仓库地址信息、子仓库的分支名信息以及子仓库的本地提交号;保存固件源代码根目录下所有子仓库与其对应的远端仓库的差异代码信息,所述差异代码信息包括子仓库所跟踪的远端仓库分支名、子仓库与子仓库所跟踪的远端仓库的合并基准提交号、子仓库与子仓库所跟踪的远端仓库的差异代码,分别将结果输出到带有子仓库目录名信息的文件夹;将上述代码状态信息保存至代码状态信息集文件夹,再将文件夹压缩后集成到安卓编译系统,生成第一代码状态信息集保存进固件;在需要还原固件源代码时,从固件中分离所述第一代码状态信息集,根据第一代码状态信息集,下载.repo/manifests文件夹所对应的远端仓库的最新内容,替换默认指向的manifest.xml为本地仓库提交信息文件,将本地仓库提交信息文件中的本地提交号改为差异代码信息中的合并基准提交号,进而通过reposync还原出未打上差异代码补丁的源代码;遍历第一代码状态信息集当中的差异代码文件夹,将差异代码合并入源代码,即可完整还原出固件对应的源代码。进一步地,所述计算机程序在被运行时还执行步骤,遍历固件源代码工程中所有由manifest管理的git代码仓库,收集子仓库所跟踪的远端仓库分支名、子仓库与子仓库所跟踪的远端仓库的合并基准提交号、子仓库与子仓库所跟踪的远端仓库的差异代码,分别将结果输出到带有子仓库目录名信息的文件夹;将所述第一代码状态信息集压缩为代码状态信息集压缩包,集成进安卓固件中。具体地,所述计算机程序进行保存固件源代码根目录下所有子仓库与其对应的远端仓库的差异代码信息具体包括步骤,判断当前仓库是否为未修改的AOSP仓库,若否,即修改过AOSP代码或者引进的新仓库,还进行下述步骤:找出本地已提交但未上传或合并进远端代码仓库的提交集,然后记录该仓库的远端仓库地址和指向的分支名,找本文档来自技高网...
一种安卓系统固件源代码还原方法及存储介质

【技术保护点】
1.一种安卓系统固件源代码还原方法,其特征在于,包括步骤,保存固件源代码根目录下的.repo/manifests目录的仓库信息,所述仓库信息包括.repo/manifests目录远端仓库地址信息、分支名信息以及manifest文件名;保存固件源代码根目录下所有子仓库的提交信息为本地仓库提交信息文件,所述提交信息包括子仓库的远端仓库地址信息、子仓库的分支名信息以及子仓库的本地提交号;保存固件源代码根目录下所有子仓库与其对应的远端仓库的差异代码信息,所述差异代码信息包括子仓库所跟踪的远端仓库分支名、子仓库与子仓库所跟踪的远端仓库的合并基准提交号、子仓库与子仓库所跟踪的远端仓库的差异代码,分别将结果输出到带有子仓库目录名信息的文件夹;将上述代码状态信息保存至代码状态信息集文件夹,再将文件夹压缩后集成到安卓编译系统,生成第一代码状态信息集保存进固件;在需要还原固件源代码时,从固件中分离所述第一代码状态信息集,根据第一代码状态信息集,下载.repo/manifests文件夹所对应的远端仓库的最新内容,替换默认指向的manifest.xml为本地仓库提交信息文件,将本地仓库提交信息文件中的本地提交号改为差异代码信息中的合并基准提交号,进而通过repo sync还原出未打上差异代码补丁的源代码;遍历第一代码状态信息集当中的差异代码文件夹,将差异代码合并入源代码,即可完整还原出固件对应的源代码。...

【技术特征摘要】
1.一种安卓系统固件源代码还原方法,其特征在于,包括步骤,保存固件源代码根目录下的.repo/manifests目录的仓库信息,所述仓库信息包括.repo/manifests目录远端仓库地址信息、分支名信息以及manifest文件名;保存固件源代码根目录下所有子仓库的提交信息为本地仓库提交信息文件,所述提交信息包括子仓库的远端仓库地址信息、子仓库的分支名信息以及子仓库的本地提交号;保存固件源代码根目录下所有子仓库与其对应的远端仓库的差异代码信息,所述差异代码信息包括子仓库所跟踪的远端仓库分支名、子仓库与子仓库所跟踪的远端仓库的合并基准提交号、子仓库与子仓库所跟踪的远端仓库的差异代码,分别将结果输出到带有子仓库目录名信息的文件夹;将上述代码状态信息保存至代码状态信息集文件夹,再将文件夹压缩后集成到安卓编译系统,生成第一代码状态信息集保存进固件;在需要还原固件源代码时,从固件中分离所述第一代码状态信息集,根据第一代码状态信息集,下载.repo/manifests文件夹所对应的远端仓库的最新内容,替换默认指向的manifest.xml为本地仓库提交信息文件,将本地仓库提交信息文件中的本地提交号改为差异代码信息中的合并基准提交号,进而通过reposync还原出未打上差异代码补丁的源代码;遍历第一代码状态信息集当中的差异代码文件夹,将差异代码合并入源代码,即可完整还原出固件对应的源代码。2.根据权利要求1所述的安卓系统固件源代码还原方法,其特征在于,还包括步骤,遍历固件源代码工程中所有由manifest管理的git代码仓库,收集子仓库所跟踪的远端仓库分支名、子仓库与子仓库所跟踪的远端仓库的合并基准提交号、子仓库与子仓库所跟踪的远端仓库的差异代码,分别将结果输出到带有子仓库目录名信息的文件夹;将所述第一代码状态信息集压缩为代码状态信息集压缩包,集成进安卓固件中。3.根据权利要求2所述的安卓系统固件源代码还原方法,其特征在于,保存固件源代码根目录下所有子仓库与其对应的远端仓库的差异代码信息具体包括步骤,判断当前仓库是否为未修改的AOSP仓库,若否,即修改过AOSP代码或者引进的新仓库,还进行下述步骤:找出本地已提交但未上传或合并进远端代码仓库的提交集,然后记录该仓库的远端仓库地址和指向的分支名,找出本地提交与远端代码仓库的合并基准点并将其记录;遍历所有修改过的代码仓库,找出本地未提交的差异代码,将本地未提交的差异代码保存到带有子仓库目录名信息的文件夹。4.根据权利要求2所述的安卓系统固件源代码还原方法,其特征在于,所述步骤,将所述代码状态信息集文件夹压缩,集成进安卓编译系统的新生成固件中具体包括步骤,向安卓编译系统的设备编译配置文件中添加PRODUCT_COPY_FILES脚本,所述脚本用于代码状态信息集压缩包集成到系统格式的固件镜像文件中;执行编译命令make,根据上述添加的脚本,执行保存当前代码状态的脚本程序;待编译系统完成编译,生成当前代码状态的信息集,并保存进安卓固件中。5.根据权利要求1所述的安卓系统固件源代码还原方法,其特征在于,还包括步骤,从设备固件中分离代码状态信息集,根据manifest远程仓库地址信息,分支下载地址信息,manifest文件名信息,使用repoinit命令获取当前最新的manifest.xml内容;修改默认指向的manifest.xml,使其能够通过reposync下载到未打上差异代码补丁的源代码,步骤包括:替换默认指向的manifest.xml为本地仓库提交信息文件,遍历所有差异代码信息文件夹,获取保存了合并基准点提交号信息的文件夹,通过该文件夹名中带的仓库目录名信息,找到manifest.xml文件中相同仓库目录名的行,替换该行中的提交号为合并基准点提交号;进而通过reposync还原出未打上差异代码补丁的源代码;遍历所有差异代码信息文件夹,通过文件夹名中带的仓库目录名信息,将差异代码补丁文件分别拷贝到对应代码仓库目录下;所述补丁文件包括本地未提交补丁和本地已提交但未合并到远程仓库的补丁,将补丁文件更新到源代码上,即可完成固件所对应的源代码的完整还原。6.一种安卓系统固件源代码还原存储介质,其特征在于,存储有计算机程序,所...

【专利技术属性】
技术研发人员:陈伟
申请(专利权)人:福州瑞芯微电子股份有限公司
类型:发明
国别省市:福建,35

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1