Gradle:从JavaFX Application

时间:2017-12-28 18:33:19

标签: android gradle javafx javafxports

我尝试通过生成带有Gradle的apk文件将一个简单的JavaFX应用程序移植到Android。

但不幸的是,我生成的应用程序安装到Android设备总是失败,出现以下错误:" INSTALL_FAILED_NO_MATCHING_ABIS:无法提取本机库,res = -113。"。

  

项目结构

src
|-main
  |-java
    |-app
      |-main
        |-MainApp.java
  |-resources
    |-app
      |-css
        |-main.css
  

MainApp.java

public class MainApp extends Application
{
    @Override
    public void start(Stage primaryStage)
    {
        try
        {
        primaryStage.setTitle("TestAppFX");

            Button btn = new Button("Exit Application");
            btn.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event)
                {
                    System.exit(0);
                }
            });

            StackPane root = new StackPane();
            root.getChildren().add(btn);

            primaryStage.setScene(new Scene(root, 300, 250));
            primaryStage.show();
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    public static void main(String[] args)
    {
        launch(args);
    }
}
  

gradle.build

buildscript {
    repositories {
        jcenter()
    }

    dependencies {
        classpath 'org.javafxports:jfxmobile-plugin:1.3.10'
    }
}

apply plugin: 'org.javafxports.jfxmobile'

mainClassName = 'app.main.MainApp'

repositories {
    jcenter()
}

jfxmobile {
    android {
        compileSdkVersion = 25
        androidSdk = 'C:/Program Files (x86)/Entwicklung/Android_SDK'
        applicationPackage = 'org.javafxports.ensemble'
    }
}

使用过的软件/模拟器:

  • Eclipse Oxygen.2
  • Gradle 4.4.1(使用Android SDK 25;还尝试过SDK 21和Gradle 2.2.0)
  • Android Studio 3.0.1

Android Studio中使用过的模拟器:

  • Lollipop x86(SDK 21)
  • Lollipop x86_64(SDK 21)

并尝试了

  • Nougat x86(SDK 25)
  • Nougat x86_64(SDK 25)

使用Nexus 4或5(X)的图像。

好的,所以我已经尝试了很多东西,但这导致我只有其他问题所以我希望有人能帮助我前进:

1)我找到了thread用户建议添加的内容

splits {
    abi {
        enable true
        reset()
        include 'x86', 'armeabi-v7a'
        universalApk true
    }
}

到build.gradle文件的android部分。但Gradle只是给我留下了一个功能&#34;分裂&#34;不知道。我发现在&#34; buildscript&#34;下添加以下命令是必要的。部分:

apply plugin: 'com.android.library'

2)但是Gradle并不知道这个插件,所以我再次搜索并发现a blog post建议将以下行添加到存储库和依赖项部分:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'    
    }
}

添加此Gradle后说&#34;无法应用插件[id&#39; com.android.library&#39;]。 Gradle 2.2版是必需的。当前版本是4.4.1。如果使用gradle包装器,请尝试编辑distributionUrl。&#34;如果我安装Gradle 2.2而不是4.4.1,我会收到一些组件不再可用的错误。我不认为这一步让我更进一步,但我当然错了......

3)如果我更改插件的版本号&#34; gradle&#34;在类路径中根据相关的最后稳定版本(找到here *)到2.3.3我得到以下错误: &#34;无法应用插件[id&#39; org.javafxports.jfxmobile&#39;]。无法创建org.javafxports.jfxmobile.plugin.JFXMobileExtension_Decorated类型的实例。无法为类org.javafxports.jfxmobile.plugin.android.AndroidExtension生成代理类。&#34;

4)如果我通过将compileSdkVersion设置为21并通过Android Studio下载sdk从Gradle on GitHub的开发人员建议使用API​​ 21(Lollipop),我会收到以下错误:&#34 ;找不到org.javafxports:dalvik-sdk:8.60.9。&#34;所以我把它设置回API 25.项目页面还说dalvik-sdk 8.60.9目前是javafx插件的基础。

我希望你还和我在一起;)。如果不让我知道,那么我可以尝试更准确地解释这个问题。我不知道如何让Gradle生成有效的apk文件,所以如果您有任何建议,请告诉我们!

*)您可以看到不同插件的当前版本(android,javafx)。只需按照属性&#34; classpath&#34;中指定的路径,例如:https://jcenter.bintray.com/org/javafxports/jfxmobile-plugin

0 个答案:

没有答案