react-native运行android错误“任务:app:javaPreCompileDebug FAILED”

时间:2019-07-25 04:56:57

标签: java android react-native

我需要在react native项目中使用一些本地代码。硬件制造商在.jar文件中提供了本机代码。在一个干净的项目(react-native init)中,将该.jar文件放在/ android / app / libs文件夹中,当我尝试运行“ react native run-android”时,就会显示此错误。

==============

错误如下:

任务:app:javaPreCompileDebug失败 6个可执行的任务:6个已执行

  

失败:生成失败,发生异常。   什么地方出了错:    任务':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库(供本机活动使用)。

==============

更新:

我曾尝试过像个没精打采的事情:

npm install --save-dev jetifier
npx jetify

但是错误仍然相同。

在“ jar / zip / aar文件的用法”部分中,阅读jetifier的npm页面:

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)

2 个答案:

答案 0 :(得分:0)

尝试逐行执行这些操作。
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

答案 1 :(得分:0)

我正在使用VS Code,并且保存时更漂亮和更格式化。出于某种原因,当我保存页面时,他的格式错误并且出现了此错误,当放弃更改时,它开始运行良好,您可以尝试这样做,以防万一。