Maven создал.apk с Dagger DI, который не может найти вводимые действия
Я пытаюсь автоматизировать сборку приложения для Android с помощью Maven для Android. Приложение имеет стандартный формат папок Maven с src, который находится в src/main/java, и тесты, которые находятся в src / test / java. Смущает при выполнении команды, mvn install
мое приложение скомпилировано, тесты запущены, сборка сообщается как успешная.
Однако при развертывании и запуске приложения на эмуляторе с помощью команды mvn android:deploy android:run
приложение запускается, но сразу падает при создании графа объектов, используемого DI Dagger. Исключительные состояния;
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, поскольку различные системы сборки сталкиваются с тем, где должны жить скомпилированные классы. Тем не менее, я полностью озадачен этим.
Мое ПОМ здесь, если это поможет...
Заранее спасибо, любые мысли любезно получены.
1 ответ
Держите лошадей... похоже, моя сборка Maven использовала Java 1.7 JDK... это задокументировано как плохая новость для ActionBarSherlock.
Обновление: действительно, это было причиной смешного - у меня было дополнительное осложнение с стиранием типа Хэмкрест в моих тестах (им потребовалось 1,7!), Которое было обойдено с рекомендациями из официальной документации по этому вопросу.
Так что мой mvn
build работает с JDK 1.6.0_41, а мои тесты скомпилированы с JDK 1.7.0_15. Наконец-то у меня есть ABS, Maven, Dagger и многомодульный проект Android, который строится как босс.