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

Unity Android构建遇Facebook SDK setIsUnityInit方法缺失错误求助

问题:Unity Android构建中Facebook SDK的setIsUnityInit方法缺失错误

错误日志

AndroidJavaException: java.lang.NoSuchMethodError: no static method with name='setIsUnityInit' signature='(Z)V' in class Ljava.lang.Object; java.lang.NoSuchMethodError: no static method with name='setIsUnityInit' signature='(Z)V' in class Ljava.lang.Object; com.unity3d.player.ReflectionHelper.getMethodID(Unknown Source:165) com.unity3d.player.UnityPlayer.nativeRender(Native Method) com.unity3d.player.UnityPlayer.-$$Nest$mnativeRender(Unknown Source:0) com.unity3d.player.UnityPlayer$F$a.handleMessage(Unknown Source:122) android.os.Handler.dispatchMessage(Handler.java:102) android.os.Looper.loopOnce(Looper.java:226) android.os.Looper.loop(Looper.java:313) com.unity3d.player.UnityPlayer$F.run(Unknown Source:24) UnityEngine._AndroidJNIHelper.GetMethodID (System.IntPtr jclass, System.String methodName, System.String signature, System.Boolean isStatic) (at <00000000000000000000000000000000>:0) UnityEngine.AndroidJavaObject._CallStatic (System.String methodName, System.Object[] args) (at <00000000000000000000000000000000>:0) Facebook.Unity.CodelessUIInteractEvent.SetLoggerInitAndroid () (at <00000000000000000000000000000000>:0) UnityEngine.GameObject.AddComponent[T] () (at <00000000000000000000000000000000>:0) Facebook.Unity.FB.Init (Facebook.Unity.InitDelegate onInitComplete, Facebook.Unity.HideUnityDelegate onHideUnity, System.String authResponse) (at <00000000000000000000000000000000>:0) UnityEngine.GameObject:AddComponent() Facebook.Unity.FB:Init(InitDelegate, HideUnityDelegate, String)

背景信息

此前已通过在ProGuard文件中添加-keep class com.facebook.unity.* {*;}解决了AndroidJavaException: java.lang.NoSuchMethodError: no static method with name='SetUserAgentSuffix'错误,但当前setIsUnityInit方法缺失的错误仍未解决。

使用环境:

  • Unity版本:2022.3.15
  • Facebook SDK版本:16.0.2

当前ProGuard配置

-keep class com.google.unity.** {
*;
}
-keep public class com.google.android.gms.ads.{
public *;
}
-keep public class com.google.ads.{
public ;
}
-keepattributes Annotation
-dontobfuscate
-keep class com.gameanalytics.sdk { ; }
-keep class com.gameanalytics.sdk. { *; }

-keep class com.gameanalytics.sdk.GAPlatform { ; }
-keep class com.gameanalytics.sdk.GAPlatform.* { ; }
-keep class android.net.ConnectivityManager.* { ; }
-keep class com.google.android.instantapps.InstantApps { ; }
-keepclassmembers class com.google.android.instantapps.InstantApps{; }
-keep class com.facebook.unity. {*;}

解决建议

  • 修正ProGuard规则语法错误:当前配置存在多处语法问题,会导致规则失效:
    • 将-keep public class com.google.android.gms.ads.{改为-keep public class com.google.android.gms.ads.** {
    • 将-keep public class com.google.ads.{改为-keep public class com.google.ads.** {
    • 移除无效的空声明,比如public ;、{ ; }这类错误写法,改为正确的{ *; }
  • 补充Facebook SDK完整ProGuard规则:仅保留com.facebook.unity包不足以覆盖所有需要的类,添加以下规则:
    -keep class com.facebook.** { *; }
    -keep interface com.facebook.** { *; }
    -keep enum com.facebook.** { *; }
    -keepclassmembers class * implements com.facebook.FacebookCallback {
        <methods>;
    }
    
  • 检查SDK集成完整性:确认Facebook SDK的所有依赖库(如facebook-android-sdk-*.aar、facebook-core-*.aar等)都已正确放置在Unity项目的Plugins/Android目录下,没有缺失或版本不匹配的情况。
  • 清理缓存并重新构建:删除Unity项目的Library、Temp、Obj文件夹,关闭Unity后重新打开项目,执行Clean Build操作,避免缓存导致的代码不一致。
  • 验证构建设置:在Unity的Android构建设置中,确保“Minify”选项设置为“ProGuard”,并且正确指定了ProGuard配置文件的路径,避免规则未被应用。
  • 检查方法归属类:setIsUnityInit方法实际属于Facebook SDK的某个核心类(而非java.lang.Object),确认反射调用时的目标类是否正确,避免因类名错误导致找不到方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 06:40:59