
似乎Gradle不能用我的AppModule类,即使它很清楚它在我的项目中.我甚至包括set multIDexEnabled true,即使我的项目只有几个文件.
我在网上找到的所有内容都表明您可以单击要导入的库. AndroID Studio没有这样的奢侈品.
任何帮助将不胜感激,你将获得我不懈的忠诚.
04-21 17:26:54.006 7875-7875/com.androIDtitan.spotscoreapp E/AndroIDRuntime: FATAL EXCEPTION: mainProcess: com.androIDtitan.spotscoreapp,PID: 7875java.lang.NoClassDefFoundError: com.androIDtitan.spotscoreapp.main.injection.AppModule_ProvIDesApplicationFactoryat com.androIDtitan.spotscoreapp.main.injection.DaggerAppComponent.initialize(DaggerAppComponent.java:31)at com.androIDtitan.spotscoreapp.main.injection.DaggerAppComponent.<init>(DaggerAppComponent.java:23)at com.androIDtitan.spotscoreapp.main.injection.DaggerAppComponent.<init>(DaggerAppComponent.java:0)at com.androIDtitan.spotscoreapp.main.injection.DaggerAppComponent$Builder.build(DaggerAppComponent.java:66)at com.androIDtitan.spotscoreapp.App.onCreate(App.java:28)at com.androID.tools.fd.runtime.bootstrapApplication.onCreate(bootstrapApplication.java:326)at androID.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1020)at androID.app.ActivityThread.handleBindApplication(ActivityThread.java:5010)at androID.app.ActivityThread.access00(ActivityThread.java:172)at androID.app.ActivityThread$H.handleMessage(ActivityThread.java:1482)at androID.os.Handler.dispatchMessage(Handler.java:102)at androID.os.Looper.loop(Looper.java:145)at androID.app.ActivityThread.main(ActivityThread.java:5835)at java.lang.reflect.Method.invoke(Native Method)at java.lang.reflect.Method.invoke(Method.java:372)at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:1194)package com.androIDtitan.spotscoreapp.main.injection;import androID.app.Application;import androID.content.Context;import javax.inject.Singleton;import dagger.Module;import dagger.ProvIDes;
的AppModule
@Modulepublic class AppModule {private static Application application;public AppModule(Application application) { this.application = application;}@ProvIDes @SingletonApplication provIDesApplication() { return application;}@ProvIDes @SingletonContext provIDesApplicationContext() { return application.getBaseContext();}} AppComponent
package com.androIDtitan.spotscoreapp.main.injection;import androID.app.Application;import androID.content.Context;import com.androIDtitan.spotscoreapp.main.ui.activity.LoginActivity;import com.androIDtitan.spotscoreapp.main.ui.fragment.LoginFragment;import com.androIDtitan.spotscoreapp.main.ui.fragment.SignUpFragment;import javax.inject.Singleton;import dagger.Component;@Singleton@Component( modules = { AppModule.class,LoginPresenterModule.class })public interface AppComponent {Application getApplication();Context getApplicationContext();voID inject(LoginFragment activity);} 应用扩展了应用
import androID.app.Application;import androID.support.multIDex.MultIDexApplication;import com.androIDtitan.spotscoreapp.main.injection.AppComponent;import com.androIDtitan.spotscoreapp.main.injection.AppModule;import com.androIDtitan.spotscoreapp.main.injection.DaggerAppComponent;import com.firebase.clIEnt.Firebase;import timber.log.Timber;public class App extends Application {private static AppComponent appComponent;@OverrIDepublic voID onCreate() { super.onCreate(); Firebase.setAndroIDContext(this); appComponent = DaggerAppComponent.builder() .appModule(new AppModule(this)) .build(); if (BuildConfig.DEBUG) { Timber.plant(new Timber.DeBUGTree()); }}public static AppComponent getAppComponent(){ return appComponent;}} 的build.gradle(模块:APP)
apply plugin: 'com.androID.application'apply plugin: 'com.neenbedankt.androID-apt'androID {compileSdkVersion 23buildToolsversion "24.0.0 rc1"defaultConfig { applicationID "com.androIDtitan.spotscoreapp" minSdkVersion 16 targetSdkVersion 23 versionCode 1 versionname "1.0" multIDexEnabled true}buildTypes { release { MinifyEnabled false proguardfiles getDefaultProguardfile('proguard-androID.txt'),'proguard-rules.pro' }}packagingOptions { exclude 'meta-inf/DEPENDENCIES.txt' exclude 'meta-inf/NOTICE' exclude 'meta-inf/NOTICE.txt' exclude 'meta-inf/liCENSE' exclude 'meta-inf/liCENSE.txt'}}dependencIEs {compile filetree(include: ['*.jar'],dir: 'libs')testCompile 'junit:junit:4.12'apt 'com.Google.dagger:dagger-compiler:2.0'compile 'com.androID.support:multIDex:1.0.0'provIDed 'com.Google.dagger:dagger-compiler:2.0'provIDed 'org.glassfish:javax.annotation:10.0-b28'compile 'com.androID.support:appcompat-v7:23.3.0'compile 'com.jakewharton.timber:timber:4.1.2'compile 'com.androID.support:design:23.3.0'compile 'com.jakewharton:butterknife:7.0.1'compile 'com.firebase:firebase-clIEnt-androID:2.3.1'} 的build.gradle(项目:spotscoreapp)
buildscript {repositorIEs { jcenter()}dependencIEs { classpath 'com.androID.tools.build:gradle:2.0.0' classpath 'com.neenbedankt.gradle.plugins:androID-apt:1.4' // NOTE: Do not place your application dependencIEs here; they belong // in the indivIDual module build.gradle files}}allprojects {repositorIEs { jcenter()}}task clean(type: Delete) {delete rootProject.buildDir} AndroIDManifest
`
<uses-permission androID:name="androID.permission.INTERNET" /><application androID:name=".App" androID:allowBackup="true" androID:icon="@mipmap/ic_launcher" androID:label="@string/app_name" androID:supportsRtl="true" androID:theme="@style/Apptheme" > <activity androID:name=".main.ui.activity.LoginActivity" androID:label="@string/Title_activity_login" androID:theme="@style/Apptheme.NoActionbar" /> <activity androID:name=".main.ui.activity.MainActivity" > <intent-filter> <action androID:name="androID.intent.action.MAIN" /> <category androID:name="androID.intent.category.LAUNCHER" /> </intent-filter> </activity></application>
`
解决方法 我有一个非常类似的问题,并通过在AndroID Studio中做很常见的事情来解决它.你基本上需要使缓存无效,然后清理项目
你知道,Dagger2在编译时会生成很多代码,有时会出现问题,特别是如果你使用AndroID Studio 2.0提供的Instant Run
总结以上是内存溢出为你收集整理的切换到Android Studio 2.0后使用Dagger 2时出现NoClassDefFoundError全部内容,希望文章能够帮你解决切换到Android Studio 2.0后使用Dagger 2时出现NoClassDefFoundError所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)