2014-12-19 163 views
3

我試圖在Android Studio for Mac的模擬器中添加Google地圖服務。 我用this在我的模擬器中添加谷歌播放服務,現在我得到這個錯誤。錯誤:執行任務失敗':app:dexDebug'

我還添加了谷歌在 「庫」

生成錯誤

Error:Execution failed for task ':app:dexDebug'. 
> com.android.ide.common.internal.LoggedErrorException: Failed to run command: 
      /Applications/Android Studio.app/sdk/build-tools/21.0.0/dx --dex --num-threads=4 --output /Users/BrijD/Desktop/Final_maps/app/build/intermediates/dex/debug /Users/BrijD/Desktop/Final_maps/app/build/intermediates/classes/debug /Users/BrijD/Desktop/Final_maps/app/build/intermediates/dependency-cache/debug /Users/BrijD/Desktop/Final_maps/app/build/intermediates/pre-dexed/debug/classes-0fd5fdfe526893278be8c195ce134eaf1d9f1e86.jar /Users/BrijD/Desktop/Final_maps/app/build/intermediates/pre-dexed/debug/classes-1c1ab6ce82c35aba8a1d88f2624cf1338444a247.jar /Users/BrijD/Desktop/Final_maps/app/build/intermediates/pre-dexed/debug/classes-3fa4a9ac8fa2216bad3a7f16c9a774b0dc355d43.jar /Users/BrijD/Desktop/Final_maps/app/build/intermediates/pre-dexed/debug/classes-8f6dc1447c1249308d36a8f93d1adf33837f8664.jar /Users/BrijD/Desktop/Final_maps/app/build/intermediates/pre-dexed/debug/internal_impl-21.0.0-fd4beb3682904051af27f723f6ba9423e4f00b8a.jar /Users/BrijD/Desktop/Final_maps/app/build/intermediates/pre-dexed/debug/support-annotations-21.0.0-ee576f91b45a6538d4156fc6e674b6f65034f74e.jar 
      Error Code: 
      2 
      Output: 
      UNEXPECTED TOP-LEVEL EXCEPTION: 
      com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/actions/ReserveIntents; 
       at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596) 
       at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554) 
       at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535) 
       at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171) 
       at com.android.dx.merge.DexMerger.merge(DexMerger.java:189) 
       at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454) 
       at com.android.dx.command.dexer.Main.runMonoDex(Main.java:302) 
       at com.android.dx.command.dexer.Main.run(Main.java:245) 
       at com.android.dx.command.dexer.Main.main(Main.java:214) 
       at com.android.dx.command.Main.main(Main.java:106) 

玩罐子AndroidMainefest.xml

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="dormroomdevelopers.final_maps" > 

     <uses-permission android:name="android.permission.INTERNET"/> 
     <application 
      android:allowBackup="true" 
      android:icon="@drawable/ic_launcher" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme" > 
      <activity 
       android:name=".MyActivity" 
       android:label="@string/app_name" > 
       <intent-filter> 
        <action android:name="android.intent.action.MAIN" /> 

        <category android:name="android.intent.category.LAUNCHER" /> 
       </intent-filter> 
      </activity> 
      <activity android:name=".MapsActivity"> 
       <meta-data 
        android:name="com.google.android.maps.v2.API_KEY" 
        android:value="*****************************"/> 
      </activity> 
      <meta-data android:name="com.google.android.gms.version" 
       android:value="@integer/google_play_services_version" /> 
     </application> 

    </manifest> 

應用的build.gradle

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 21 
    buildToolsVersion "21" 

    defaultConfig { 
     applicationId "dormroomdevelopers.final_maps" 
     minSdkVersion 18 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      runProguard false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 
dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.google.android.gms:play-services:6.5.87' 
    compile 'com.google.android.gms:play-services-maps:6.5.+' 
} 

proguard-rules.pro

-keep class * extends java.util.ListResourceBundle { 
    protected Object[][] getContents(); 
} 

-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable { 
    public static final *** NULL; 
} 

-keepnames @com.google.android.gms.common.annotation.KeepName class * 
-keepclassmembernames class * { 
    @com.google.android.gms.common.annotation.KeepName *; 
} 

-keepnames class * implements android.os.Parcelable { 
    public static final ** CREATOR; 
} 

回答

5

這個錯誤在你已經嘗試在同一類鏈接到你的項目超過一次,這是不允許的通用方法。違規課程是com/google/android/gms/actions/ReserveIntents,位於Google Play服務庫中。

的問題是在你的依賴:

compile 'com.google.android.gms:play-services:6.5.87' 
compile 'com.google.android.gms:play-services-maps:6.5.+' 

這些是多餘的。 play-services:6.5.87包含了所有內容,如果有的話,則不需要play-services-maps:6.5.+依賴關係。你可能想要後者的原因是,如果你的項目變得太大,你需要削減到一個更小,更細化的播放服務,你只需要包括你所需要的。

爲了讓生活更輕鬆,我建議你先用第一種方法,如果遇到編譯問題(比如最經典的,Unable to execute dex: method ID not in [0, 0xffff]: 65536,儘管它採用不同的形式),那麼你可以去後者格式。

有一個關於如何使用大圖書館和小型圖書館在http://developer.android.com/google/play-services/setup.htmlhttp://developer.android.com/google/play-services/setup.html#split

1

看來你有一個jar文件或出現多次LIB更多的文檔。因此,從lib文件夾中刪除.jar文件生成>重建必須工作。

相關問題