gpt4 book ai didi

java - cordova 运行 android 失败,出现 com.android.dex.DexIndexOverflowException : method ID not in [0, 0xffff]:65536

转载 作者:行者123 更新时间:2023-12-05 08:33:33 25 4
gpt4 key购买 nike

在过去的几天里,我一直无法运行 cordova run android(或者更确切地说,ionic run android)来在我的 native 设备上测试我的 Ionic 应用程序。当我运行该命令时,我得到了通常的公制吨输出,以及来自几个 Java 运行时进程的 100% CPU 使用率,然后构建最终失败并显示标题中所述。控制台显示了这个(被截断了,因为有大量的输出):

:compileDebugNdk UP-TO-DATE :compileDebugSources

:transformClassesWithDexForDebug UNEXPECTED TOP-LEVEL EXCEPTION:

com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

at com.android.dx.merge.DexMerger$6.updateIndex(DexMerger.java:484)
at com.android.dx.merge.DexMerger$IdMerger.mergeSorted(DexMerger.java:261)
at com.android.dx.merge.DexMerger.mergeMethodIds(DexMerger.java:473)
at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:161)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:188) FAILED

BUILD FAILED

Total time: 1 mins 40.116 secs

    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
at com.android.dx.command.dexer.Main.run(Main.java:277)
at com.android.dx.command.dexer.Main.main(Main.java:245)
at com.android.dx.command.Main.main(Main.java:106)

FAILURE: Build failed with an exception.

What went wrong: Execution failed for task :transformClassesWithDexForDebug.

com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException:

Process 'command 'C:\Program Files\Java\jdk1.8.0_73\bin\java.exe'' finished with non-zero exit value 2

Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Error: Error code 1 for command: cmd with args: /s,/c,"E:\Documents\GitHub\app.auroras.live\platforms\android\gradlew cdvBuildDebug -b E:\Documents\GitHub\app.auroras.live\platforms\android\build.gradle -PcdvBuildArch=arm -Dorg.gradle.daemon=true -Pandroid.useDeprecatedNdk=true"

我刚刚更新了 Android SDK 中所有必要的工具和库,然后删除并重新添加了 Android 平台(cordova platform add android),确保检查所有相关的平台文件不见了,项目仍然无法构建。

编辑:我还运行了 cordova clean,但是没有用。看起来 Google Play 服务库导致我的应用程序达到 64,000 个方法限制,但除了手动调整我的 gradle 文件(我还不是很熟悉)之外,我不确定如何缩小它

编辑 2:我尝试调整我的 build.gradle 文件以删除对“com.google.android.gms:play-services:+”的引用(我认为这是将我的应用推到 65535 方法限制之上)但是它只是不断回来。

我还尝试了 build-extras.gradle 来删除依赖项,但又出现了另一个错误。理想情况下,我想要一个不需要每次构建我的应用程序时都需要不断重新工作的答案,但在这个阶段,我渴望得到几乎任何东西。

我最近升级了 cordova、ionic 和 bower(使用 npm install -g cordova ionic bower 在 Windows 上我的 %PATH% 变量出现问题之后,但我不认为这会中断任何东西。

我运行的是 Windows 10 x64。 java -version 报告:

java version "1.8.0_73"

Java(TM) SE Runtime Environment (build 1.8.0_73-b02)

Java HotSpot(TM) 64-Bit Server VM (build 25.73-b02, mixed mode)

有什么建议吗?

最佳答案

:transformClassesWithDexForDebug UNEXPECTED TOP-LEVEL EXCEPTION:

com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

此消息听起来您的项目太大了。

你的方法太多了。 dex只能有65536个方法。

gradle 插件 0.14.0Build Tools 21.1.0 开始,您可以使用 multidex 支持。

只需在 build.gradle 中添加这些行:

android {
defaultConfig {
...
// Enabling multidex support.
multiDexEnabled true
}
...
}

dependencies {
compile 'com.android.support:multidex:1.0.0'
}

同样在您的 list 中,将 multidex 支持库中的 MultiDexApplication 类添加到应用程序元素

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android.multidex.myapplication">
<application
...
android:name="android.support.multidex.MultiDexApplication">
...
</application>
</manifest>

如果您使用自己的 Application 类,请将父类从 Application 更改为 MultiDexApplication。

@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}

对于谷歌播放服务:

Google Play services and DEX method limits

资源链接:

Configuring Your App for Multidex with Gradle

优化 Multidex 开发构建

作为使用 multidex 的开发过程的一部分执行的例行构建通常需要更长的时间,并且可能会减慢您的开发过程。

为了减少 multidex 输出通常较长的构建时间,您应该使用适用于 Gradle productFlavors: 的 Android 插件在构建输出上创建两个变体。开发 flavor 和生产 flavor 。

以下构建配置示例演示了如何在 Gradle 构建文件中设置这些风格:

android {
productFlavors {
// Define separate dev and prod product flavors.
dev {
// dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
// to pre-dex each module and produce an APK that can be tested on
// Android Lollipop without time consuming dex merging processes.
minSdkVersion 21
}
prod {
// The actual minSdkVersion for the application.
minSdkVersion 14
}
}
...
buildTypes {
release {
runProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
}
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
}

资源链接:

  1. DexIndexOverflowException issue after updating to latest appcompat and support library
  2. Unable to execute dex: method ID not in [0, 0xffff]: 65536

关于java - cordova 运行 android 失败,出现 com.android.dex.DexIndexOverflowException : method ID not in [0, 0xffff]:65536,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37944696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com