2017-02-05 6 views
0

Я не знаю, почему multidex не работает для меня. Я использую Eclipse и Gradle с приложением libgdx. Я думаю, что я сделал все, как сказал Google, но все еще есть ошибка:Включить multidex в Eclipse с помощью приложения libgdx

Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536

Вот мой build.gradle в андроида проекте:

android { 
buildToolsVersion "23.0.2" 
compileSdkVersion 23 

sourceSets { 
    main { 
     manifest.srcFile 'AndroidManifest.xml' 
     java.srcDirs = ['src'] 
     resources.srcDirs = ['src'] 
     aidl.srcDirs = ['src'] 
     renderscript.srcDirs = ['src'] 
     res.srcDirs = ['res'] 
     assets.srcDirs = ['assets'] 
    } 

    instrumentTest.setRoot('tests') 
} 

defaultConfig { 
minSdkVersion 14 

// Enabling multidex support. 
multiDexEnabled true 
} 

dexOptions { 
    javaMaxHeapSize "4g" 
} 

buildTypes {  
    release { 
     runProguard true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 
     'proguard-rules.pro' 
    } 
} 
} 

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

Я даже добавил multidex проект от " SDK \ extras \ android \ support \ multidex \ library "в качестве библиотеки для моего Android-проекта. Вот часть моего AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools"  
    android:installLocation="preferExternal"  
    package="XXXXXXXXXXXXXXXXXXXXXXX" 
android:versionCode="175" 
android:versionName="5.0.0" > 

<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="23" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:allowBackup="false" 
    android:name="android.support.multidex.MultiDexApplication" > 

    <activity android:name="XXXXXXXXXXXXXXX.XXXXXXXXX.BTActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter>    
    </activity> 

    <activity 
     android:name="XXXX.XXXXXX.AndroidLauncher" 
     android:label="@string/app_name" 
     android:screenOrientation="landscape" 
     android:configChanges="keyboard|keyboardHidden|orientation|screenSize"> 
    </activity> 

    <activity 
     android:name="com.google.android.gms.ads.AdActivity" 
     android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"> 
    </activity> 
</application> 

</manifest> 

И в моем классе AndroidLauncher у меня есть:

public class AndroidLauncher extends AndroidApplication implements AdActionResolver, GSActionResolver, GameHelperListener 
{ 
@Override 
protected void attachBaseContext(Context base) { 
super.attachBaseContext(base); 
MultiDex.install(this); 
} 
} 

Может кто-нибудь сказать мне, что случилось с этой конфигурацией? Может быть, мне нужно перейти на Android Studio?

ответ

0

documentation The говорит:

Depending on whether you override the Application class, perform one of the following

Так ты установить это в манифесте:

android:name="android.support.multidex.MultiDexApplication"

И это должно быть достаточно, если вы не переопределить Application класс где-нибудь.

Но вы также поместить этот код в AndroidLauncher класса (который является Activity, не Application - это название сбивает с толку, см LibGDX javadoc)

@Override 
protected void attachBaseContext(Context base) { 
    super.attachBaseContext(context); 
    Multidex.install(this); 
} 

Так удалите этот код и проверить, если он решает проблема.

Вы также должны прочитать Limitations of the multidex support library.

Кроме того, я бы рекомендовал удалить тег <uses-sdk> из манифеста, как вы указываете minSdkVersion в сценарии градации.

+0

Я удалил переопределение метода attachBaseContext и по-прежнему получаю сообщение об ошибке. Я также удалил без везения. – Bero

+0

Какая версия Android на вашем устройстве/эмуляторе? –

+0

Вы также можете найти [эту проблему] (https://github.com/libgdx/libgdx/issues/3950). Они обсуждают некоторый класс, необходимый в основном файле dex, который вам может понадобиться настроить. –