如何在 libGDX for Android 中使用 MultiDexApplication

Posted

技术标签:

【中文标题】如何在 libGDX for Android 中使用 MultiDexApplication【英文标题】:How can I use MultiDexApplication in libGDX for Android 【发布时间】:2016-05-02 21:27:10 【问题描述】:

我阅读了很多关于这个主题的讨论,但没有找到任何确切的答案。有人说您应该使用 android Studio 而不是 Eclipse,因为它支持 Gradle 并使用 Maven 构建。但我使用 libGDX 在 Eclipse 中开发游戏,它也支持 Gradle 和 Maven 构建。另一个说您应该从路径 SDK 工具或 Gradle 添加 multidex.jar 然后在 gradle 中启用它,然后扩展 MultiDexApplication 而不是 Application 然后将其安装在 attachBaseContext 方法中。很好,但它不起作用。

我怎样才能扩展MultiDexApplication 而不是AndroidApplication?。 libGDX 在Application 上是否有修改类,如AndroidApplication 但在MultiDexAndroidApplication 情况下?

另一个说你应该将你的项目转换为 Maven 项目或在pom.xml 文件中添加一些行来构建许多 dex 文件!!。

我阅读了有关此主题的更多信息,但没有任何答案可以解决此问题(在使用 Eclipse 的 libGDX 案例中)。

任何帮助!

【问题讨论】:

【参考方案1】:

您可以像这样在 Gradle (android/build.gradle) 中设置启用多 dex:

android 
    buildToolsVersion "23.0.2"
    compileSdkVersion 23
    defaultConfig 
      multiDexEnabled = true
        applicationId = package_name
    
    dexOptions 
        javaMaxHeapSize "4g"
    
    lintOptions 
      disable 'ExportedContentProvider', 'IconColors'
    
    sourceSets 
        main 
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
            jniLibs.srcDirs = ['libs']
        

        instrumentTest.setRoot('tests')
    

我相信您需要添加的唯一行是:

defaultConfig 
      multiDexEnabled = true
        applicationId = <your_package_name>
    

【讨论】:

这种方式我试过很多次了。它对我不起作用。诡异的!对你有用吗? 我不确定我们是否有相同的目标。我遇到了 dex 错误,我发现我需要启用这个 multi dex 选项来解决这个问题。这对我有用。 你和我一样用eclipse吗!? 当我在我的问题中提到您的回答时,您的回答没有什么特别之处。 :( 我不久前从 eclipse 搬到了 android studio。更好的 gradle 支持。这与我更改为 multidex 的点大致相同,所以也许 Android studio/intelij 在 idk 的底层做了其他事情。

以上是关于如何在 libGDX for Android 中使用 MultiDexApplication的主要内容,如果未能解决你的问题,请参考以下文章

如何在Android Studio中调试“桌面”libgdx应用程序

如何使用libGDX在iOS / Android后台运行应用程序

LibGdx 如何从 libgdx 类返回到 androidActivity

在 Android 上使用来自 libGDX 的 SQLite

如何在 Cloud Functions for Firebase 中使 HTTP 请求异步/等待?

Android如何在ListView中使EditText可编辑