17

Android で単純な JavaFX アプリケーションを実行しようとしています。そのため、 gradle を使用してアプリをビルドするためにjavafxports Getting Started Guideを読みましたが、どこかで行き詰まりました。installDebugEclipse 内で 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 ファイルをどこに配置しますか?

4

2 に答える 2

3

Androidでjavafxを実行する方法:

  1. dalvik SDKをダウンロードします。
  2. 行くsamples\HelloWorld\javafx- それはgradleプロジェクトです
  3. local.properties
    Windows システムの例にある dalvik-sdk と android-sdk の場所を変更します。
    sdk.dir=C\:\\dev\\android-sdk javafx.dir=C\:\\dev\\dalvik-sdk
  4. gradlew installDebugapk をビルドしてデバイスにインストールするために実行します。buildフォルダにも出力があります
  5. デバイスでアプリケーションを起動します (最初の起動の 10 秒前に黒い画面が表示されました)。
  6. プロジェクトを Eclipse または Idea で標準的な gradle プロジェクトとして開く
于 2015-01-07T15:35:21.323 に答える