0

私は最近 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)

トレースをさらに詳しく見ると、以下が表示されます (シャーロック テーマを使用している場合でも)。

   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 は、私の知る限り、2.2 以降で正常に動作する Android Bootstrap アプリケーションとほとんど同じです。

私の推測では、私は何らかの依存関係の構成の問題を抱えていると思います。私は maven と intellij にかなり慣れているので、トラブルシューティングは非常に困難でした。

他の誰かがこの動作を見たことがあるのか​​、それとも私が初歩的なミスを犯しているのかはわかりません。問題が解決したら、この質問を回答で更新します。

事前に皆さんに感謝し、この投稿でスタックオーバーフローのエチケットを破った場合は申し訳ありません.

編集: 潜在的な関連する問題が見つかりました @ http://youtrack.jetbrains.com/issue/IDEA-90719

4

2 に答える 2

1

この問題に対して、はるかに高速に機能する別の回避策を見つけました。Android ファセット構成で、リソース処理を"Run 'process-resources' Maven task before Make"から"Compile resources by IDE"に変更します。添付のスクリーンショットを参照してください。この変更後、すべての Android バージョンですべて正常かつ高速に動作します

ファセット構成

于 2012-09-28T08:01:36.787 に答える
1

したがって、デフォルトの Android ビルド構成を使用する代わりに、Android Maven プラグインを使用し、mvn android:deploy-dependencies と android:run を実行したところ、問題はなくなりました。

以前は intellij のデフォルトの Android ビルド構成を使用していましたが、最初に依存関係を管理するために Android Maven プラグインを使用していることを考えると、今振り返ってみると正しいアプローチではないように見えます。

これが誰かに役立つことを願っています。

PS intellij-idea のロック!

于 2012-09-18T23:51:55.440 に答える