Unity:AdMob 和 UMP:未找到类“com.google.android.ump.UserMessagingPlatform”

Dro*_*ror 2 unity-game-engine admob

我正在尝试实施 Google AdMob 的 UMP,以实现 GDPR 等合规性。

在设备上部署时,此行运行后不久:

ConsentInformation.Update(request, OnConsentInfoUpdated);
Run Code Online (Sandbox Code Playgroud)

引发以下异常并停止游戏:

16054 16140 Error Unity Caused by: java.lang.ClassNotFoundException: 
Didn't find class "com.google.android.ump.UserMessagingPlatform" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", 
zip file "/data/app/com.packagename-rCIR4M7S0arj_qYzQW_MZg==/base.apk"],
nativeLibraryDirectories=[/data/app/com.packagename-rCIR4M7S0arj_qYzQW_MZg==/lib/arm64, /data/a
Run Code Online (Sandbox Code Playgroud)

我尝试对 Proguard 进行一些更改,例如添加

-keep class com.google.android.gms.internal.consent_sdk.** { <fields>; }
Run Code Online (Sandbox Code Playgroud)

-keepattributes Signature
Run Code Online (Sandbox Code Playgroud)

但他们似乎没有帮助。

在 Unity 编辑器中运行它时没有任何问题。我正在使用 AdMob SDK v11.0.0 运行 Unity 2021.3.9f1。

任何帮助将不胜感激。

小智 5

我的 android/unity 游戏也遇到了同样的问题。

我可以通过将此行添加到我的proguard-user.txt文件中来解决此问题。

-keep public class com.google.android.ump.**{
   public *;
}
Run Code Online (Sandbox Code Playgroud)

所以我的proguard-user.txt看起来像这样。

-keep class com.google.unity.** {
   *;
}
-keep public class com.google.android.gms.ads.**{
   public *;
}
-keep public class com.google.ads.**{
   public *;
}
-keep public class com.google.android.ump.**{
   public *;
}
-keepattributes *Annotation*
-dontobfuscate
Run Code Online (Sandbox Code Playgroud)

另外,我检查了“发布设置”->“Minifiy”下的Minify R8、发布和调试复选框

我希望这对你有用!