将VPI添加到具有大量依赖项的项目中会导致3.0之前的设备出错

时间:2012-09-18 15:09:57

标签: android intellij-idea actionbarsherlock roboguice viewpagerindicator

我最近从eclipse转到intellij,到目前为止,它是一次很棒的体验,我真的非常喜欢它。然而,我遇到了一个奇怪的问题,我一直撞到墙上。我正在尝试使用ViewPagerIndicator,ActionBarSherlock,RoboSherlock和RoboGuice以及我的应用程序中的一些其他常见框架。一切正常,直到我添加VPI。

基本上,当将ViewPagerIndicator依赖项添加到我的项目时,它会破坏3.0之前设备的应用程序(在3.0+上运行正常)。

错误相当令人困惑,因为当VPI apklib存在时,ABS兼容主题似乎没有被拾取(请注意我在清单中使用ABS兼容主题)。

>09-18 10:33:15.986: ERROR/COM.IRIE.TASTEBUD/ObserverMethodListener.java:34(509): main java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:507)
        at roboguice.event.eventListener.ObserverMethodListener.onEvent(ObserverMethodListener.java:32)
        at roboguice.event.EventManager.fire(EventManager.java:130)
        at com.github.rtyley.android.sherlock.roboguice.activity.RoboSherlockActivity.onCreate(RoboSherlockActivity.java:63)
        at com.irie.tastebud.view.activity.MainActivity.onCreate(MainActivity.java:38)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)

当我更深入地了解跟踪时,我会看到下面的内容(即使我使用的是sherlock主题):

   Caused by: java.lang.IllegalStateException: You must use Theme.Sherlock, Theme.Sherlock.Light, Theme.Sherlock.Light.DarkActionBar, or a derivative.
    at com.actionbarsherlock.internal.ActionBarSherlockCompat.generateLayout(ActionBarSherlockCompat.java:1007)
    at com.actionbarsherlock.internal.ActionBarSherlockCompat.installDecor(ActionBarSherlockCompat.java:919)
    at com.actionbarsherlock.internal.ActionBarSherlockCompat.setContentView(ActionBarSherlockCompat.java:853)
    at com.actionbarsherlock.app.SherlockActivity.setContentView(SherlockActivity.java:218)
    at roboguice.inject.ContentViewListener.optionallySetContentView(ContentViewListener.java:21)
    ... 19 more**

请参阅完整的异常堆栈跟踪和activity / manifest / pom.xml代码@ https://gist.github.com/3743646

再一次 - 这只在将VPI项目添加为maven依赖项时才会发生在3.0之前的设备上。如果我删除VPI - 该应用程序在2.2+设备上正常运行。

我的Pom.xml几乎与Android Bootstrap应用程序完全一样,据我所知,它在2.2+上工作正常。

我的猜测是我在我的结尾有某种依赖配置问题。我对maven和intellij非常环保,所以拍摄麻烦很困难。

我不确定是否有其他人看过这种行为,或者我是否犯了一个菜鸟错误。任何帮助表示赞赏 - 如果我解决了这个问题,我会用答案更新这个问题。

感谢大家提前和抱歉,如果我用这篇文章打破任何stackoverflow礼仪。

编辑:发现潜在相关问题@ http://youtrack.jetbrains.com/issue/IDEA-90719

2 个答案:

答案 0 :(得分:1)

因此,我没有使用默认的android构建配置,而是使用了android maven插件并执行了mvn android:deploy-dependencies和android:run,问题就消失了。

在我刚刚使用intellij的默认android构建配置之前,现在回顾看起来并不是正确的方法,因为我正在使用android maven插件来管理我的依赖项。

希望这有助于某人。

P.S。 intellij-idea rocks!

答案 1 :(得分:1)

我发现此问题的另一种解决方法更快。在Android facet配置中更改资源处理从“运行'流程资源'Maven任务之前”“按IDE编译资源”。查看附件中的屏幕截图在此更改之后,所有Android版本的所有工作正常并且快速

Facet configuration