三方共享包分为静态共享包HAR和动态共享包HSP,两种共享包的源码调试方式有所区别,具体请查看以下指导。

HAR源码调试

HAR包的引用存在两个模式,对应的源码调试也有差异:

说明

  • attach调试时需要注意被调试应用的HAR包引用方式,需要保证本地工程引用HAR方式与被attach调试应用引用方式保持一致。
  • CPP调试需要保证so文件附带调试信息
  • 引用方式1:引用本地工程的其他module。

    "dependencies": {  "library": "file:../library",}
    

    源码调试:关联本地模块源码进行调试,此时在对应module源码上进行调试。

  • 引用方式2:引用本地HAR包或引用ohpm仓中的HAR包。

    "dependencies": {  "package": "file:./package.har",}
    

    源码调试:

    • 如果HAR包在本地无对应源码,此时应用构建打包时引用的源码来源是oh_modules目录下的源码,只能针对oh_modules下源码进行调试。

    • 如果HAR包在本地有对应源码,调试时可关联本地源码以实现对源码的调试。

      • 关联本地源码方式一:

        如果工程依赖了远程仓库的HAR包,本地也有相应的源代码,可以通过修改前缀配置进行attach调试。

        如下图所示,工程依赖了远程HAR包(也可以是本地的HAR包)。

        外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

        此时可以在Run/Debug Configurations中通过如下配置来进行attach调试。

        点击Run > Edit Configurations > Debugger,点击+,填写remoteUrllocalUrl

        • remoteUrl:应用程序加载HAR包的前缀路径。
        • localUrl:本地生成sourceMap中HAR的前缀路径。

        外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

        remoteUrl和localUrl的获取方式如下:

        由于本地HAR工程不会产生sourceMap,所以需要一个入口。通常是新建一个工程,将HAR的源代码作为本地模块进行依赖。

        外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

        然后build工程生成新的sourceMap,打开sourceMap并找到本地源码的key值前缀,该前缀即为localUrl

        外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

        启动attach调试,在debug窗口获取程序加载时的前缀,该前缀即为remoteUrl

        外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

        配置完成后,再进行attach调试,此时便可在源码中断点命中及打断点。

        外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

      • 关联本地源码方式二:

        • ets源码关联使用方法:当Step Into进入oh_modules中的ets代码后,会弹出源码关联的提示时,请点击“Choose Sources”,选择本地对应ets源码进行关联。

          外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

        • C++源码关联使用方法:当Step Into进入汇编代码后,会弹出源码关联的提示,请点击“Select file”,选择本地对应C++源码进行关联。

          外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

字节码HAR调试

C++代码调试

  1. 如果HAP/HSP引用字节码HAR包,同时HAR包中包含C++代码,对该HAR包进行调试,在native调试配置界面中的Symbol Directories页签,点击“+”,添加带调试信息的so文件,so文件在{ProjectPath}/{ModuleName}/build/{product}/intermediates/libs/default/arm64-v8a路径下。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  2. DevEco Studio调试应用时会优先加载配置的so文件,本地so文件包含调试信息时,开发者可以正常调试源码。由于so的源码文件信息为编译时的文件路径,若与本地的源码文件路径不一致时,可以在LLDB Startup Commands页签中添加命令做映射,示例如下。

    settings set -- target.source-map {old-path} {new-path}
    
    • old-path:编译时的文件路径。
    • new-path:本地的源码文件路径。

    外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ArkTS源码调试

  • 场景一:工程引用字节码HAR且导入该模块代码(确保模块与工程的层级目录和编译HAR包的工程保持一致),由于debug模式编译的字节码HAR中包含sourcemap,调试时默认会关联当前工程的源码,此时可以在HAR模块上直接添加断点。
  • 场景二:字节码HAR是独立的工程,与HAP/HSP主工程(被调试应用)相互独立时,可以在HAR包对应工程上创建demo模块,demo模块对HAR包的引用方式和主工程对HAR包的引用方式保持一致,被调试应用启动后,在demo工程中通过attach方式对应用进行调试,此时可以在demo工程上添加断点。

说明

  • release模式编译的字节码HAR不支持调试。
  • debug模式编译demo工程确保生成sourcemap产物。
  • 引用工程外字节码har的应用,当本地源码所在工程Dual模式同时配置了Symbol Directories和Ets Source Pairs,可在本地源码工程同时attach调试ets及c++断点。

HSP源码调试

如果要调试HSP源码,需要将源码置于本地工程模块下,以[引用本地工程的module方式]进行调试。

最后呢

很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。

而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点

如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。

在这里插入图片描述

针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细鸿蒙(OpenHarmony )手册(共计1236页)与鸿蒙(OpenHarmony )开发入门视频,帮助大家在技术的道路上更进一步。

  • 《鸿蒙 (OpenHarmony)开发学习视频》
  • 《鸿蒙生态应用开发V2.0白皮书》
  • 《鸿蒙 (OpenHarmony)开发基础到实战手册》
  • OpenHarmony北向、南向开发环境搭建
  • 《鸿蒙开发基础》
  • 《鸿蒙开发进阶》
  • 《鸿蒙开发实战》

在这里插入图片描述

总结

鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发。

并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿
1

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