Android:INSTALL_FAILED_NO_MATCHING_ABIS,带有.JAR文件中/ lib文件夹下的Javascript文件

时间:2019-05-01 00:34:34

标签: android jar android-gradle

我正在构建一个可能在Android应用程序中使用的库模块。在代码的特定部分,我需要加载一个JavaScript文件,以便脚本引擎运行它。我的文件结构如下所示:https://i.snag.gy/R7hHPI.jpg

└───src
    ├───main
    │   ├───java
    │   │   └───calegari
    │   │       └───murilo
    │   │           └───qacadscrapper
    │   │               │   QAcadScrapper.java
    │   │               │
    │   │               └───utils
    │   │                       Grade.java
    │   │                       Subject.java
    │   │                       User.java
    │   │
    │   └───resources
    │       └───lib
    │               Barrett.js
    │               BigInt.js
    │               RSA.js
    │
    └───test
        ├───java
        │   └───calegari
        │       └───murilo
        │           └───qacadtest
        │                   QAcadTest.java
        │
        └───resources

构建构件时,我对其进行了配置,以便IntelliJ将/ resources文件夹的内容放在Jar文件的根文件夹中: https://i.snag.gy/fN4z6t.jpg

这些是.jar文件的内容:https://i.snag.gy/QPR9XK.jpg

├───calegari
│   └───murilo
│       └───qacadscrapper
│           └───utils
├───com
│   └───sun
│       └───script
│           ├───javascript
│           └───util
├───javax
│   └───script
├───lib ---> Here are the JavaScript files
├───META-INF
│   ├───maven
│   │   └───org.jsoup
│   │       └───jsoup
│   └───services
├───org
│   ├───jsoup
│   │   ├───helper
│   │   ├───internal
│   │   ├───nodes
│   │   ├───parser
│   │   ├───safety
│   │   └───select
│   └───mozilla
│       ├───classfile
│       └───javascript
│           ├───annotations
│           ├───ast
│           ├───commonjs
│           │   └───module
│           │       └───provider
│           ├───debug
│           ├───jdk13
│           ├───jdk15
│           ├───json
│           ├───optimizer
│           ├───regexp
│           ├───resources
│           ├───serialize
│           ├───tools
│           │   ├───debugger
│           │   │   └───treetable
│           │   ├───idswitch
│           │   ├───jsc
│           │   ├───resources
│           │   └───shell
│           ├───typedarrays
│           ├───v8dtoa
│           ├───xml
│           └───xmlimpl
└───sun
    ├───misc
    ├───reflect
    └───security
        ├───action
        └───util

但是,当我尝试安装APK时,出现“ INSTALL_FAILED_NO_MATCHING_ABIS”错误。我很确定是由/ lib下的这些.js文件引起的,因为如果我从.jar版本中删除它们,该错误就会消失。

使用Gradle配置库。

如何避免此错误?希望有人能帮忙!

更新

我使IntelliJ在jar包内的Java文件旁边添加了.js文件,当从.jar文件运行时,它可以工作,但是如果我尝试在IntelliJ中运行某些测试,则它不起作用,因为gradle不起作用。 t将文件添加到已编译的代码中...

解决方案

我可以通过将文件移到源路径内并将其添加到gradle.build文件中来使其工作:

sourceSets {
    main {
        java {
            srcDirs = ['src/main/java']
        }
        resources {
            srcDir 'src/main/java'
            include '**/*.js'
        }
    }

    test {
        java {
            srcDirs = ['src/test/java']
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我使用bitcoinJ库(org.bitcoinj:bitcoinj-core:0.14.7)添加到build.gradle(在模块应用中)android范围内的打包选项时遇到了此问题。它帮助了我。

android {
    ...
    packagingOptions {
    exclude 'lib/x86_64/darwin/libscrypt.dylib'
    exclude 'lib/x86_64/freebsd/libscrypt.so'
    exclude 'lib/x86_64/linux/libscrypt.so'
    }
}