我正在使用使用Angular的最新版本的NativeScript开发应用程序。我已将大多数pro-ui插件添加到我的项目中,并添加了Firbase插件。
当我运行“ tns run android”时,出现错误:
“ D8:无法将请求的类放入单个dex文件中。尝试提供main-dex列表。”
此外,它还需要5分钟以上的时间来构建。我一直在进行搜索,但是找不到导致此问题的原因。有人知道怎么了吗?
答案 0 :(得分:2)
经过反复尝试,我终于找到了解决方案。我读过的所有其他答案都说,必须在android项目的multiDexEnabled
文件中将true
属性设置为build.gradle
。
我不确定如何为NativeScript执行此操作,因为platform文件夹未提交到版本控制,并且可能被覆盖。
但是,在your_project_root/app/App_resources/Android
中有两个文件,settings.gradle
和settings.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