Como posso usar uma atividade JavaFX em um projeto Android? (Projeto de amostra Kokos)

Estou tentando executar o projeto de amostra javafxports Kokos, pois quero usar componentes JavaFX em um aplicativo criado no Android Studio, mas não consigo compilar corretamente, posso criar todas as outras amostras, mas essa abordagem mista não está funcionando.

Quando construo, recebo uma tela preta e o erro "java.lang.ClassNotFoundException: não encontrou a classe" org.javafxports.kokos.Main "no caminho: DexPathList [[arquivo zip" /data/app/org.javafxports .kokos-2 / base.apk "]"

Tanto quanto eu posso dizer, nenhuma das classes kokos está realmente embutida no apk, portanto, por que ele não pode encontrá-las, mas eu não consigo descobrir o porquê e esse é o único exemplo que posso encontrar dessa abordagem.

Alguém é capaz de criar e executar com êxito a amostra Kokos? Em caso afirmativo, foi necessária alguma modificação?

Como alternativa, existe outro exemplo de uso de componentes JavaFX em um projeto Android como este que eu poderia usar como base? Eu só quero poder ter um aplicativo que consiste em atividades nativas do Android, mas com a capacidade de iniciar uma atividade JavaFX.

A mensagem de erro fornecida é:

02-01 21:43:16.406 17575-17575/org.javafxports.kokos V/DalvikLauncher: Launch JavaFX application on DALVIK vm.
02-01 21:43:16.409 17575-17575/org.javafxports.kokos V/DalvikLauncher: We have JavaFX on our current (base) classpath, registered exit listener
02-01 21:43:16.410 17575-17575/org.javafxports.kokos E/DalvikLauncher: Launch failed with exception.
                                                                       java.lang.ClassNotFoundException: Didn't find class "org.javafxports.kokos.Main" on path: DexPathList[[zip file "/data/app/org.javafxports.kokos-1/base.apk"],nativeLibraryDirectories=[/data/app/org.javafxports.kokos-1/lib/arm, /data/app/org.javafxports.kokos-1/base.apk!/lib/armeabi, /vendor/lib, /system/lib]]
                                                                           at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
                                                                           at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
                                                                           at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
                                                                           at javafxports.android.DalvikLauncher.resolveApplicationClass(DalvikLauncher.java:262)
                                                                           at javafxports.android.DalvikLauncher.launchApp(DalvikLauncher.java:164)
                                                                           at javafxports.android.FXDalvikEntity.getLauncherAndLaunchApplication(FXDalvikEntity.java:162)
                                                                           at javafxports.android.FXDalvikEntity.surfaceCreated(FXDalvikEntity.java:304)
                                                                           at android.view.SurfaceView.updateWindow(SurfaceView.java:583)
                                                                           at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:177)
                                                                           at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:944)
                                                                           at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2063)
                                                                           at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1115)
                                                                           at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6023)
                                                                           at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
                                                                           at android.view.Choreographer.doCallbacks(Choreographer.java:670)
                                                                           at android.view.Choreographer.doFrame(Choreographer.java:606)
                                                                           at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
                                                                           at android.os.Handler.handleCallback(Handler.java:739)
                                                                           at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                           at android.os.Looper.loop(Looper.java:148)
                                                                           at android.app.ActivityThread.main(ActivityThread.java:5461)
                                                                           at java.lang.reflect.Method.invoke(Native Method)
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
                                                                           at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:102)
                                                                        Suppressed: java.lang.ClassNotFoundException: Didn't find class "org.javafxports.kokos.Main" on path: DexPathList[[dex file "/data/dalvik-cache/xposed_XResourcesSuperClass.dex"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
                                                                           at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
                                                                           at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
                                                                           at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
                                                                                ... 23 more
                                                                            Suppressed: java.lang.ClassNotFoundException: org.javafxports.kokos.Main
                                                                           at java.lang.Class.classForName(Native Method)
                                                                           at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
                                                                           at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
                                                                           at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
                                                                                    ... 24 more
                                                                        Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
