uniapp 使用 UTSAndroidHookProxy 初始化安全联盟oaid sdk 首次打开应用不执行 应用崩溃

uniapp 使用 UTSAndroidHookProxy 初始化安全联盟oaid sdk 首次打开应用不执行 应用崩溃

问题描述

uniapp 使用 UTSAndroidHookProxy,初始化安全联盟oaid sdk,首次打开应用不执行,应用崩溃。

自定义基座和第二次打开都没有问题,解决不了,求助大佬。

java.lang.UnsatisfiedLinkError: No implementation found for int com.bun.miitmdid.e.b()
8 回复

System.loadLibrary(“msaoaidsec”); 加载原生包加不上


so文件 需要自定义基座后才可以使用。

没太理解,大佬可以帮忙详细解释一下吗?有啥解决方案吗?首次安装打开崩溃,第二次打开就都正常了

自定义基座都正常,就是打正式包才有问题

FATAL EXCEPTION: main Process: com.goodallst, PID: 12785 java.lang.UnsatisfiedLinkError: No implementation found for int com.bun.miitmdid.e.b() (tried Java_com_bun_miitmdid_e_b and Java_com_bun_miitmdid_e_b__) at com.bun.miitmdid.e.b(Native Method) at com.bun.miitmdid.core.MdidSdkHelper.<clinit>(Unknown Source:0) at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:454) at java.lang.Class.forName(Class.java:379) at io.dcloud.p.e3.a(SourceFile:2) at io.dcloud.p.e3.b(SourceFile:3) at io.dcloud.a.i(SourceFile:15) at io.dcloud.a.onPrivacySureAction(SourceFile:1) at io.dcloud.WebAppActivity.onPrivacySureAction(SourceFile:1) at io.dcloud.a$g.a(SourceFile:10) at io.dcloud.common.ui.PrivacyManager$a.a(SourceFile:6) at io.dcloud.common.ui.a$c$a.onClick(SourceFile:2) at android.view.View.performClick(View.java:7729) at android.view.View.performClickInternal(View.java:7698) at android.view.View.access$3700(View.java:886) at android.view.View$PerformClick.run(View.java:30220) at android.os.Handler.handleCallback(Handler.java:966) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loopOnce(Looper.java:205) at android.os.Looper.loop(Looper.java:293) at android.app.ActivityThread.loopProcess(ActivityThread.java:10022) at android.app.ActivityThread.main(ActivityThread.java:10011) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:586) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1242)

“enableOAID”: false 已经配置了,但是为啥io.dcloud.p.e3.a还会加载这个class

提供一个可以复现问题的最简示例。

这是一个典型的 UTS 原生插件初始化时序问题。错误 UnsatisfiedLinkError 表明 OAID SDK 的 JNI 库在调用时尚未加载完成。

问题分析:

  1. 首次启动崩溃:UTSAndroidHookProxy 的初始化可能早于 OAID SDK 的 so 库加载
  2. 自定义基座正常:基座打包时 so 库已预加载,避开了时序问题
  3. 二次启动正常:首次崩溃后系统可能缓存了 so 库,后续启动时序不再冲突

解决方案:

修改 UTSAndroidHookProxy.kt,确保在 OAID SDK 初始化前显式加载 so 库:

override fun onProxyCreate() {
    super.onProxyCreate()
    
    // 提前加载 OAID SDK 的 so 库
    try {
        System.loadLibrary("miitmdid")
    } catch (e: UnsatisfiedLinkError) {
        e.printStackTrace()
    }
    
    // 延迟初始化 OAID SDK
    Handler(Looper.getMainLooper()).postDelayed({
        initOAIDSdk()
    }, 500)
}

private fun initOAIDSdk() {
    // 这里放置你的 OAID SDK 初始化代码
    // 确保在主线程执行
}
回到顶部