如何调试引用的外部so
已有应用hap包entry-default-signed.hap,hap包包名com.example.soliba 要调试的三方源码so(需携带调试信息)liblocalso.so和其hello.cpp源码文件
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HSP/HAR包中如何引用外部编译的so库文件
2467浏览 • 1回复 待解决
如何引用其他工程编译的so
265浏览 • 0回复 待解决
通过configuration配置调试so
657浏览 • 1回复 待解决
HarmonyOS har包引用so问题
438浏览 • 1回复 待解决
支持调试本地源码无法编译的so
660浏览 • 1回复 待解决
#鸿蒙学习大百科#HSP/HAR如何引用so文件?
172浏览 • 1回复 待解决
通过configuration配置调试本地源码无法编译的so
656浏览 • 1回复 待解决
HarmonyOS C++工程 导入外部so 有开发指南吗?
341浏览 • 1回复 待解决
Har 中的cmakelist.txt 如何引用V8引擎的 V8.so
791浏览 • 1回复 待解决
编译出so,推到klv的/system/lib64/module下,在arkts处引用,undefined
1500浏览 • 1回复 待解决
BUILD.gn引用第三方so文件报错undefined symbol
4278浏览 • 0回复 待解决
docker 如何挂载外部文件?
4361浏览 • 1回复 待解决
如何排查循环引用的问题
357浏览 • 1回复 待解决
调试模式下 报Cause: Can't find any .so file in current module Solution
1946浏览 • 1回复 待解决
应用侧,引用了java的 paho mqtt,调试时出现端口问题,谁能帮忙解决下
5727浏览 • 1回复 待解决
有了代码签名特性后,开发者的so文件在调试,发布等阶段该如何部署
2029浏览 • 1回复 待解决
外部调用har里的方法,如何跳转页面
1841浏览 • 1回复 待解决
匿名内部类如何更新外部类的变量
1689浏览 • 0回复 待解决
如何使用后缀为so.x.y类型的so库,例如libxxx.so.3.1、libxxx.so.3.1.0
1679浏览 • 1回复 待解决
如何引用非本地目录的HSP
1671浏览 • 1回复 待解决
HarmonyOS 如何判断是加载的是系统so还是app本身的so
228浏览 • 1回复 待解决
ArkTS FA模型如何实现从外部文件导入数据/写数据到外部文件
4160浏览 • 1回复 待解决
HarmonyOS如何打开外部地图应用
447浏览 • 1回复 待解决
HarmonyOS 如何适配自己的so库?
445浏览 • 1回复 待解决
如何引用IDE工程外的har包
376浏览 • 1回复 待解决
本地环境构造
已有应用hap包entry-default-signed.hap,hap包包名com.example.soliba 要调试的三方源码so(需携带调试信息)liblocalso.so和其hello.cpp源码文件
详细步骤
1、基于本地C++代码构建生成新so库。demo见solibA; solibA做了如下操作:
a、新建solibA工程,新建C++模块取名为localso;在localso的hello.cpp中定义方法并打多个断点;build编译生成so,路径solibA\localso\build\default\intermediates\libs\default\arm64-v8a
b、将arm64-v8a文件夹复制到entry-libs下,即entry\libs\arm64-v8a\liblocalso.so
c、在entry的build-profile.json5的buildOption下设置编译选项,"abiFilters" : ["arm64-v8a"],即 "externalNativeOptions": { "path": "./src/main/cpp/CMakeLists.txt", "arguments": "", "cppFlags": "", "abiFilters" : ["arm64-v8a"] }
d:entry增加头文件apple.h,写入方法 int getvalue_local(); int add_local(int a, int b);
e:entry的hello.cpp调用方法 #include "apple.h" int value_b = getvalue_local(); value_b += add_local(1,2) + add_local(3, 4);
f、签名,编译entry,在solibA\entry\build\default\outputs\default目录下生成hap包entry-default-signed.hap
2、通过命令将entry-default-signed.hap运行到设备并拉起,参考 hdc install entry-default-signed.hap hdc shell aa start -a EntryAbility -b com.example.soliba
3、打开demo1工程 demo1做了如下操作
a、在entry的build-profile.json5下设置编译选项,"abiFilters" : ["arm64-v8a"] (arm64-v8a代表64位,对应原型机和部分rk的设备,如果编译类型不一致,编译会报错;armeabi-v7a代表32位,根据设备实际系统位数配置)
b、添加三方so库到demo1\entry\libs\arm64-v8a\liblocalso.so c:将源码文件hello.cpp拖到demo1中打开,并在相关行打多个断点
4、demo1工程选中entry,build编译,签名,点击attach,勾选Show all processes,选择com.example.soliba,OK;
设备上点击控件触发调用关系,会打开源码文件即localso的hello.cpp,可进入断点进行调试;点Step Over执行到下一行、点Resume Program执行到下一个断点、点Step Into进到汇编。