2015-09-14 21 views
-2

для Android, когда я когда-либо добавить Google-карты-СДК-m4b (Google Maps API для работы) для моего проекта я получаюAndroid получать Неожиданное исключение верхнего уровня

НЕПРЕДУСМОТРЕННАЯ EXCEPTION TOP-LEVEL:

ava.lang.IllegalArgumentException: method ID not in [0, 0xffff]: 65536 
    at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:501) 
    at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:282) 
    at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:490) 
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:167) 
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:188) 
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439) 
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287) 
    at com.android.dx.command.dexer.Main.run(Main.java:230) 
    at com.android.dx.command.dexer.Main.main(Main.java:199) 
    at com.android.dx.command.Main.main(Main.java:103) 

От чтения другого сообщения, касающегося аналогичной проблемы, похоже, что мне нужно исключить библиотеку игровых сервисов, но мне нужна библиотека игровых сервисов, чтобы заставить службы обмена сообщениями Google работать в приложении. согласно документу Google

При переносе приложения на мобильный SDK для Карт Google для работы вам не нужно удалять SDK служб Google Play из вашего проекта. Тем не менее, вы должны удалить все ссылки на пакет com.google.android.gms.maps

Это мои зависимости

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
compile files('libs/androidnetworking.jar') 
compile project(':facebook') 
compile 'com.android.support:support-v4:22.2.0' 
compile 'com.google.android.gms:play-services:+' 
compile 'com.android.support:appcompat-v7:22.0.+' 
compile 'com.nineoldandroids:library:2.4.0' 
compile project(':library_pulltorefresh') 
compile(name:'google-maps-sdk-m4b', ext:'aar') 
} 

Не совсем уверен, почему я получаю эту ошибку, как мне нужно, чтобы сохранить как из этих пакетов. Может кто-нибудь, пожалуйста, помогите.

ответ

2

Проблема возникла потому, что формат файла Декс имеет предел 65535 методов, и вы превысили его.

Читайте official documentation о построении приложений слишком много методов, но основные требования:

Включить multidex поддержку в вашем build.gradle

android { 
    ... 
    defaultConfig { 
     ... 

     // Enabling multidex support. 
     multiDexEnabled true 
    } 
    ... 
} 

dependencies { 
    compile 'com.android.support:multidex:1.0.0' 
} 

Изменить ваш AndroidManifest.xml ссылаться MultiDexApplication:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.android.multidex.myapplication"> 
<application 
    ... 
    android:name="android.support.multidex.MultiDexApplication"> 
    ... 
</application> 

+0

Вы, сэр, гений. Я привязывал, чтобы исправить это в течение последних 8 часов и плакал в когда я увидел этот пост. Большое спасибо: D – dogwasstar

+0

Рад, что вы разобрали свою проблему :) –

-1

Пожалуйста, измените зависимостей следующим образом:

dependencies { 
compile fileTree(dir: 'libs', include: ['*.jar']) 
compile project(':facebook') // if possible use gradle here 
compile 'com.android.support:support-v4:22.2.0' 
compile 'com.google.android.gms:play-services:+' 
compile 'com.android.support:appcompat-v7:22.0.+' 
compile 'com.nineoldandroids:library:2.4.0' 
compile project(':library_pulltorefresh') // if possible use gradle here 
compile(name:'google-maps-sdk-m4b', ext:'aar') 
} 

Благодаря

+0

Я пробовал это. Он по-прежнему показывает ту же ошибку. спасибо tho – dogwasstar

+0

@ user767018: Пожалуйста, попробуйте это -> dexOptions { javaMaxHeapSize "4g" } – AndiGeeky

+0

по-прежнему та же ошибка :( – dogwasstar