当前位置: 首页 > 科技观察

啃论文社——将speexdsp移植到OpenHarmony标准系统(六)

时间:2023-03-14 16:01:37 科技观察

了解更多开源请访问:开源基础软件社区https://ost.51cto.com大家好!我来自南京,我在OpenHarmony成长计划论文社。我是今年1月11日加入OpenHarmony的,先后在华为、软通动力、润和软件、拓维信息、深凯鸿等公司工作。该俱乐部已经成立近8个月了。作者一直在思考这篇论文给我带来了什么,通过阅读这篇论文能为OpenHarmony做些什么。作者利用大二到大三的两个月暑假,将三方库Speexdsp移植到了OpenHarmony标准系统中。我似乎找到了上一个问题的答案。下面我将论文和三方库移植的经验分享如下:9.准备上传speexdsp到OpenHarmony仓库。移植完成后,先将代码上传到sig仓库中的contest仓库。sig仓库是TPC仓库的孵化仓库。代码先上传到sig仓库,然后会直接翻译到tpc仓库。上传的内容包括:原生库代码。(除了需要修改原生库代码的部分,其他不能上传,比如编译时产生的中间文件)。构建.gn。自述文件。开源。库导出的所有API接口都是export_api.txt。被测试的api接口tested_api.txt。功能测试文档:三方library_test_function.md。内容至少包括列出库的所有函数,已经测试过的函数,以及原生库的测试逻辑分析。原生库分析文件:三方library_analyse.md。文档命名不要使用中文。如果涉及到编码问题,到时候就会出现乱码。一般建议不要用中文命名!提供OAT.xml文件:OAT开源扫描OAT(OSSAuditTool)是OpenHarmony社区的自动化开源检查工具,用于帮助开发者根据自定义规则自动扫描开源仓库代码,识别不符合要求的代码满足预定规则并输出扫描报告。OAT下载地址:https://gitee.com/openharmony-sig/tools_oat。该工具使用编译构建:在linux上安装java和Maven后,下载OAT工具源码,执行mvnpackage即可完成构建。编译结构成功在父目录下添加OAT.xml,内容如下:COPYING<policylist>在speexdsp根目录下新建一个空白的OAT_report.text文件,执行命令:java–jarohos_ossaudittool-1.0.jar–ssrc_dir–rreport_file–nselfcheckohos_ossaudittool-1.0.jarPath-s指定需要检查的代码目录,src_dir改为需要检查的项目路径-r指定报告输出文件的路径,检查完成后可以查看这里列出的问题file并根据指导文档修复report_file.-n检查任务的名称可以任意指定,不能用于本地检查。例如笔者执行的语句是:sudojava-Dfile.encoding=UTF-8-jar/home/jiajiahao/Desktop/tools_oat-master/target/ohos_ossaudittool-1.0.jar-s/home/jiajiahao/Desktop/gitee_speexdsp-r/home/jiajiahao/Desktop/gitee_speexdsp/OAT_report.text-nnameOfReposcanresult执行以上命令后生成OAT_report.text内容如下:同时在parent下生成一个log文件夹speexdsp的目录。LicenseFile.txt位于OAT工具运行目录的log目录下。该文件记录了扫描目录中所有可疑的许可证文件。原生库通过make或cmake时生成的一些配置文件。比如比较常见的config.h配置文件,config.h文件是native库生成的文件,原则上是不会修改的。为了避免文件在仓库上被扫码,可以修改文件的后缀(config.h.in)。相关文档需要描述如何使用配置文件。提供的README.Opensource文件格式如下:[{"Name":"",##库名"License":"",##开源协议"LicenseFile":",##开源文件,一般开源的项目都会自带这个文件"VersionNumber":"",##库的版本"Owner":"",##theauthor"UpstreamURL":"",##theaddressofthelibraryopensourcelibrary"Description":""##库说明}]speexdsp的README.OpenSource文件如下:[{"Name":"speexdsp","License":"BSD-3-Clause","LicenseFile":"COPYING","VersionNumber":"1.2.1","Owner":"2692032597@qq.com","UpstreamURL":"https://speex.org/","Description":《Speexdsp是Speex编解码器自带的语音处理库》}]提供库分析文档三方库分析文档如下:1.确定库实现,例如:C/C++/JS/JAVA2.依赖分析,例如:当前库依赖其他三方库,如下1)库名1,库仓库地址2)库名2,库仓库地址3,license和copyright例如:一般在licensefileorCOPYING,ApacheLicenseV2.04,xx年xx月最新版本xx,版本号xxx5、功能点分析(列出库支持的功能)6、代码量(统计库代码总行数,包括.h/.hpp/.c/.cpp/.cc和其他代码相关的文件)提供功能测试文档需要列出:库的所有功能都已经过测试原生库测试逻辑分析,提供导出的api接口列表,库暴露的所有api接口列表,库暴露的测试api接口列表。10、上传speexdsp到OpenHarmony仓库配置个人信息打开gitbash,依次输入以下命令:gitconfig--globaluser.name"xxxx"(配置用户名,xxxx为账户用户名,即个人空间地址)gitconfig--globaluser.email"xxxxxx@xxx"(只要保持gitee账号邮箱和签DCO的邮箱一致即可)gitconfig--list(查看配置)gitconfig--globalcredential.helperstore(解决每次gitpull需要输入账号信息的问题)克隆仓库内容到本地,点击个人账号进入竞赛仓库,fork仓库:进入克隆界面,复制克隆的链接地址。执行如下语句:gitclonehttps://gitee.com/xxxxx/contest.git--depth=1–depth=1表示只克隆当前仓库的最新版本,保存一些历史日志,避免仓库历史记录过多记录。克隆时间过多。克隆完成后,可以在本地目录看到克隆的仓库。本地目录的位置由gitbash的位置决定。比如在桌面启动gitbash,克隆仓库就会出现在桌面上。使用gitlfs机制添加特殊文件提交到第三方库时,文档中有PDF文件时需要使用gitlfs机制。gitlfstrackxxx/xxx.pdf//将特殊文件声明到gitlfs机制gitadd.gitattributes//添加配置文件gitaddxxx/xxx.pdf//将特定特殊文件添加到暂存区gitlfsls-files//确认相关的test_lfs.a文件是否加入lfs机制。gitadd*//将修改后的文件添加到暂存区gitcommit-s-m"add:knowledgesystem7_10dayexperience"//签名并提交暂存区内容到本地-s为签名表示这次committer的签名(signoff)。-m是对这个提交行为进行评论。将本地修改推送到账号仓库现在需要在gitee上fork之后将本地仓库修改的内容推送到个人仓库,使用gitpush命令完成这个动作。gitpushoriginmasterorigin指的是你的仓库对应的原始远程服务器地址。master标识您要提交到的分支。您可以使用gitremote-v查看配置的远程服务器。gitbranch-a查看所有分支。进入自己的账号,查看这个仓库,发现发生了变化。从个人账户仓库提交PR到官方仓库。进入个人账户下的仓库,点击添加PR开始提交PR。提交pr时,有100多个文件要push,但是pr页面只显示100个。了解更多开源知识,请访问:开源基础软件社区https://ost.51cto.com。