You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dexguard保护后APK缺失libreactnativejni.so致崩溃求助

Dexguard保护APK后缺失libreactnativejni.so导致启动崩溃的解决方法

问题描述

未受保护的APK可正常启动,使用Dexguard保护后的APK启动时崩溃,报错信息为:
androidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: library "libreactnativejni.so" not found
检查发现普通APK中存在libreactnativejni.so,但受保护APK中缺失该文件。当前Dexguard配置如下:

-keep class **.so
-keepdirectories lib/**
-keep class **.libreactnativejni { *; }

解决方案

  • 现有配置存在逻辑错误:-keep class **.so 是针对Java类的保留规则,对Native库文件完全无效,Dexguard无法通过这条规则识别并保留.so文件。
  • 添加Native库专属保留规则:使用-keepresources指令指定保留目标.so文件,这是Dexguard中用于保留资源/原生文件的正确指令:
    # 保留所有架构下的libreactnativejni.so
    -keepresources lib/**/libreactnativejni.so
    
    # 或者如果只针对特定架构,可精准指定
    # -keepresources lib/armeabi-v7a/libreactnativejni.so
    # -keepresources lib/arm64-v8a/libreactnativejni.so
    
  • 移除无效配置:-keep class **.libreactnativejni { *; } 试图保留不存在的Java类,完全无意义,直接删除即可。
  • 额外检查:确认Gradle构建脚本中的packagingOptions没有设置排除.so文件的规则,避免Dexguard处理前就丢失了Native库。

内容的提问来源于stack exchange,提问作者Suppose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 19:07:04