V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
honhon
V2EX  ›  Android

一个奇怪的 Java .lang.UnsatisfiedLinkError 异常 异常描述为找不到 libyuv.so

  •  
  •   honhon · 2021-09-29 15:02:55 +08:00 · 9739 次点击
    这是一个创建于 1159 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这是堆栈信息
    java.lang.Runtime.loadLibrary0(Runtime.java:1011)
    java.lang.System.loadLibrary(System.java:1657)
    a.a.a.a.<clinit>(SrsEncoder.java:370)
    a.a.a.b.onReceive(Unknown Source:20)
    android.app.LoadedApk$ReceiverDispatcher$Args.lambda$-android_app_LoadedApk$ReceiverDispatcher$Args_53617(LoadedApk.java:1339)
    android.app.-$Lambda$aS31cHIhRx41653CMnd4gZqshIQ.$m$7(Unknown Source:4)
    android.app.-$Lambda$aS31cHIhRx41653CMnd4gZqshIQ.run(Unknown Source:39)
    android.os.Handler.handleCallback(Handler.java:790)
    android.os.Handler.dispatchMessage(Handler.java:99)
    android.os.Looper.loop(Looper.java:192)
    android.app.ActivityThread.main(ActivityThread.java:6896)
    java.lang.reflect.Method.invoke(Native Method)
    com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:556)
    com.android.internal.os.ZygoteInit.main(ZygoteInit.java:875)

    经判断此调用栈未动态注册广播的回调,但是怎么也找不到 a.a.a.b 这个类在哪里,反编译和各种方式分析 apk 没有发现。
    请大佬们救救孩子
    23 条回复    2021-09-30 10:06:34 +08:00
    zhanlanhuizhang
        1
    zhanlanhuizhang  
       2021-09-29 15:24:23 +08:00
    反编译看看是否存在
    honhon
        2
    honhon  
    OP
       2021-09-29 15:28:28 +08:00
    @zhanlanhuizhang 已经反编译查看过,并没有找到该类
    FATEQiang
        3
    FATEQiang  
       2021-09-29 15:54:42 +08:00
    有可能就是 so 没有被 load 呀,解压 apk 看 so 在里面没有,还有就是编译 so 的选择的架构平台是否支持
    honhon
        4
    honhon  
    OP
       2021-09-29 15:57:40 +08:00
    我现在非常想找到这个 a.a.a.b 的类在哪里,他什么时候注册的
    honhon
        5
    honhon  
    OP
       2021-09-29 15:58:17 +08:00
    @FATEQiang so 不是关键,关键是他是在什么时候调用的
    honhon
        6
    honhon  
    OP
       2021-09-29 16:22:48 +08:00
    不知大家是否熟悉 libyuv.so 这个库
    yorek
        7
    yorek  
       2021-09-29 16:35:31 +08:00 via iPhone
    你把编译时的 mapping 文件找出来,在里面搜 a.a.a.b 看他混淆前是个啥
    honhon
        8
    honhon  
    OP
       2021-09-29 16:38:40 +08:00
    @yorek 没有开启混淆
    honhon
        9
    honhon  
    OP
       2021-09-29 16:40:19 +08:00
    持续等大佬们指教
    crayygy
        10
    crayygy  
       2021-09-29 16:41:26 +08:00
    libyuv 是做颜色空间转换的,你的 app 或者是 SDK 有用到这个 lib 吗?
    这里你能看到的 a.a.a.a 这类消息肯定是被混淆过了,需要编译的时候对应的编译产出的 mapping 文件才能解析的出来。
    至于混淆开没开,看一下 proguard 文件。
    honhon
        11
    honhon  
    OP
       2021-09-29 16:43:44 +08:00
    @crayygy app 没有混淆 a.a.a.a 这个类是可以在 sdk 中找到的,但是没有找到 a.a.a.a 的调用地方
    yorek
        12
    yorek  
       2021-09-29 16:48:17 +08:00 via iPhone
    @honhon 那应该是已经混淆后的三方库引入的,解包看看 manifest,确认这个广播是静态注册还是动态注册。如果是静态注册,查下 menifest merge 日志文件,动态注册的话编译期用插件扫描 API 调用吧。
    honhon
        13
    honhon  
    OP
       2021-09-29 16:49:55 +08:00
    @yorek 推断是动态注册,静态注册的调用栈不是这样的
    crayygy
        14
    crayygy  
       2021-09-29 16:50:46 +08:00
    唯一有用的信息是这个
    a.a.a.a.<clinit>(SrsEncoder.java:370)
    a.a.a.b.onReceive(Unknown Source:20)

    这里的 SrsEncoder 看起来也的确像是可能用到 libyuv 的地方,做视频编码的时候需要做 rgb to yuv 。
    这个类是你的 SDK 里面带的吗? 一般如果是 SDK 的话,这个 so 应该已经被打包在里面了,除非你用的 armeabi-v7a 的 sdk,然后自己编译安装的版本又是一个 armabi-v8a 的版本。 这个就得看 SDK 的配置文件和你 APK 里面具体的文件了。
    yorek
        15
    yorek  
       2021-09-29 16:51:39 +08:00 via iPhone
    @honhon #11 楼 看调用栈是在 aaab 这个广播的 onReceive 方法中,通过 SrsEncoder 这个类型间接调用。得查下 SrsEncoder
    yorek
        16
    yorek  
       2021-09-29 16:55:40 +08:00
    @honhon 你们有配置 ndkFilter 仅仅为 armeabi 吗 这也有可能出现这种问题 一般三方 SDK 只会提供了 v7 v8 两种
    honhon
        17
    honhon  
    OP
       2021-09-29 17:51:03 +08:00
    @yorek 现在情况是 a.a.a.a 这个类反编译能找到,a.a.a.b 反编译没有发现,插件扫描的方式可以指导一下么?或者推荐一下插件,感谢
    honhon
        18
    honhon  
    OP
       2021-09-29 19:21:40 +08:00
    @yorek SrsEncoder 没有注册广播操作
    essicaj
        19
    essicaj  
       2021-09-29 20:32:15 +08:00
    可以把 apk 包抛出来让大家帮你看看
    kekxv
        20
    kekxv  
       2021-09-29 21:09:02 +08:00 via iPhone
    就不能下断点吗?
    honhon
        21
    honhon  
    OP
       2021-09-30 08:48:31 +08:00
    @kekxv 问题不能重现,错误日志在 bugly 查看的
    honhon
        22
    honhon  
    OP
       2021-09-30 08:49:08 +08:00
    @essicaj apk 是公司内部系统,不太方便
    zhanlanhuizhang
        23
    zhanlanhuizhang  
       2021-09-30 10:06:34 +08:00
    那么是不是混淆了。还有 libyuv.so 找不到,是不是,你打的包,硬件选择的是 v7a,v8a 。可能没有相应的文件。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1264 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 23:47 · PVG 07:47 · LAX 15:47 · JFK 18:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.