【发布时间】:2020-01-13 03:42:57
【问题描述】:
当我将 WorkManager 从“2.2.0”升级到“2.3.0-rc01”时,出现以下新错误
导出 APK 时出现错误。
C:\app: Error: Remove androidx.work.impl.WorkManagerInitializer from your AndroidManifest.xml when using on-demand initialization. [RemoveWorkManagerInitializer]
Explanation for issues of type "RemoveWorkManagerInitializer":
If an android.app.Application implements
androidx.work.Configuration.Provider,
the default androidx.work.impl.WorkManagerInitializer needs to be removed
from the
AndroidManifest.xml file.
我不知道为什么我在 2.2.0 中没有收到这样的错误,因为从 2.1.0 开始引入了“按需初始化”。
我不确定,在我的AndroidManifest.xml 中包含以下内容是否正确。
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
tools:node="remove" />
目前,以下是我的Application 课程。
MyApplication 类
public class MyApplication extends MultiDexApplication implements Configuration.Provider {
private static MyApplication me;
@Override
public void onCreate() {
super.onCreate();
me = this;
}
public static MyApplication instance() {
return me;
}
@NonNull
@Override
public Configuration getWorkManagerConfiguration() {
return new Configuration.Builder()
.build();
}
}
我如何构建 WorkManager
public static WorkManager getWorkManager() {
MyApplication myApplication = MyApplication.instance();
if (myApplication == null) {
// Very rare edge case. Not sure how it happens. But, it happens :)
return WorkManager.getInstance();
} else {
return WorkManager.getInstance(myApplication);
}
}
当Application 类为空时,似乎很少有机会执行“默认初始化”(WorkManager.getInstance())。
我可以轻松消除 APK 导出期间的错误,包括以下 provider。但是,这样做对吗?
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="${applicationId}.workmanager-init"
tools:node="remove" />
【问题讨论】:
-
在提供者标签内设置以下属性并再次检查。 android:enabled="false" , android:exported="false"
-
你从哪里给
getWorkManager打电话? -
似乎
tools:node="remove"是正确的方法。我们团队很早就采用了docs中提到的方法,所以这不是什么新鲜事。
标签: android androidx android-workmanager