无法获取提供者androidx.lifecycle.ProcessLifecycleOwnerInitializr

时间:2019-03-15 07:13:24

标签: android viewmodel androidx android-mvvm

在具有Android 4.4的设备上运行具有'androidx.lifecycle:lifecycle-extensions:2.1.0-alpha03''androidx.lifecycle:lifecycle-viewmodel:2.1.0-alpha03'依赖性的应用程序时出错。

在装有Android 6的设备上工作正常

应用因错误而崩溃

java.lang.RuntimeException: Unable to get provider androidx.lifecycle.ProcessLifecycleOwnerInitializer: java.lang.ClassNotFoundException: Didn't find class "androidx.lifecycle.ProcessLifecycleOwnerInitializer" on path: DexPathList[[zip file "/data/app/**********.apk"],nativeLibraryDirectories=[/data/app-lib/***********, /vendor/lib, /system/lib]]
    at android.app.ActivityThread.installProvider(ActivityThread.java:5052)
    at android.app.ActivityThread.installContentProviders(ActivityThread.java:4623)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4563)
    at android.app.ActivityThread.access$1500(ActivityThread.java:151)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1402)
    at android.os.Handler.dispatchMessage(Handler.java:110)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:5333)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
    at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.lifecycle.ProcessLifecycleOwnerInitializer" on path: DexPathList[[zip file "/data/app/**********.apk"],nativeLibraryDirectories=[/data/app-lib/********, /vendor/lib, /system/lib]]

5 个答案:

答案 0 :(得分:4)

对于Kotlin,请将其添加到您的gradle中:

kotlinOptions {
        jvmTarget = '1.8'
}
compileOptions {
        targetCompatibility = "8"
        sourceCompatibility = "8"
}

答案 1 :(得分:3)

感谢Andrews Alves

From post

这是一个敏捷问题。在Android 4.4中

1-在应用程序gradle中,在defaultConfig内启用multidex

defaultConfig{
  ....
  multiDexEnabled true
}

2-要在其他版本中支持multidex,请将此依赖项添加到您的应用gradle中

implementation 'com.android.support:multidex:1.0.3' 

3-如果您具有扩展Application的类,请使其扩展

  

MultiDexApplication

如果不这样做,请将其添加到应用程序标记内的清单文件中

android:name="android.support.multidex.MultiDexApplication" 

就是这样。为我工作

答案 2 :(得分:1)

您可以找到有关Multidex here的官方文档。使用此链接来检查最新的multidex gradle依赖版本。

如果您使用的是AndroidX

from bs4 import BeautifulSoup
from selenium import webdriver

url = 'https://imgur.com/t/lenovo/mLwnorj'
browser = webdriver.Firefox()
browser.get(url)
soup = BeautifulSoup(browser.page_source, 'html.parser')
images = soup.find_all('img', {'class': 'post-image-placeholder'})

[print(image['src']) for image in images]

# //i.imgur.com/JfLsH5yr.jpg
# //i.imgur.com/lLcKMBzr.jpg

否则使用

dependencies {
    def multidex_version = "2.0.1" // Check this from the link
    implementation 'androidx.multidex:multidex:$multidex_version'
}

答案 3 :(得分:1)

就我而言,Pie(Android9)上的Android捆绑包以某种方式省略了android体系结构生命周期文件。因此,我在proguard-rules.pro

中添加了keep语句,以保持一致

对于AndroidX:

-keep class androidx.lifecycle.** {*;}

获得支持:

-keep class android.arch.lifecycle.** {*;}

答案 4 :(得分:0)

对我来说,以上方法均无效。也重新启动并无效没有做任何事情。 卸载应用程序并“构建>清理项目”后,一切正常。