Android で単純な JavaFX アプリケーションを実行しようとしています。そのため、 gradle を使用してアプリをビルドするためにjavafxports Getting Started Guideを読みましたが、どこかで行き詰まりました。installDebug
Eclipse 内で gradleのタスクを使用して Android デバイスにアプリをビルドしてインストールすることはできますが、アプリを起動すると黒い画面が表示されます。ファイルを抽出する.apk
と、JavaFX アプリケーションの jar ファイルが含まれていません。apk には JavaFX アプリケーションの jar ファイルが含まれているはずですが、それを .xml に含める方法がわかりません.apk
。
また、gradle を使用して JavaFX アプリケーション自体 (jar ファイル) をビルドしようとしましたが、これは正常に動作します。ただし、このjarファイルをapkファイルに含めることができる場所をどこに置くべきかわかりません。ディレクトリに配置する必要があると読みましたがdist
、これはNetbeansでのみ使用されると思いますよね? プロジェクトをビルドするために Eclipse gradle 統合を使用しています。
これが私が試したものです。JavaFX アプリケーションは HelloWorld サンプル アプリと同じくらいシンプルで魅力的に機能するため、gradle ビルド ファイル内の構成ミスが予想されます。
build.gradle - apk をビルドする
apply plugin: 'me.tatarka.retrolambda'
apply plugin: 'android'
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'me.tatarka:gradle-retrolambda:2.5.0'
classpath 'com.android.tools.build:gradle:1.0.1'
}
}
repositories {
jcenter()
}
ext {
dalvikSdkHome = getProjectProperty('dalvikSDK')
dalvikSdkLib = dalvikSdkHome + '/rt/lib'
}
android {
compileSdkVersion 21
buildToolsVersion "21.1.1"
dexOptions {
preDexLibraries = false
}
sourceSets {
main {
jniLibs.srcDir file("${dalvikSdkLib}/")
assets.srcDirs = ['assets']
}
}
lintOptions {
abortOnError false
}
}
dependencies {
compile files ("${dalvikSdkLib}/ext/jfxrt.jar",
"${dalvikSdkLib}/ext/jfxdvk.jar",
"${dalvikSdkLib}/ext/compat-1.0.0.jar")
}
project.tasks.withType(com.android.build.gradle.tasks.Dex) {
additionalParameters=['--core-library']
}
String getProjectProperty(String propertyName) {
project.hasProperty(propertyName) ? project.property(propertyName) : null
}
build.gradle - jar をビルドする
// Declares binary plugin and its required JavaFX classpath
apply from: "http://dl.bintray.com/content/shemnon/javafx-gradle/0.4.0/javafx.plugin"
// Configures plugin
javafx {
// Points to JDK and its JavaFX libraries, also declares target runtime JDK
javaRuntime = getProjectProperty('javaJDKPath')
// Application name and ID presented by target OS
appID 'HelloWorldApp'
appName 'Hello World Application'
// Main class of application
mainClass 'helloworld.HelloWorld'
// JVM arguments, system properties, application command line arguments
jvmArgs = ['-XX:+AggressiveOpts', '-XX:CompileThreshold=1']
systemProperties = ['prism.disableRegionCaching':'true']
arguments = ['-l', '--fast']
// Keystore credentials for signing JAR
// Generate key: keytool -genkey -alias release -keyalg RSA -keystore keystore.jks -keysize 2048
releaseKey {
alias = 'release'
keyStore = file(getProjectProperty('keystoreJKSFile')) // keyStore = file("${System.properties['user.home']}/keystore/keystore.jks")
keyPass = getProjectProperty('keyStorePassword')
storePass = getProjectProperty('storePassword')
}
signingMode 'release'
// ...
}
String getProjectProperty(String propertyName) {
project.hasProperty(propertyName) ? project.property(propertyName) : null
}
gradle.properties
javaJDKPath=D:/Java/jdk1.8.0_20
dalvikSDK=D:/Java/dalvik-sdk-8u20b3/dalvik-sdk
keystoreJKSFile=D:/Java/jre1.8.0_20/bin/keystore.jks
keyStorePassword=password
storePassword=password
local.properties
sdk.dir=D:/programme/Android/adt-bundle-windows-x86_64-20130917/sdk
そして、これは私のプロジェクト構造です
HelloWorld
-- src\main
-- java\helloworld\HelloWorld.java
-- res\
-- AndroidManifest.xml
-- assets\
-- javafx.platform.properties
-- javafx.properties
-- build.gradle
-- gradle.properties
-- local.properties
dist
ディレクトリを使用する必要がありますか? apk ファイルに含まれる JavaFX アプリケーションの jar ファイルをどこに配置しますか?