2017-02-05 2 views
0

Ich weiß nicht, warum multidex funktioniert nicht für mich. Ich benutze Eclipse und Gradle mit libgdx-Anwendung. Ich denke, dass ich alles getan habe, wie Google, sagte aber immer noch einen Fehler:Enable multidex in Eclipse mit libgdx app

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

Hier ist mein build.gradle in Android-Projekt:

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' 
} 

Ich habe sogar multidex Projekt von "hinzugefügt SDK \ Extras \ Android \ support \ multidex \ library "als eine Bibliothek zu meinem Android-Projekt. Hier ist ein Teil meiner 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> 

Und in meinem AndroidLauncher Klasse I haben:

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

Kann mir jemand sagen, was mit dieser Konfiguration ist falsch? Vielleicht sollte ich nach Android Studio migrieren?

Antwort

0

The documentation sagt:

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

So hast du das im Manifest gesetzt:

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

Und das sollte genug sein, wenn Sie die Application Klasse irgendwo außer Kraft setzen.

Aber Sie setzen auch diesen Code in der AndroidLauncher Klasse (die eine Activity ist, nicht die Application - der Name verwirrend ist, siehe die LibGDX javadoc)

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

Also bitte diesen Code entfernen und prüfen, ob sie löst das Problem.

Sie sollten auch die Limitations of the multidex support library lesen.

Darüber hinaus würde ich empfehlen, das <uses-sdk>-Tag aus dem Manifest zu entfernen, während Sie das minSdkVersion im Großbuchstabenskript angeben.

+0

Ich habe das Überschreiben der Methode attachBaseContext entfernt und trotzdem eine Fehlermeldung erhalten. Ich entfernte auch ohne Glück. – Bero

+0

Was ist die Android-Version auf Ihrem Gerät/Emulator? –

+0

Sie können auch [diese Ausgabe] (https://github.com/libgdx/libgdx/issues/3950) nützlich finden. Sie diskutieren einige Klassen in der Haupt-Dex-Datei, die Sie möglicherweise konfigurieren müssen. –