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

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

  •  
  •   honhon · 2021 年 9 月 29 日 · 13250 次点击
    这是一个创建于 1566 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这是堆栈信息
    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 年 9 月 29 日
    反编译看看是否存在
    honhon
        2
    honhon  
    OP
       2021 年 9 月 29 日
    @zhanlanhuizhang 已经反编译查看过,并没有找到该类
    FATEQiang
        3
    FATEQiang  
       2021 年 9 月 29 日
    有可能就是 so 没有被 load 呀,解压 apk 看 so 在里面没有,还有就是编译 so 的选择的架构平台是否支持
    honhon
        4
    honhon  
    OP
       2021 年 9 月 29 日
    我现在非常想找到这个 a.a.a.b 的类在哪里,他什么时候注册的
    honhon
        5
    honhon  
    OP
       2021 年 9 月 29 日
    @FATEQiang so 不是关键,关键是他是在什么时候调用的
    honhon
        6
    honhon  
    OP
       2021 年 9 月 29 日
    不知大家是否熟悉 libyuv.so 这个库
    yorek
        7
    yorek  
       2021 年 9 月 29 日 via iPhone
    你把编译时的 mapping 文件找出来,在里面搜 a.a.a.b 看他混淆前是个啥
    honhon
        8
    honhon  
    OP
       2021 年 9 月 29 日
    @yorek 没有开启混淆
    honhon
        9
    honhon  
    OP
       2021 年 9 月 29 日
    持续等大佬们指教
    crayygy
        10
    crayygy  
       2021 年 9 月 29 日
    libyuv 是做颜色空间转换的,你的 app 或者是 SDK 有用到这个 lib 吗?
    这里你能看到的 a.a.a.a 这类消息肯定是被混淆过了,需要编译的时候对应的编译产出的 mapping 文件才能解析的出来。
    至于混淆开没开,看一下 proguard 文件。
    honhon
        11
    honhon  
    OP
       2021 年 9 月 29 日
    @crayygy app 没有混淆 a.a.a.a 这个类是可以在 sdk 中找到的,但是没有找到 a.a.a.a 的调用地方
    yorek
        12
    yorek  
       2021 年 9 月 29 日 via iPhone
    @honhon 那应该是已经混淆后的三方库引入的,解包看看 manifest,确认这个广播是静态注册还是动态注册。如果是静态注册,查下 menifest merge 日志文件,动态注册的话编译期用插件扫描 API 调用吧。
    honhon
        13
    honhon  
    OP
       2021 年 9 月 29 日
    @yorek 推断是动态注册,静态注册的调用栈不是这样的
    crayygy
        14
    crayygy  
       2021 年 9 月 29 日
    唯一有用的信息是这个
    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 年 9 月 29 日 via iPhone
    @honhon #11 楼 看调用栈是在 aaab 这个广播的 onReceive 方法中,通过 SrsEncoder 这个类型间接调用。得查下 SrsEncoder
    yorek
        16
    yorek  
       2021 年 9 月 29 日
    @honhon 你们有配置 ndkFilter 仅仅为 armeabi 吗 这也有可能出现这种问题 一般三方 SDK 只会提供了 v7 v8 两种
    honhon
        17
    honhon  
    OP
       2021 年 9 月 29 日
    @yorek 现在情况是 a.a.a.a 这个类反编译能找到,a.a.a.b 反编译没有发现,插件扫描的方式可以指导一下么?或者推荐一下插件,感谢
    honhon
        18
    honhon  
    OP
       2021 年 9 月 29 日
    @yorek SrsEncoder 没有注册广播操作
    essicaj
        19
    essicaj  
    PRO
       2021 年 9 月 29 日
    可以把 apk 包抛出来让大家帮你看看
    kekxv
        20
    kekxv  
       2021 年 9 月 29 日 via iPhone
    就不能下断点吗?
    honhon
        21
    honhon  
    OP
       2021 年 9 月 30 日
    @kekxv 问题不能重现,错误日志在 bugly 查看的
    honhon
        22
    honhon  
    OP
       2021 年 9 月 30 日
    @essicaj apk 是公司内部系统,不太方便
    zhanlanhuizhang
        23
    zhanlanhuizhang  
       2021 年 9 月 30 日
    那么是不是混淆了。还有 libyuv.so 找不到,是不是,你打的包,硬件选择的是 v7a,v8a 。可能没有相应的文件。
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5699 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 02:49 · PVG 10:49 · LAX 18:49 · JFK 21:49
    ♥ Do have faith in what you're doing.