2017-09-16 3 views
0

私はこの質問が何百万回も依頼されていることを知っていますが、私の特定の状況への答えを見つけることができませんでした。私は、すべてのコードとライブラリをインポートする他のモジュールをいくつか持っているライブラリを持っています。java.lang.RuntimeException:アプリケーションをインスタンス化できません。 ClassNotFoundException:クラスが見つかりませんでした

両方のマニフェストでは、このような基本アプリを使用しています。

<application 
    android:name="co.android.mylibrary.BaseApp" 
    android:allowBackup="false" 
    android:fullBackupContent="false" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:largeHeap="true" 
    android:theme="@style/AppTheme" 
    tools:replace="android:icon,android:theme, android:allowBackup"> 

、ビルドの依存関係は次のようになります。multidexを初期化する

dependencies { 
    releaseCompile project(path: ':mylibrary', configuration: 'release') 
    debugCompile project(path: ':mylibrary', configuration: 'debug') 
} 

マイベースアプリケーションの方法:

protected void attachBaseContext(Context base) { 
    super.attachBaseContext(base); 
    try { 
     MultiDex.install(this); 
    }catch (RuntimeException e){} 
} 

私は両方で追加したというのが私のProGuardの規則の一部、ロケーション(ライブラリとアプリケーション)。これらには、第三者図書館や私のクラスのいくつかの規則は含まれていません。

-keep public class * extends android.app.Activity 
-keep public class * extends android.app.Application 
-keep public class * extends android.app.Service 
-keep public class * extends android.content.BroadcastReceiver 
-keep public class * extends android.content.ContentProvider 
-keep public class * extends android.view.View 
-keep public class co.android.mylibrary.data.greendao.**{ *; } 

だから、このアプリは私のS8に細かい動作しますが、ProGuardのが有効になっていて、その収縮資源、リリース用のビルドのようにされている場合モトG.のようないくつかの携帯電話に彼らはまた、正常に動作しないでしょう。私が気づいた別の奇妙な振る舞いは、私が自分のコードのいくつかの部分にブレークポイントを設定し、リリースビルドを実行すると(デバッグ可能なものをtrueに設定して)、s8を壊すでしょう。

なぜこの奇妙な動作ですか?非常に似ていると感じた別の質問はunable to instantiate application - ClassNotFoundExceptionです。しかし、解決はまだありません。

これはエラーの完全なログです。パッケージ名は無視してください。 Exception log

@Mostafa Anterからsuggestiongsに基づいて、私は自分のアプリケーション上でライブラリをコンパイルする方法を、変更後の編集

:それは私にこのエラーを与え始め

compile project(path: ':mylibrary', configuration: 'debug') 

。私は私のインスタント実行をオフにしている。

Class not found exception on Firebase.initProvider

+0

ClassNotFoundExceptionのlogcatの詳細を表示できますか? – JRG

答えて

0

MultiDex.install(this);

基本クラスのonCreateメソッド呼び出しの内部次いでApplication を拡張する行を作る示すように、multidexを有効にして依存関係としてmultidexライブラリを追加するために、モジュールレベルのbuild.gradleファイルを変更ここに:あなたはJavaVersion.VERSION_1_8を使用する場合

android { 
defaultConfig { 
    ... 
    minSdkVersion 15 
    targetSdkVersion 26 
    multiDexEnabled true 
} 
... 
} 

dependencies { 
    compile 'com.android.support:multidex:1.0.1' 
} 
+0

それをやっている。 – user2130331

+0

あなたはプロガードを使用していますか?はいの場合は規則をご記入ください –

+0

この行をprogaurdに追加してみてください-keep public class your_missing_class_full_name –

0

あなたはすべてのモジュールで使用することを確認してください

android { 
    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_8 
     targetCompatibility JavaVersion.VERSION_1_8 
    } 
} 
関連する問題