JavaFX Android 端口 - Google 播放服务

JavaFX Android Port - Google Play Services

我在 JavaFX 上写了一个小游戏并成功移植到 Android。现在我想添加一些 Google 广告。为此,我创建了一个 PlatformService 和 AndroidPlatformProvider,如 example 所示。我正在使用 Netbeans 的 Gluon 插件

我将其添加到我的 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

合作

在 Android SDK 管理器中,我安装了最新的 Play 服务和存储库

这不是一个完整的解决方案,只是一个解决方法...

你说得对 google-play-services_lib:它包含一个包含所有服务的 fat jar。如果你只是将这个 jar 复制到你的 libs 文件夹,你将不需要任何依赖项,但是这个:

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

现在,您可以构建您的项目,但您仍然需要清单文件中的元数据。

如果您查看 google-play-services_lib 文件夹,您还会发现一个 res/values 文件夹,其中有一个 version.xml 文件。那里有你要找的东西。所以现在你可以找到编辑这个文件的值:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <integer name="google_play_services_version">7571000</integer>
</resources>

并替换 AndroidManifest.xml 上的字符串:

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

但是由于您需要这些资源以及 jar,我认为将所有 res 内容复制到您的 android/res 文件夹中是更好的方法。

现在您应该可以构建您的 apk 了。