Я пытаюсь запустить простое приложение JavaFX на Android. Поэтому я прочитал Руководство по началу работы с javafxports, используя gradle для создания приложения, но где-то застрял. Я могу создать и установить приложение на устройстве Android, используя задачу installDebug
gradle в Eclipse, однако, когда я запускаю приложение, я получаю черный экран. Когда я извлекаю файл .apk
, он не содержит jar-файла приложения JavaFX. Я предполагаю, что apk должен содержать jar-файл приложения JavaFX, но я понятия не имею, как включить его в файл .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
? Куда мне поместить jar-файл моего приложения JavaFX, чтобы он был включен в apk-файл?
build.gradle
), чтобы использовать новейшую версию плагина Android и плагина me.tatarka.retrolambda, так как он был обновлен несколько дней назад. Я получил ошибки зависимостей при обновлении зависимостей градиента. С этим обновлением это исправлено. Ошибка была:https://jcenter.bintray.com/com/android/tools/build/gradle/maven-metadata.xml Required by: MyProjectName:unspecified > me.tatarka:gradle-retrolambda:2.4.1
- person Michael   schedule 26.01.2015