6

ActionBarSherlockとViewPagerIndicatorを同時に使用すると、以下のエラーが発生します。私が読んだことから-それは2つのライブラリの競合/重複が原因です。

1つの解決策は、ABSをVPIに依存させることでした(またはその逆で、両方を試しました)が、クリーンアップして再構築した後でも同じエラーが発生しました。現在、私は2つの別々のプロジェクトで作業しているので、作業を完了できますが、明らかにそれらを組み合わせたいと思います。助けていただければ幸いです!

[2012-04-19 00:39:20 - MashableReader] Dx 
UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added: Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat;
[2012-04-19 00:39:20 - MashableReader] Dx   at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
[2012-04-19 00:39:20 - MashableReader] Dx   at com.android.dx.dex.file.DexFile.add(DexFile.java:163)
[2012-04-19 00:39:20 - MashableReader] Dx   at com.android.dx.command.dexer.Main.processClass(Main.java:486)
[2012-04-19 00:39:20 - MashableReader] Dx   at com.android.dx.command.dexer.Main.processFileBytes(Main.java:455)
[2012-04-19 00:39:20 - MashableReader] Dx   at com.android.dx.command.dexer.Main.access$400(Main.java:67)
[2012-04-19 00:39:20 - MashableReader] Dx   at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:394)
[2012-04-19 00:39:20 - MashableReader] Dx   at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245)
[2012-04-19 00:39:20 - MashableReader] Dx   at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131)
[2012-04-19 00:39:20 - MashableReader] Dx   at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109)
[2012-04-19 00:39:20 - MashableReader] Dx   at com.android.dx.command.dexer.Main.processOne(Main.java:418)
[2012-04-19 00:39:20 - MashableReader] Dx   at com.android.dx.command.dexer.Main.processAllFiles(Main.java:329)
[2012-04-19 00:39:20 - MashableReader] Dx   at com.android.dx.command.dexer.Main.run(Main.java:206)
[2012-04-19 00:39:20 - MashableReader] Dx   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[2012-04-19 00:39:20 - MashableReader] Dx   at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
[2012-04-19 00:39:20 - MashableReader] Dx   at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
[2012-04-19 00:39:20 - MashableReader] Dx   at java.lang.reflect.Method.invoke(Unknown Source)
[2012-04-19 00:39:20 - MashableReader] Dx   at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(DexWrapper.java:180)
[2012-04-19 00:39:20 - MashableReader] Dx   at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:702)
[2012-04-19 00:39:20 - MashableReader] Dx   at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(PostCompilerBuilder.java:646)
[2012-04-19 00:39:20 - MashableReader] Dx   at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728)
[2012-04-19 00:39:20 - MashableReader] Dx   at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
[2012-04-19 00:39:20 - MashableReader] Dx   at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)
[2012-04-19 00:39:20 - MashableReader] Dx   at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:321)
[2012-04-19 00:39:20 - MashableReader] Dx   at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:396)
[2012-04-19 00:39:20 - MashableReader] Dx   at org.eclipse.core.internal.resources.Project$1.run(Project.java:618)
[2012-04-19 00:39:20 - MashableReader] Dx   at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2344)
[2012-04-19 00:39:20 - MashableReader] Dx   at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:597)
[2012-04-19 00:39:20 - MashableReader] Dx   at org.eclipse.core.internal.resources.Project.build(Project.java:124)
[2012-04-19 00:39:20 - MashableReader] Dx   at com.android.ide.eclipse.adt.internal.project.ProjectHelper.doFullIncrementalDebugBuild(ProjectHelper.java:1000)
[2012-04-19 00:39:20 - MashableReader] Dx   at com.android.ide.eclipse.adt.internal.launch.LaunchConfigDelegate.launch(LaunchConfigDelegate.java:147)
[2012-04-19 00:39:20 - MashableReader] Dx   at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:854)
[2012-04-19 00:39:20 - MashableReader] Dx   at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:703)
[2012-04-19 00:39:20 - MashableReader] Dx   at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:928)
[2012-04-19 00:39:20 - MashableReader] Dx   at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1132)
[2012-04-19 00:39:20 - MashableReader] Dx   at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
[2012-04-19 00:39:20 - MashableReader] Dx 1 error; aborting
[2012-04-19 00:39:20 - MashableReader] Conversion to Dalvik format failed with error 1

回答による更新: 了解しました-以下の答えが得られるように、問題はEclipseADTでの依存関係の解決でした。基本的に、私の解決策は、ViewPagerIndicatorをActionBarSherlockに依存させることでした(つまり、VPIプロパティでは、通常のプロジェクトの場合と同じように、プロジェクトにABSを追加します。一部のメソッドをオーバーライドできないというエラーがコードに表示されたときに、まだ問題がありました。この部分は、インポートが間違っているためです。すべてのインポートとCRTL + SHIFT + O(クイックインポート解決)を削除してください。 )そしてandroid.support.v4パッケージからすべてのものを選択すれば、それですべてうまくいくはずです。

4

2 に答える 2

6

はい、問題はActionBarSherlockとViewPagerIndicatorの両方がlibs/android-support-v4.jar依存関係を使用していることです。

最も簡単な解決策は、ワークステーションを最新のAndroidSDKおよびEclipseADTプラグインバージョン(少なくともr17)にアップグレードすることです。この状況はSDKによって自動的に処理されるようになりました(r17以降)。r17の変更ログを参照してください。

依存関係の解決

プロジェクトが同じjarファイルを必要とする2つのライブラリプロジェクトを参照する場合、ビルドシステムは重複を検出して解決する必要があります。

また、r17以降、libsフォルダーの下のすべてのjarファイルがプロジェクトのクラスパスに自動的に入力されるため、r17の変更ログにも記載されているように、プロジェクトのビルドパスに手動で追加する必要はありません。

プロジェクトには、ソースフォルダーと、ライブラリプロジェクトおよびjarファイルの依存関係があります。プロジェクトの依存関係としてライブラリプロジェクトを追加する以外に設定は必要ありません。プロジェクトのクラスパスには、次の情報が自動的に入力されます。

  • プロジェクトのlibs/*.jarの内容
  • ライブラリプロジェクトの出力。
  • ライブラリプロジェクトのlibs/*.jar

お役に立てれば。

于 2012-04-19T21:17:03.663 に答える
0

私は最新バージョンのADT、SDKなどを使用していますが、まだこの問題があります。どのサポートライブラリをどの依存ライブラリなどから使用するかがまだわからないようです。

TJのソリューションは機能しますが、私は別のアプローチを使用しました。

私の解決策は次のとおりです。

  1. ライブラリを参照する各ライブラリプロジェクトとメインアプリケーションプロジェクトに移動し、libs/android-support-v4.jar参照を削除しました
  2. 各プロジェクトに戻り、ファイルシステムからandroid-support-v4.jarをドラッグしました(私のMacでは、SDKをドキュメントフォルダーに保存します:Users // Documents / Android / android-sdk-mac_x86 / extras / android / compatibility /v4/android-support-v4.jar)をlibsフォルダーに移動し、プロジェクトにコピーするのではなく、jarにリンクすることを選択します。
  3. これで、すべてのプロジェクトがファイルシステム上の同じ.jarファイルを参照し、将来(Android SDK Managerを介して)サポートライブラリを更新すると、.jarが更新され、プロジェクトは最新のjarをプルします。

したがって、サポートライブラリを更新しても、何も壊れることはなく、最新バージョンを使用できるようになります。

于 2012-10-15T05:40:16.237 に答える