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 了。
我在 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 了。