NativeScript-无法在单个dex文件中容纳请求的类

时间:2018-06-29 20:44:11

标签: android nativescript

我正在使用使用Angular的最新版本的NativeScript开发应用程序。我已将大多数pro-ui插件添加到我的项目中,并添加了Firbase插件。

当我运行“ tns run android”时,出现错误:

“ D8:无法将请求的类放入单个dex文件中。尝试提供main-dex列表。”

此外,它还需要5分钟以上的时间来构建。我一直在进行搜索,但是找不到导致此问题的原因。有人知道怎么了吗?

3 个答案:

答案 0 :(得分:2)

经过反复尝试,我终于找到了解决方案。我读过的所有其他答案都说,必须在android项目的multiDexEnabled文件中将true属性设置为build.gradle

我不确定如何为NativeScript执行此操作,因为platform文件夹未提交到版本控制,并且可能被覆盖。

但是,在your_project_root/app/App_resources/Android中有两个文件,settings.gradlesettings.json

settings.gradle用于根据您在build.gradle中设置的属性生成项目的settings.json文件。

因此,我在defaultConfig中的settings.gradle字符串模板中添加了:

if(__multiDexEnabled__) {
    multiDexEnabled = __multiDexEnabled__
}

settings.json中定义的JSON对象中,我添加了:

"multiDexEnabled": true

之后,我删除了项目的platform文件夹并运行:

> tns platforms add android
> tns run android

我的应用程序可以在手机上正常启动。

答案 1 :(得分:2)

转到路径 platforms / app / build.gradle (谨慎的 /platform/build.gradle) 并添加 multiDexEnabled true

...    
defaultConfig {
            def manifest = new XmlSlurper().parse(file(android.sourceSets.main.manifest.srcFile))
            def minSdkVer = manifest."uses-sdk"."@android:minSdkVersion".text() ?: 17
            minSdkVersion minSdkVer
            targetSdkVersion computeTargetSdkVersion()
            ndk {
                if (onlyX86) {
                    abiFilters 'x86'
                } else {
                    abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
                }
            }
            multiDexEnabled true
            dexOptions {
                jumboMode = true
            }
        }
...

答案 2 :(得分:1)

我已经解决了 只需在 android-> defaultConfig

下的 app.gradle 中添加 multiDexEnabled true