java - Android - AOSP - WorkManager 运行时错误 - java.lang.NoClassDefFoundError:解析失败:Landroidx/work/R$bool
问题描述
我已经构建了一个使用 WorkManager 的 android 应用程序。我现在正在尝试将其构建为系统应用程序,作为 android 9.1 AOSP 项目的一部分。
我已经设法构建了应用程序,但它引发了运行时错误:
Process: MyApp, PID: 4959
java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/work/R$bool;
at androidx.work.impl.WorkManagerImpl.<init>(WorkManagerImpl.java:210)
at androidx.work.impl.WorkManagerImpl.initialize(WorkManagerImpl.java:186)
at androidx.work.WorkManager.initialize(WorkManager.java:204)
at MyApplication.onCreate(MyApplication.java:24)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1155)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5885)
at android.app.ActivityThread.access$1100(ActivityThread.java:200)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1651)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6692)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.work.R$bool" on path: DexPathList[[zip file "/system/priv-app/MyApp/MyApp.apk"],nativeLibraryDirectories=[/system/priv-app/MyApp/lib/arm64, /system/lib64, /system/lib64]]
我假设我需要拉其他东西来解决它androidx.work.R
?
重申一下,当构建为独立的 gradle 构建并部署到同一平台时,相同的应用程序可以工作。
任何帮助将不胜感激
我的Android.mk
样子是这样的:
include $(CLEAR_VARS)
LOCAL_PACKAGE_NAME := MyApp
LOCAL_PRIVATE_PLATFORM_APIS := true
LOCAL_PRIVILEGED_MODULE := true
LOCAL_MODULE_TAGS := optional
LOCAL_MANIFEST_FILE := AndroidManifest.xml
LOCAL_SRC_FILES := $(call all-java-files-under, java)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_DEX_PREOPT := false
LOCAL_USE_AAPT2 := true
LOCAL_PROGUARD_ENABLED := disabled
LOCAL_DX_FLAGS := --multi-dex
LOCAL_STATIC_JAVA_LIBRARIES := \
work-runtime-prebuilt \
room-runtime-prebuilt \
guava
LOCAL_STATIC_ANDROID_LIBRARIES := \
androidx.appcompat_appcompat
include $(BUILD_PACKAGE)
# Prebuilt Java Libraries required by the app
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := \
work-runtime-prebuilt:libs/work-runtime-2.3.4.aar \
room-runtime-prebuilt:libs/room-runtime-2.2.5.aar
include $(BUILD_MULTI_PREBUILT)
正如你所看到的,我已经加入work-runtime-2.3.4.aar
并依赖room-runtime-2.2.5.aar
它,因为它抛出了一个ClassNotFoundException
异常。
我还必须WorkManagerInitializer
像这样在清单中禁用:
<provider
android:name="androidx.work.impl.WorkManagerInitializer"
android:authorities="MyApp.workmanager-init"
android:enabled="false"
android:exported="false" />
而是在我的Application
课堂上初始化它
import androidx.work.Configuration;
import androidx.work.WorkManager;
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
WorkManager.initialize(this, new Configuration.Builder().build());
}
}
作为参考,我的build.gradle
有:
dependencies {
implementation 'androidx.appcompat:appcompat:1.0.0-alpha1' // To match the platform version
implementation 'com.google.guava:guava-collections:r03'
implementation 'androidx.work:work-runtime:2.3.4'
}
解决方案
推荐阅读
- azure-cognitive-search - 如何在 Azure 认知搜索中使用拆分技能?
- node.js - Node.js 错误:“未定义未给出回调函数”
- php - woocommerce中的自定义订单过滤产品
- wpf - 设置 WPF 样式
- javascript - 使用 localStorage 显示总分 - Javascript
- c++ - Boost/Array.hpp:没有这样的文件或目录(在 Visual Studio 2019 上)
- terraform - 访问嵌套的 terraform 输出值
- html - 为什么我的子菜单在 html css 中不起作用
- reactjs - 使用自定义 Axios 和 redux-saga 处理错误
- r - 从 R 中的链接列表下载 PDF 时出错