![](/img/trans.png)
[英]react-native run-android failed with error: Execution failed for task ':app:dexDebug'
[英]react-native run-android error "Task :app:javaPreCompileDebug FAILED"
编辑:这个问题是通过强制 gradle 不喷射我的本地库来解决的。 这是通过添加 gradle.properties 来完成的
android.jetifier.blacklist = your-causing-issues-library
有关更多详细信息,您可以阅读官方文档或这篇文章
我需要在本机项目中使用一些本机代码。 本机代码由硬件制造商在 .jar 文件中提供。 在一个干净的项目(react-native init)中,这个 .jar 文件位于 /android/app/libs 文件夹中,只要我尝试运行“react native run-android”,就会显示这个错误。
==============
错误如下:
任务 :app:javaPreCompileDebug FAILED 6 个可操作的任务:6 个已执行
FAILURE:构建失败,出现异常。 出了什么问题:任务 ':app:javaPreCompileDebug' 执行失败。 无法解析配置 ':app:debugCompileClasspath' 的所有文件。 无法转换文件“iMagPayV5.1.4.jar”以匹配属性 {artifactType=android-classes, org.gradle.usage=java-runtime-jars} JetifyTransform 执行失败:/home/buonapasta/Desktop/React-Native/samples /project/android/app/libs/iMagPayV5.1.4.jar。 无法使用 Jetifier 转换“/home/buonapasta/Desktop/React-Native/samples/project/android/app/libs/iMagPayV5.1.4.jar”。 原因:10.(使用 --stacktrace 运行以获取更多详细信息。)
==============
提前感谢帮助! (如果某些信息不完整,请见谅)。
在 Ubuntu 18.04 上运行的 React Native 版本 0.60.4。 我已经尝试在一个干净的项目中包含一些其他 .jar 文件而不会带来不便,但是一旦我包含这个特定的 .jar 一切都会崩溃。 此外,这个库正在处理一个 Android Studio 项目。 .jar 可以在https://github.com/GPaoloni/imagpay-framework上找到
android/app/build.gradle 看起来像这样:
...
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.facebook.react:react-native:+" // From node_modules
if (enableHermes) {
def hermesPath = "../../node_modules/hermesvm/android/";
debugImplementation files(hermesPath + "hermes-debug.aar")
releaseImplementation files(hermesPath + "hermes-release.aar")
} else {
implementation jscFlavor
}
}
// Run this once to be able to run the application with BUCK
// puts all compile dependencies into folder libs for BUCK to use
task copyDownloadableDepsToLibs(type: Copy) {
from configurations.compile
into 'libs'
}
android/build.gradle:
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext {
buildToolsVersion = "28.0.3"
minSdkVersion = 16
compileSdkVersion = 28
targetSdkVersion = 28
supportLibVersion = "28.0.0"
}
repositories {
google()
jcenter()
}
dependencies {
classpath("com.android.tools.build:gradle:3.4.1")
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
mavenLocal()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url("$rootDir/../node_modules/react-native/android")
}
maven {
// Android JSC is installed from npm
url("$rootDir/../node_modules/jsc-android/dist")
}
google()
jcenter()
}
}
我只是希望能够包含 .jar 库(供本机活动使用)。
==============
更新:
我试过像 sugested 那样做:
npm install --save-dev jetifier
npx jetify
但是错误还是一样。
阅读 jetifier 的 npm 页面,在“jar/zip/aar 文件的用法”部分:
npm install jetifier
npx jetifier-standalone <your arguments here>
运行这会给我以下错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10
at org.objectweb.asm.ClassReader.readFrameType(ClassReader.java:2313)
at org.objectweb.asm.ClassReader.readFrame(ClassReader.java:2269)
at org.objectweb.asm.ClassReader.readCode(ClassReader.java:1448)
at org.objectweb.asm.ClassReader.readMethod(ClassReader.java:1126)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:698)
at org.objectweb.asm.ClassReader.accept(ClassReader.java:500)
at com.android.tools.build.jetifier.processor.transform.bytecode.ByteCodeTransformer.runTransform(ByteCodeTransformer.kt:39)
at com.android.tools.build.jetifier.processor.Processor.visit(Processor.kt:443)
at com.android.tools.build.jetifier.processor.archive.ArchiveFile.accept(ArchiveFile.kt:49)
at com.android.tools.build.jetifier.processor.Processor.visit(Processor.kt:425)
at com.android.tools.build.jetifier.processor.archive.Archive.accept(Archive.kt:76)
at com.android.tools.build.jetifier.processor.Processor.transformLibrary(Processor.kt:421)
at com.android.tools.build.jetifier.processor.Processor.transform(Processor.kt:247)
at com.android.tools.build.jetifier.processor.Processor.transform$default(Processor.kt:234)
at com.android.tools.build.jetifier.standalone.Main.run(Main.kt:157)
at com.android.tools.build.jetifier.standalone.Main$Companion.main(Main.kt:109)
at com.android.tools.build.jetifier.standalone.Main.main(Main.kt)
尝试逐行执行这些。
1.纱线
2.纱线开始
在新的终端选项卡上
1. react-native run-android
检查终端上是否显示'jetifier'运行输出。
类似的东西。
“运行 jetifier 将库迁移到 AndroidX。您可以使用“--no-jetifier”标志禁用它。”
如果在执行“react-native run-android”之前没有运行这些
1. npm install --save-dev jetifier
2. npx Jetify
我正在使用 VS Code 并在保存时安装了更漂亮和格式。 出于某种原因,当我保存页面时,他格式错误,我遇到了这个错误,当放弃更改时,它开始运行良好,你可以试试这个,作为预防。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.