我的javafxport android项目(gradle项目)由于一些奇怪的重复文件异常而失败。出现此异常的原因很明显:我的项目所依赖的每个库(我自己开发的库或第三方库,如jfoenix.jar)都被jfxmobile-plugin访问两次,因为异常表示文件,比如X ,在两个不同的jar文件中找到,实际上它们是相同的单个工件。
以下是更详细的说明:
jfxmobile-plugin version : org.javafxports:jfxmobile-plugin:1.1.0
build.gradle中的示例依赖项:
dependencies {
androidCompile 'com.jfoenix:jfoenix:1.0.0'
}
使用此命令创建api:
gradle androidInstall
结果:
FAILURE: Build failed with an exception.
What went wrong:
Execution failed for task ':mylib-android-demo-dist:apkDebug'.
> com.android.builder.packaging.DuplicateFileException:
Duplicate files copied in APK resources/font/roboto/Apache License.txt
File 1: C:\Users\Amin\.m2\repository\com\jfoenix\jfoenix\1.0.0\jfoenix-1.0.0.jar
File 2: C:\Users\Amin\.m2\repository\com\jfoenix\jfoenix\1.0.0\jfoenix-1.0.0.jar
谁能猜到这里发生了什么?
这是真正的build.gradle文件:
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
classpath 'org.javafxports:jfxmobile-plugin:1.1.0'
}
}
apply plugin: 'org.javafxports.jfxmobile'
mainClassName = 'com.mycompany.MainClass'
dependencies {
compile ('com.mycompany:mylib-android-demo-predist:1.1-SNAPSHOT')
{
exclude module: 'stax-api'
}
androidCompile 'com.github.tony19:logback-android-core:1.1.1-5'
androidCompile('com.github.tony19:logback-android-classic:1.1.1-5') {
exclude group: 'com.google.android', module: 'android'
}
androidCompile 'com.jfoenix:jfoenix:1.0.0'
}
jfxmobile {
android {
manifest = 'src/android/AndroidManifest.xml'
}
}
请注意,我已使用maven依赖插件将所有其他依赖项集成到一个jar文件中。
非常重要: 同样的问题是jfxrt.jar文件;有一个文件'META-INF / INDEX.LIST',由grandle androidInstall任务打印成一个重复文件。 这个jfxrt.jar文件不是我自己的任何库声明的依赖项,而是一个用于android的javafx运行时,它来自gradle插件(jfxmobile-plugin)本身的javafxports项目。
答案 0 :(得分:0)
您遇到的问题是Gradle / Android非常常见的问题。问题是,具有相同名称的(许可证)文件已从另一个JAR文件复制到目标位置。要解决此问题,请参阅packagingOptions
'documentation under the Android section上的Gradle JavaFXPorts
或查看Gradle
documentation on GitHub。 (我不想完全排除许可证,而是选择第一个遇到的许可证(pickFirst
)。
我目前正在开发一个JavaFXPorts
应用程序,也需要这样做......