【发布时间】:2019-09-19 16:03:19
【问题描述】:
我正在构建一个可能在 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']
}
}
}
【问题讨论】:
标签: android jar android-gradle-plugin