java.lang.NoClassDefFoundError: 无法解析 Landroidx/arch/core/util/Cancellable 的错误

5

我把我的应用项目拆分成其他模块,在实现 DI 并将依赖项跨模块拆分后,出现了这个异常:

java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/arch/core/util/Cancellable;
        at androidx.activity.ComponentActivity.<init>(ComponentActivity.java:69)
        at androidx.fragment.app.FragmentActivity.<init>(FragmentActivity.java:118)
        at androidx.appcompat.app.AppCompatActivity.<init>(AppCompatActivity.java:77)

然后,我检查了ComponentActivity类,发现该类找不到Cancellable类。

package androidx.activity;  

import static android.os.Build.VERSION.SDK_INT;  

import android.os.Build;  
import android.os.Bundle;  
import android.view.View;  
import android.view.Window;  

import androidx.annotation.CallSuper;  
import androidx.annotation.ContentView;  
import androidx.annotation.LayoutRes;  
import androidx.annotation.NonNull;  
import androidx.annotation.Nullable;  
import androidx.arch.core.util.Cancellable; // <---- This class can't be found!
import androidx.lifecycle.GenericLifecycleObserver;  
import androidx.lifecycle.Lifecycle;  
import androidx.lifecycle.LifecycleOwner;  
import androidx.lifecycle.LifecycleRegistry;  
import androidx.lifecycle.ReportFragment;  
import androidx.lifecycle.ViewModelStore;  
import androidx.lifecycle.ViewModelStoreOwner;  
import androidx.savedstate.SavedStateRegistry;  
import androidx.savedstate.SavedStateRegistryController;  
import androidx.savedstate.SavedStateRegistryOwner;  

import java.util.WeakHashMap;  

/**  
 * Base class for activities that enables composition of higher level components. * <p>  
  * Rather than all functionality being built directly into this class, only the minimal set of  
 * lower level building blocks are included. Higher level components can then be used as needed * without enforcing a deep Activity class hierarchy or strong coupling between components. */public class ComponentActivity extends androidx.core.app.ComponentActivity implements  
  LifecycleOwner,  
  ViewModelStoreOwner,  
  SavedStateRegistryOwner {

在查看完包之后,我决定添加以下依赖项: implementation "androidx.core:core:1.1.0-alpha05" 但是,它仍然失败了。
然后我在StackOverflow上检查了一些问题,推荐使用Multidex,所以我在我的build.gradle文件中启用了Multidex,但仍然失败了。
我像这样添加了Multidex: implementation "androidx.multidex:multidex:2.0.0" build.gradle
defaultConfig {  
// Config stuff
  multiDexEnabled = true  
}

我希望将我的Application类扩展为MultiDexApplication类,并且进行调整,然而仍然失败了。

看起来我在这里缺少一个依赖项,但我找不到它。:c

1个回答

4
根据androidx.arch.core发布说明

Cancellable 接口已被弃用,因缺乏可组合的基础设施,并且已从 androidx.activity 1.0.0-alpha07 的公共API中删除。(aosp/945461

因此,您应该升级到 Activity 1.0.0-alpha07 或更高版本,以消除 ComponentActivity 对 Cancellable 的依赖。当您升级到 Fragments 1.1.0-alpha07 或更高版本时,这将自动完成。

谢谢!所以只需要更新依赖版本。 - Alfredo Bejarano

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接