Maven构建了.apk,Dagger DI未能找到注入的活动



我正在尝试使用Maven for Android自动构建我的Android应用程序。该应用程序具有标准的Maven文件夹格式,src位于src/main/java下,测试位于src/test/java下。令人困惑的是,在执行命令时,mvn install我的应用程序被编译,测试被运行,构建被报告为成功。

然而,在使用命令mvn android:deploy android:run在模拟器上部署和运行应用程序时,应用程序启动,但在创建Dagger用于DI的对象图时立即崩溃。例外情况说明:;

06-30 17:31:08.626: E/AndroidRuntime(518): FATAL EXCEPTION: main
06-30 17:31:08.626: E/AndroidRuntime(518): java.lang.RuntimeException: Unable to create application com.oceanlife.MainApplication: java.lang.TypeNotPresentException: Type com.oceanlife.activity.AboutActivity not present
06-30 17:31:08.626: E/AndroidRuntime(518):  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4247)
06-30 17:31:08.626: E/AndroidRuntime(518):  at android.app.ActivityThread.access$3000(ActivityThread.java:125)
06-30 17:31:08.626: E/AndroidRuntime(518):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2071)
06-30 17:31:08.626: E/AndroidRuntime(518):  at android.os.Handler.dispatchMessage(Handler.java:99)
06-30 17:31:08.626: E/AndroidRuntime(518):  at android.os.Looper.loop(Looper.java:123)
06-30 17:31:08.626: E/AndroidRuntime(518):  at android.app.ActivityThread.main(ActivityThread.java:4627)
06-30 17:31:08.626: E/AndroidRuntime(518):  at java.lang.reflect.Method.invokeNative(Native Method)
06-30 17:31:08.626: E/AndroidRuntime(518):  at java.lang.reflect.Method.invoke(Method.java:521)
06-30 17:31:08.626: E/AndroidRuntime(518):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-30 17:31:08.626: E/AndroidRuntime(518):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-30 17:31:08.626: E/AndroidRuntime(518):  at dalvik.system.NativeStart.main(Native Method)
06-30 17:31:08.626: E/AndroidRuntime(518): Caused by: java.lang.TypeNotPresentException: Type com.oceanlife.activity.AboutActivity not present
06-30 17:31:08.626: E/AndroidRuntime(518):  at java.lang.Class.getDeclaredAnnotations(Native Method)
06-30 17:31:08.626: E/AndroidRuntime(518):  at java.lang.Class.getAnnotations(Class.java:322)
06-30 17:31:08.626: E/AndroidRuntime(518):  at java.lang.Class.getAnnotation(Class.java:292)
06-30 17:31:08.626: E/AndroidRuntime(518):  at dagger.internal.plugins.reflect.ReflectivePlugin.getModuleAdapter(ReflectivePlugin.java:51)
06-30 17:31:08.626: E/AndroidRuntime(518):  at dagger.internal.RuntimeAggregatingPlugin.getModuleAdapter(RuntimeAggregatingPlugin.java:98)
06-30 17:31:08.626: E/AndroidRuntime(518):  at dagger.internal.RuntimeAggregatingPlugin.getAllModuleAdapters(RuntimeAggregatingPlugin.java:55)
06-30 17:31:08.626: E/AndroidRuntime(518):  at dagger.ObjectGraph.makeGraph(ObjectGraph.java:115)
06-30 17:31:08.626: E/AndroidRuntime(518):  at dagger.ObjectGraph.create(ObjectGraph.java:103)
06-30 17:31:08.626: E/AndroidRuntime(518):  at com.oceanlife.MainApplication.onCreate(MainApplication.java:36)
06-30 17:31:08.626: E/AndroidRuntime(518):  at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:969)
06-30 17:31:08.626: E/AndroidRuntime(518):  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4244)
06-30 17:31:08.626: E/AndroidRuntime(518):

继我之前关于Maven与Eclipse与Dagger的问题之后,我开始期待ClassNotFound类型的异常,因为各种构建系统都在努力解决编译后的类应该在哪里。然而,我完全被这件事难住了。

如果有帮助的话,我的POM在这里。。。

提前谢谢你,任何想法都会欣然接受。

稳住你的马。。。这看起来像是我的Maven构建使用了Java 1.7 JDK。。。据记载,这对ActionBarSherlock来说是个坏消息。

更新:事实上,这就是有趣的原因-我在测试中遇到了hamcrest类型擦除的额外复杂性(他们需要1.7!),这是根据官方文件中关于该主题的建议解决的。

因此,我的mvn构建使用1.6.0_41 JDK运行,我的测试使用1.7.0_15 JDK编译。最后,我有了ABS,Maven,Dagger和一个多模块的Android项目"像老板一样"建设。

最新更新