1

今日、SDK ツールを更新しましたが、その後、このエラーのためにアプリをビルドできません:

Error:Android Dex: [App] UNEXPECTED TOP-LEVEL EXCEPTION:
Error:Android Dex: [App] java.lang.IllegalArgumentException: already added: Lcom/google/ads/AdRequest$ErrorCode;
Error:Android Dex: [App] at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:122)
Error:Android Dex: [App] at com.android.dx.dex.file.DexFile.add(DexFile.java:161)
Error:Android Dex: [App] at com.android.dx.command.dexer.Main.processClass(Main.java:685)
Error:Android Dex: [App] at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
Error:Android Dex: [App] at com.android.dx.command.dexer.Main.access$600(Main.java:78)
Error:Android Dex: [App] at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572)
Error:Android Dex: [App] at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
Error:Android Dex: [App] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
Error:Android Dex: [App] at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
Error:Android Dex: [App] at com.android.dx.command.dexer.Main.processOne(Main.java:596)
Error:Android Dex: [App] at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
Error:Android Dex: [App] at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
Error:Android Dex: [App] at com.android.dx.command.dexer.Main.run(Main.java:230)
Error:Android Dex: [App] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Error:Android Dex: [App] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
Error:Android Dex: [App] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Error:Android Dex: [App] at java.lang.reflect.Method.invoke(Method.java:606)
Error:Android Dex: [App] at org.jetbrains.android.compiler.tools.AndroidDxRunner.runDex(AndroidDxRunner.java:139)
Error:Android Dex: [App] at org.jetbrains.android.compiler.tools.AndroidDxRunner.main(AndroidDxRunner.java:261)
Error:Android Dex: [App] at com.intellij.rt.execution.CommandLineWrapper.main(CommandLineWrapper.java:121)
Error:Android Dex: [App] 1 error; aborting

これはソースです:

public static enum ErrorCode {
    INVALID_REQUEST, NO_FILL, NETWORK_ERROR, INTERNAL_ERROR;

    private final java.lang.String a;

    public static com.google.ads.AdRequest.ErrorCode[] values() { /* compiled code */ }

    public static com.google.ads.AdRequest.ErrorCode valueOf(java.lang.String name) { /* compiled code */ }

    private ErrorCode(java.lang.String description) { /* compiled code */ }

    public java.lang.String toString() { /* compiled code */ }
}

GoogleAdMobAdsSdk-6.4.1.jar バージョンを使用しています。libs フォルダーから jar ファイルを削除すると、ビルドは成功します。SDK ツールを 20.0.3 にダウングレードしようとしましたが、問題は解決しませんでしたが、アップデートが付属していました :(

4

2 に答える 2

2

解決策を見つけました。Google Play サービスを v12 から v13 に自動的に更新したことを認識していませんでした。また、新しいバージョンの google-play-services.jar には、GoogleAdMobAdsSdk-6.4.1.jar のような新しい ErrorCode クラスが含まれています。だから私はこのサイトhttp://venomvendor.blogspot.co.il/2012/03/android-sdk-extras-by-google-inc.htmlからグーグルプレイサービスライブラリをダウングレードし、 私の問題を解決しました。

于 2013-11-06T15:40:22.917 に答える
1

ビルド時にクラスパスに Admob-6.4.1 と最新の Google Play Services の両方が含まれていることが原因であるという点で、あなたは正しいです。

最新の GPS には Admob クラスが含まれるようになりました (新しいパッケージには Admob クラスの更新バージョンも含まれていることに注意してください。今後はこれを使用する必要があります)。

ここでの最善の解決策は、最新の Google Play サービス ライブラリを使用し、Admob 6.4.1 を捨てることです。

于 2013-11-06T21:44:45.110 に答える