Google AdMob Ads 库版本 19.4.0 升级到 19.5.0 后,部分设备上出现了新的异常:
Caused by java.lang.ClassNotFoundException
Didn't find class "androidx.work.impl.WorkManagerInitializer" on path: ...
dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:196)
androidx.core.app.CoreComponentFactory.instantiateProvider (CoreComponentFactory.java)
android.app.ActivityThread.installProvider (ActivityThread.java:7213)
android.app.ActivityThread.installContentProviders (ActivityThread.java:6769)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:941)
Run Code Online (Sandbox Code Playgroud)
该异常出现在 Android 8 和 10 的设备上。
AdMob 库 19.5.0 添加了对 WorkManager 2.1.0 的依赖项(通过 Play Services Ads Lite 库): https://mvnrepository.com/artifact/com.google.android.gms/play-services-ads-lite/19.5.0
在这个问题上有一个类似的问题,但它似乎是无关的(较旧的Android操作系统版本具有多个dex,而这里是单个dex和较新的操作系统版本)。
目前我降级到 AdMob 19.4.0,其中不包含 WorkManager 依赖项。
更新(2020.12.18)
将 Install Referrer Library 从 v1.0 更新到 v1.1 添加了以下权限:
WRITE_EXTERNAL_STORAGE
READ_EXTERNAL_STORAGE
READ_PHONE_STATE
这些权限不存在于 Install Referrer Library manifest.xml 中:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.installreferrer" >
<uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE" />
<application />
</manifest>
Run Code Online (Sandbox Code Playgroud)
来源:https : //mvnrepository.com/artifact/com.android.installreferrer/installreferrer/1.1
为什么将这些权限添加到合并的清单中?
在使用 Google Play 游戏服务登录集成更新多个游戏后,预发布报告中出现以下异常:
Exception java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=969353318, result=-1, data=null} to activity {com.google.android.gms/com.google.android.gms.games.ui.signinflow.SignInActivity}: java.lang.IllegalStateException: Not connected. Call connect() and wait for onConnected() to be called.
at android.app.ActivityThread.deliverResults (ActivityThread.java:5347)
at android.app.ActivityThread.handleSendResult (ActivityThread.java:5386)
at android.app.servertransaction.ActivityResultItem.execute (ActivityResultItem.java:67)
at android.app.servertransaction.ActivityTransactionItem.execute (ActivityTransactionItem.java:45)
at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2308)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loopOnce (Looper.java:201)
at android.os.Looper.loop (Looper.java:288)
at android.app.ActivityThread.main (ActivityThread.java:7898)
at java.lang.reflect.Method.invoke (Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:936)
Caused by java.lang.IllegalStateException: Not connected. Call connect() and wait for …Run Code Online (Sandbox Code Playgroud) 将 Crashlytics 从 18.2.13 更新到 18.3.0 版本后,显示以下 R8 警告:
缺少类 com.google.android.datatransport.runtime.ForcedSender (引用自:void com.google.firebase.crashlytics.internal.send.ReportQueue.lambda$flushScheduledReportsIfAble$0(java.util.concurrent.CountDownLatch))
在 Android Studio 中使用 DexGuard 时,调试构建非常慢。