2014-12-19 2 views
3

Я пытался добавить сервис Google Maps в эмулятор в Android Studio для Mac. Я использовал this, чтобы добавить сервисы google play в мой эмулятор, и теперь я получаю эту ошибку.Ошибка: выполнение не выполнено для задачи ': app: dexDebug'

Я также добавил Google играть в баночку "LIBS"

Сложение ошибок

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.+. Причина, по которой вам может понадобиться последняя, ​​- это то, что ваш проект становится слишком большим, и вам нужно перейти к более мелким и более грамотным Play Services, в которые вы включаете только то, что вам нужно.

Чтобы облегчить жизнь, я рекомендую перейти к первому, и если у вас возникнут проблемы с компиляцией (например, самый классический, Unable to execute dex: method ID not in [0, 0xffff]: 65536, хотя он принимает разные формы), то вы можете перейти к последнему формат.

Там больше документации о том, как использовать большую библиотеку и меньшие библиотеки в http://developer.android.com/google/play-services/setup.html и http://developer.android.com/google/play-services/setup.html#split

1

Кажется, у вас есть файл банка или LIB появляющиеся несколько раз. Итак, удалите файл .jar из папки lib Build> Rebuild Must work.