02-01 21:43:16.411 17575-17575/org.javafxports.kokos V/FXEntity: Called Surface changed [1080, 1848], format 4
02-01 21:43:16.411 17575-17575/org.javafxports.kokos V/FXActivity native: [JVDBG] SURFACE created native android window at 0xa47cd508, surface = 0xff9d0f60
02-01 21:43:16.412 17575-17575/org.javafxports.kokos V/FXEntity: Called Surface redraw needed
02-01 21:43:16.423 17575-17575/org.javafxports.kokos V/FXEntity: Called Surface redraw needed
02-01 21:43:16.441 1378-1536/system_process I/ActivityManager: Displayed org.javafxports.kokos/javafxports.android.FXActivity: +330ms

Aqui está o meu arquivo app / build.gradle, tentei atualizar as dependências, mas ainda estou tendo problemas, há algo obviamente errado?

Meu arquivo app / build.gradle original:

buildscript {
    repositories {
        jcenter()
    }   
    dependencies {
        classpath 'me.tatarka:gradle-retrolambda:3.5.0'
        classpath 'com.android.tools.build:gradle:2.2.3'
    }
}
repositories { 
    jcenter()
}
apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    // minSdkVersion 16
    buildToolsVersion "23.0.2"
    dexOptions {
        preDexLibraries = false
    }
    defaultConfig {
        applicationId "lodgon.org.kokos"
        minSdkVersion 16
        targetSdkVersion 16
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }
    sourceSets {
        main {
            jniLibs.srcDir file("/opt/dalvik-sdk/rt/lib")
            assets.srcDirs = ['assets']
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile fileTree(include: ['*.jar'], dir: '/opt/dalvik-sdk/rt/lib/ext')
}


project.tasks.withType(com.android.build.gradle.tasks.Dex) {
    additionalParameters=['--core-library']
}

Meu aplicativo editado / build.gradle

Apliquei algumas correções sugeridas e alterei o local applicationID e dalvik-sdk, mas ainda estou tendo o mesmo problema, o arquivo agora se parece com o seguinte:

buildscript {
    repositories {
        jcenter()
    }   
    dependencies {
        classpath 'me.tatarka:gradle-retrolambda:3.5.0'
        classpath 'com.android.tools.build:gradle:2.2.3'
    }
}
repositories { 
    jcenter()
}
apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    // minSdkVersion 16
    buildToolsVersion "23.0.2"
    dexOptions {
        preDexLibraries = false
    }
    defaultConfig {
        applicationId "javafxports.org.kokos"
        minSdkVersion 16
        targetSdkVersion 16
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }
    sourceSets {
        main {
            jniLibs.srcDir file("C:\\Users\\AdamL\\.gradle\\caches\\modules-2\\files-2.1\\org.javafxports\\dalvik-sdk\\8.60.8\\6630ec66e4703c910ac3fd6151a8494c8b59186b\\unpacked\\dalvik-sdk\\rt\\lib")
            assets.srcDirs = ['assets']
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile fileTree(include: ['*.jar'], dir: 'C:\\Users\\AdamL\\.gradle\\caches\\modules-2\\files-2.1\\org.javafxports\\dalvik-sdk\\8.60.8\\6630ec66e4703c910ac3fd6151a8494c8b59186b\\unpacked\\dalvik-sdk\\rt\\lib\\ext')
}


project.tasks.withType(com.android.build.gradle.tasks.Dex) {
    additionalParameters=['--core-library']
}

Manifesto Android

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="javafxports.org.kokos" >

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="javafxports.org.kokos.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Estas são as alterações que fiz do projeto de amostra baixado

O plugin JavaFXPorts foi alterado para a versão 1.32Referências do plugin android-gradle alteradas para a versão 2.2.3Versão retrolamba alterada para 3.5.0ApplicationID alterado para corrigir umLocalização dalvik-sdk alterada para corrigir uma

A compilação está sendo executada a partir do projeto de amostras que contém, como: gradlew: Kokos: androidInstall

questionAnswers(2)

yourAnswerToTheQuestion