jfxmobile-plugin apk生成因单个jar的

时间:2016-12-21 10:58:15

标签: android javafxports

我的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项目。

1 个答案:

答案 0 :(得分:0)

您遇到的问题是Gradle / Android非常常见的问题。问题是,具有相同名称的(许可证)文件已从另一个JAR文件复制到目标位置。要解决此问题,请参阅packagingOptions'documentation under the Android section上的Gradle JavaFXPorts或查看Gradle documentation on GitHub。 (我不想完全排除许可证,而是选择第一个遇到的许可证(pickFirst)。

我目前正在开发一个JavaFXPorts应用程序,也需要这样做......