我尝试通过生成带有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'
}
}
使用过的软件/模拟器:
Android Studio中使用过的模拟器:
并尝试了
使用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。