Javafx与Android - Api

时间:2015-06-29 10:05:14

标签: android gradle javafx build.gradle javafxports

我正在尝试在JavaFx项目中使用Android特定代码。我在JavaFX上写了一个小游戏,当我使用JavaFX-Ports时,我可以在Android Handy上运行这个游戏。现在我想展示一些广告,为此我必须使用FXActivity作为上下文。

我导入了FXActivity

import javafxports.android.FXActivity;

然后我收到此错误:

D:\Martin\Programmieren\fx to android\Trio\src\main\java\net   \hagh\Main.java:18:
error: package javafxports.android does not exist
import javafxports.android.FXActivity;
                      ^
1 error
:compileJava FAILED

现在我将jfxdvk.jar和android.jar(来自Android-SDK)添加到我的依赖项中,现在我的build.gradle文件看起来像:

buildscript {
    repositories {
        jcenter()
    }

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

apply plugin: 'org.javafxports.jfxmobile'

mainClassName = 'net.hagh.Main'

dependencies {
    compile files("D:/Programmieren/fx to android/dalvik-sdk/rt/lib/ext/jfxdvk.jar", "C:/Users/Martin/AppData/Local/Android/android-sdk/platforms/android-22/android.jar")
}

repositories {
    jcenter()
}

与以前相同的错误......

我错了什么,我该怎么办呢?我长期寻找解决方案,但有很多不同的教程,我认为其中大部分已经过时了。 有人能给我一个正确的build.gradle文件吗?

我找到了这个例子:https://bitbucket.org/javafxports/samples/src/56e2050ef9e1/HelloPlatform/?at=default,我认为这是正确的方法。但我不明白如何以这种方式使用FXActivity

编辑:我为此

开了一个新的question

NetBeans的Gluon插件和HelloPlatform示例帮助了我,但现在我想使用Google-Play-Services来显示添加内容。 将此添加到我的build.gradle文件中:

repositories {
    def androidHome = System.getenv("ANDROID_HOME")
    maven { url "$androidHome/extras/android/m2repository/" }
    maven { url "$androidHome/extras/google/m2repository/"}
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.google.android.gms:play-services-ads:7.5.0'
}

在我的AndroidManifest.xml中,我添加了:

<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />

当我尝试构建apk文件时,我的下一个错误

:processAndroidResources UP-TO-DATE
C:\Users\Martin\Documents\NetBeansProjects\Trio\build\javafxports\tmp\android\AndroidManifest.xml:27: error: Error: No resource found that matches the given name (at 'value' with value '@integer/google_play_services_version').

:processAndroidAndroidResources FAILED

我搜索了一下,发现我应该包含google-play-services_lib,但我不知道如何。这是我第一次使用gradle

1 个答案:

答案 0 :(得分:1)

对于初学者,您不需要添加这些依赖项:jfxmobile插件已经为您完成了。

您可以查看NetBeans的Gloun plugin,以使用JavaFXPorts创建一个新的JavaFX项目。

现在,在这个新项目中,如果你想添加一些Android代码,你必须将它添加到Android / Java包中。

正如您已经指出的那样,一种方法是遵循HelloPlatform。它包含一个PlatformService,可根据您运行的平台为您加载该类。多亏了这个,如果你在Android上,你可以加载AndroidPlatformProvider。因此,无论平台如何,您都必须提供要从主类调用的方法,并在每个平台上实现它们(至少使用虚拟内容)。

您还可以查看此question,因为它提供了一个完整的Android代码解决方案。