我不知道为什么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?
最佳答案
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/