用64k +方法反应原生Android应用程序

时间:2017-12-05 15:09:48

标签: react-native react-native-android

我使用react-native run-android

运行RN Android应用程序时遇到问题

它在构建阶段抛出异常,无法解决问题。

Execution failed for task ':react-native-firebase:transformClassesWithDexForDebugAndroidTest'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

我在网上尝试了各种各样的解决方案。 尝试过的解决方案是启用multiDex并在dexOptions中增加javaMaxHeapSize。

此错误可视为库或组件相关,但适用于超过64k限制的任何类型的应用程序。

还有一件事: 它在Android Studio中编译没有任何问题

2 个答案:

答案 0 :(得分:1)

使用react 0.60我遇到了这个问题,并将multiDexEnabled true添加到我的defaultConfig(android / app / build.gradle)中修复了它:

android {
    ...
    defaultConfig {
        ...
        multiDexEnabled true
   }
   ...
}

答案 1 :(得分:0)

从外观上看,你有太多的方法。这是一个常见的DEX问题。如上所述:

DexIndexOverflowException issue after updating to latest appcompat and support library

将此添加到build.gradle:

android {

  defaultConfig {
    ...

    // Enabling multidex support.
    multiDexEnabled true
  }
  ...
}

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

然后在你的Android Manifest中添加:

<?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>

如果这有帮助,请告诉我!我之前遇到过这个问题。