java.lang.NoClassDefFoundError: rx.subjects.SerializedSubject

問題は次のとおりです。
ここに画像の説明を書きます

ここに画像の説明を書きます

問題はコード内のこの文を指します

publishBus = new SerializedSubject<>(PublishSubject.<Event>create());

この問題は奇妙です。コンパイルして正常に渡すことはできますが、実行するとアプリがクラッシュします。最初に問題の解決策について話してから、原理を説明します。

  1. build.gradle を変更します。

    defaultConfig { 
        ...
        multiDexEnabled true
        }
        ...
        dependencies {
        compile 'com.android.support:multidex:1.0.1'
        ...
        }
  2. CustomApplication onCreate() に MultiDex.install(getBaseContext()) を追加するか、アプリケーション クラスが MultiDexApplication を拡張します。

     public class CustomApplication extends Application {
          
          
            ...
               @Override
                protected void attachBaseContext(Context base) {
                    super.attachBaseContext(base);
                    MultiDex.install(base);
                }
            ...
  3. 設定メソッドの数は、Dalvik 実行可能サブパッケージの設定アプリケーションあたり 64K を超えています。魔法の
    Android65536 -
    Android アプリケーション (APK) ファイルには、アプリのコンパイル済みコードを含む Dalvik 実行可能 (DEX) ファイルの形式で実行可能バイトコード ファイルが含まれています。Dalvik Executable 仕様では、Android フレームワーク メソッド、ライブラリ メソッド、独自のコード内のメソッドを含め、単一の DEX ファイル内で参照できるメソッドの総数が 65,536 に制限されています。コンピューター サイエンスでは、キロ (略して K) という用語は 1024 (または 2^10) を意味します。65,536 は 64 X 1024 に等しいため、この制限は「64K 参照制限」とも呼ばれます。

    具体的な説明: https://developer.android.com/studio/build/multidex.html#about

おすすめ

転載: blog.csdn.net/lrxb_123/article/details/73650648