我尝试通过生成带有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'
}
}
Used software/emulators:
-
Eclipse Oxygen.2
-
Gradle 4.4.1(使用Android SDK 25;还尝试过SDK 21和Gradle 2.2.0)
-
Android Studio 3.0.1
Used emulators in 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只是留下了一个消息,即“分裂”功能未知 . 我发现在“buildscript”部分下添加以下命令是必要的:
apply plugin: 'com.android.library'
2) 但是Gradle不知道这个插件,所以我再次搜索并找到a blog post,建议在存储库和依赖项部分添加以下行:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
}
}
添加此Gradle后说“无法应用插件[id'com.android.library'] . Gradle 2.2版是必需的 . 当前版本是4.4.1 . 如果使用gradle包装器,请尝试编辑distributionUrl . ”如果我安装Gradle 2.2而不是4.4.1,我会收到一些组件不再可用的错误 . 我不认为这一步让我更进一步,但我当然错了..
3) 如果我根据相关的上一个稳定版本(找到here *)将类路径中的插件"gradle"的版本号更改为2.3.3,我收到以下错误:"Failed to apply plugin [id 'org.javafxports.jfxmobile']. Could not create an instance of type org.javafxports.jfxmobile.plugin.JFXMobileExtension_Decorated. Could not generate a proxy class for class org.javafxports.jfxmobile.plugin.android.AndroidExtension."
4) 如果我使用API 21(Lollipop)建议GdleHub上Gradle的开发人员通过将compileSdkVersion设置为21并通过Android Studio下载sdk我得到以下错误:"Could not find org.javafxports:dalvik-sdk:8.60.9."所以我将其设置回API 25.项目页面也说dalvik-sdk 8.60.9目前是javafx插件的基础 .
我希望你还和我在一起;)如果不让我知道,那么我可以尝试更准确地解释这个问题 . 我不知道如何使Gradle生成有效的apk文件,所以如果您有任何建议,请告诉我!
*)您可以看到不同插件的当前版本(android,javafx) . 只需按照属性"classpath"中指定的路径,例如:https://jcenter.bintray.com/org/javafxports/jfxmobile-plugin .