任务':app:transformClassesWithDexForDebug'在本机中执行失败

Que*_*een 7 android react-native

我是新手,react native我在Ubuntu中使用它.我想在我的电脑上运行一个项目.我使用纱线和android模拟器.这是我安装的应用程序版本:

yarn: 1.2.0

nmp: 3.10.10
Run Code Online (Sandbox Code Playgroud)

使用时出现以下错误:

$ react-native run-android
Run Code Online (Sandbox Code Playgroud)

这是错误:

  * What went wrong:
    Execution failed for task ':app:transformClassesWithDexForDebug'.
    > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: java.lang.UnsupportedOperationException
Run Code Online (Sandbox Code Playgroud)

我已经测试了许多存在的解决方案stackoverflow但是,它们并不适用于我.如:

添加谷歌服务 - 任务'执行失败':app:processDebugResources'

错误:android studio中的任务':app:transformClassesWithDexForDebug'执行失败

我也用Google play service,我已经安装了Firebase插件.你知道我该怎么办?

wiz*_*loc 10

我的猜测是你超过64k参考限制并需要启用多索引.您链接的第二篇文章引用了如何解决此问题,但许多react-native项目使用16的minSdkVersion初始化,因此启用multidex还有一个额外的步骤.你有两个选择.

选项1:

将您的minSdkVersion升级到AndroidManifest.xml文件(android/app/src/main/AndroidManifest.xml)以及build.gradle文件(android/app/build.gradle),然后在build.gradle文件中添加multiDexEnabled在这一行中是真的

android {
    defaultConfig {
        ...
        minSdkVersion 21 
        targetSdkVersion 26
        multiDexEnabled true
    }
    ...
} 
Run Code Online (Sandbox Code Playgroud)

选项2:

如果需要保留minSdkVersion 16,请在build.gradle文件中将multiDexEnabled设置为true,然后在同一文件中的"dependencies"下添加此行

dependencies {
  compile 'com.android.support:multidex:1.0.1'
  ...(your other dependencies here)
}
Run Code Online (Sandbox Code Playgroud)

然后,根据您是否重写Application类,执行以下操作之一:

如果不覆盖Application类,请编辑清单文件以在标记中设置android:name,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">
    <application
            android:name="android.support.multidex.MultiDexApplication" >
        ...
    </application>
</manifest>
Run Code Online (Sandbox Code Playgroud)

如果您在android/app/src/main/java/MainApplication.java中覆盖Application类,请将其更改为扩展MultiDexApplication(如果可能),如下所示:

public class MyApplication extends MultiDexApplication { ... }
Run Code Online (Sandbox Code Playgroud)

这是android的文档,说明此错误的含义及其发生的原因,以及如何修复它https://developer.android.com/studio/build/multidex.html


小智 7

这对我有用,当您在项目目录中时,请尝试使用:

cd android && gradlew clean
cd .. && react-native run-android
Run Code Online (Sandbox Code Playgroud)

来源:https : //github.com/facebook/react-native/issues/10367#issuecomment-308153481