我正在构建一个可能在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']
}
}
}
答案 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'
}
}