android - 使用libgdx应用程序在Eclipse中启用Multidex

标签 android eclipse gradle libgdx android-multidex

我不知道为什么multidex对我不起作用。我在libgdx应用程序中使用Eclipse和Gradle。我认为我已经完成了Google所说的一切,但仍然出现错误:

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



这是我在android项目中的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'
}

我什至从“SDK \ extras \ android \ support \ multidex \ library”中将multidex项目添加为我的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?

最佳答案

documentation说:

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



所以您确实在 list 中设置了此设置:
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

另外,当您在gradle脚本中指定<uses-sdk>时,我建议从 list 中删除minSdkVersion标记。

关于android - 使用libgdx应用程序在Eclipse中启用Multidex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42051541/

相关文章:

android - 使用一份图像和一份 json 创建 Android REST 多部分请求

flex 4.6 移动项目中的 android 权限

android - 在Android应用程序中将纵向更改为横向时如何防止重新加载webview?

Eclipse IDE - Open Call Hierarchy 为空/损坏

android - 在 Android Studio 中更新到 Gradle 3.3.2 时出错 : Cannot resolve symbol R

android - GridLayout 的 rowOrderPreserved 和 columnOrderPreserved

android - 项目清理后 R.java 消失

java - Java为什么不编译我的代码?

java - 我如何在 spring boot 中更改 logback 版本?

java - Gradle 同步失败 : For input string: "+"