2014-12-19 166 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文件生成>重建必须工作。

相关问题