HarmonyOS鸿蒙Next中openharmony5.0应用使用asan闪退

HarmonyOS鸿蒙Next中openharmony5.0应用使用asan闪退 dev版本

cke_489.png

openharmony native C++应用 使用sdk14

entry配置

cke_4925.png

app.json配置

cke_7530.png

现象:

应用启动后直接闪退,并且无crash报错,只有一个entry模块


更多关于HarmonyOS鸿蒙Next中openharmony5.0应用使用asan闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

升级新的编辑器,别升6.0的就行,几个月前6.0刚出就去用了,api12的项目,然后报莫名其妙的错误

更多关于HarmonyOS鸿蒙Next中openharmony5.0应用使用asan闪退的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你这是5.0.2 Beta1,版本太老了, 而且还是beta 版本,最起码差1年以上时间,

建议升级到最新版本 https://developer.huawei.com/consumer/cn/download/

卸载 重启电脑安装最新正式版https://developer.huawei.com/consumer/cn/download/

在HarmonyOS Next的OpenHarmony 5.0环境中,应用使用ASan(AddressSanitizer)时发生闪退,通常与内存访问错误相关。ASan检测到内存越界、使用释放后内存或内存泄漏等问题时会主动终止进程。需检查应用代码中是否存在非法内存操作,例如数组越界、野指针访问。确保NDK版本与ASan工具链兼容,编译时正确启用ASan标志(-fsanitize=address)。验证应用依赖的库是否支持ASan,避免因第三方库内存问题导致崩溃。

从配置和现象来看,OpenHarmony 5.0 Native C++应用在启用ASan(AddressSanitizer)后闪退,可能原因如下:

  1. ASan库未正确加载

    • 检查entry模块的build-profile.json5中是否已正确配置ASan依赖:
      "externalNativeOptions": {
        "path": "./src/main/cpp/CMakeLists.txt",
        "arguments": "-D CMAKE_CXX_FLAGS=-fsanitize=address",
        "cppFlags": "-fsanitize=address"
      }
      
    • 确保app.json5中已声明ASan库的sharedLibrary路径:
      "deviceConfig": {
        "sharedLibrary": [
          "//system/lib64/libclang_rt.asan-aarch64-android.so"
        ]
      }
      
  2. 内存访问越界或泄漏
    ASan会检测内存问题(如堆栈溢出、use-after-free),若代码存在此类问题,会在启动时直接终止进程。建议:

    • 检查C++代码中的数组访问、指针操作等。
    • 通过日志过滤asan关键词,查看是否有ASan报错(需开启HDC日志抓取)。
  3. SDK 14兼容性
    DevEco Studio SDK 14可能对ASan支持不完善,尝试:

    • 使用SDK 15或更新版本验证。
    • 确认CMake版本与ASan配置匹配。
  4. 系统权限限制
    ASan需要额外内存映射权限,检查应用是否配置"apl": "system_basic"(需签名)。

建议优先检查ASan依赖配置完整性,并捕获系统日志定位具体终止原因。

回到顶部