JavaFXPorts 没有加载一秒钟 activity

JavaFXPorts doesn't load a second activity

我修改了 javafxports 和 android 的项目 kokos 以在 android 上创建一个 javafx 应用程序,当我尝试加载第二个 activity 时,它关闭并 returns 到主要 activity。调试文件中没有编译错误:

29 18829 V DalvikLauncher:预加载器class:[null]

12-11 17:49:36.031 18829 18829 V DalvikLauncher:javafx 应用程序 class:[class javafx.application.Application]

12-11 17:49:36.031 18829 18829 V DalvikLauncher:javafx 启动器 class:[class com.sun.javafx.application.LauncherImpl]

12-11 17:49:36.031 18829 18829 V DalvikLauncher:启动应用程序方法:[public static void com.sun.javafx.application.LauncherImpl.launchApplication(java.lang.Class,java.lang.Class,java.lang.String[])]

12-11 17:49:36.031 18829 18829 V FXEntity:调用的表面已更改 [1280、727],格式 4

12-11 17:49:36.031 18829 18829 V FXEntity:需要调用表面重绘

12-11 17:49:36.051 18829 18829 V FXEntity:需要调用表面重绘

12-11 17:49:36.071 18829 18856 I System.out:Prism 管道初始化顺序:es2

12-11 17:49:36.071 18829 18856 I System.out:使用基于本机的 Pisces 光栅器

12-11 17:49:36.071 18829 18856 I System.out:使用脏区优化

12-11 17:49:36.071 18829 18856 I System.out:使用系统大小的基元掩码

12-11 17:49:36.071 18829 18856 I System.out:不强制纹理的 2 次幂

12-11 17:49:36.071 18829 18856 I System.out: 使用硬件 CLAMP_TO_ZERO 模式

12-11 17:49:36.071 18829 18856 I System.out:选择 HiDPI 像素缩放

12-11 17:49:36.081 18829 18857 I System.out: Prism 管道名称 = com.sun.prism.es2.ES2Pipeline

12-11 17:49:36.081 18829 18857 I System.out: 加载 ES2 本机库 ... prism_es2_monocle

12-11 17:49:36.091 18829 18857 E 艺术:dlopen("/vendor/lib/libprism_es2_monocle.so", RTLD_LAZY) 失败:dlopen 失败:库“/vendor/lib/libprism_es2_monocle .so" 未找到

12-11 17:49:36.091 18829 18857 E 艺术:dlopen("/system/lib/libprism_es2_monocle.so", RTLD_LAZY) 失败:dlopen 失败:库“/system/lib/libprism_es2_monocle .so" 未找到

12-11 17:49:36.111 573 597 I ActivityManager: 显示 hidralab.Hidrasmartcm_app_2/hidralab.hidrasmartcm_app_2.MainActivity: +983ms

12-11 17:49:36.111 18829 18857 D houdini : [18857] 添加共享库 /data/app/hidralab.Hidrasmartcm_app_2-2/lib/arm/libprism_es2_monocle.so 用于 Native Bridge 的 ClassLoader。

12-11 17:49:36.111 18829 18857 I System.out: 成功.

12-11 17:49:36.111 18829 18857 I System.out: GLFactory 使用 com.sun.prism.es2.MonocleGLFactory

12-11 17:49:36.121 18829 18857 E 艺术:dlopen("/vendor/lib/libglass_monocle.so", RTLD_LAZY) 失败:dlopen 失败:库“/vendor/lib/libglass_monocle .so" 未找到

12-11 17:49:36.131 18829 18857 E 艺术:dlopen("/system/lib/libglass_monocle.so", RTLD_LAZY) 失败:dlopen 失败:库“/system/lib/libglass_monocle .so" 未找到

12-11 17:49:36.131 573 588 W InputMethodManagerService:收到 RemoteException 发送 setActive(false) 通知到 pid 18792 uid 10301

12-11 17:49:36.131 18829 18857 D houdini : [18857] 添加共享库 /data/app/hidralab.Hidrasmartcm_app_2-2/lib/arm/libglass_monocle.so 用于 Native Bridge 的 ClassLoader。

12-11 17:49:36.141 18829 18848 V FXEntity:notify_glassHasStarted 在 FXActivity 中调用。立即注册设备。

12-11 17:49:36.191 18829 18857 E libEGL:eglMakeCurrent:786 错误 3009 (EGL_BAD_MATCH)

12-11 17:49:36.201 18829 18857 I System.out: (X) 得到 class = class com.sun.prism.es2.ES2Pipeline

12-11 17:49:36.201 18829 18857 I System.out:初始化棱镜管道:com.sun.prism.es2.ES2Pipeline

12-11 17:49:36.251 18829 18857 I System.out: 支持的最大纹理尺寸:4096

12-11 17:49:36.251 18829 18857 I System.out: 最大纹理大小限制为 2048

12-11 17:49:36.261 18829 18857 I System.out: 非二次方纹理支持 = true

12-11 17:49:36.261 18829 18857 I System.out:顶点属性的最大数量=16

12-11 17:49:36.261 18829 18857 I System.out: 最大均匀顶点分量数=1024

12-11 17:49:36.261 18829 18857 I System.out: 最大均匀片段组件数=1024

12-11 17:49:36.261 18829 18857 I System.out:可变组件的最大数量 = 48

12-11 17:49:36.261 18829 18857 I System.out: 顶点着色器中可用的最大纹理单元数 = 0

12-11 17:49:36.261 18829 18857 I System.out: 片段着色器中可用的最大纹理单元数 = 8

12-11 17:49:36.261 18829 18857 I System.out:图形供应商:ARM

12-11 17:49:36.261 18829 18857 I System.out:渲染器:Mali-450 MP

12-11 17:49:36.261 18829 18857 I System.out: 版本: OpenGL ES 2.0

12-11 17:49:36.271 18829 18848 I System.out: 注册设备完成

12-11 17:49:36.281 18829 18859 W System.err: vsync: false vpipe: true

12-11 17:49:36.281 18829 18859 I System.out: [MON] 创建设备

12-11 17:49:36.291 18829 18859 I System.out: [MON] 创建设备完成,添加完成

12-11 17:49:36.451 18829 18842 I art:后台粘性并发标记清除 GC 已释放 4094(153KB) 个 AllocSpace 对象,1(40KB) 个 LOS 对象,3% 空闲,7MB/7MB,已暂停6.418 毫秒总计 26.688 毫秒

12-11 17:49:36.501 18829 18842 I art:后台部分并发标记扫描 GC 已释放 3710(130KB) 个 AllocSpace 对象,6(534KB) 个 LOS 对象,35% 空闲,7MB/11MB,已暂停6.120 毫秒总计 48.173 毫秒

12-11 17:49:36.581 18829 18859 E 艺术:dlopen("/vendor/lib/libjavafx_font.so", RTLD_LAZY) 失败:dlopen 失败:库“/vendor/lib/libjavafx_font .so" 未找到

12-11 17:49:36.581 18829 18859 E 艺术:dlopen("/system/lib/libjavafx_font.so", RTLD_LAZY) 失败:dlopen 失败:库“/system/lib/libjavafx_font .so" 未找到

12-11 17:49:36.581 18829 18859 D houdini : [18859] 添加共享库 /data/app/hidralab.Hidrasmartcm_app_2-2/lib/arm/libjavafx_font.so 用于 Native Bridge 的 ClassLoader。

12-11 17:49:36.591 18829 18859 W System.err:正在加载 FontFactory com.sun.javafx.font.freetype.FTFactory

12-11 17:49:36.591 18829 18859 W System.err:子像素:启用

12-11 17:49:36.601 18829 18859 E 艺术:dlopen("/vendor/lib/libjavafx_font_freetype.so", RTLD_LAZY) 失败:dlopen 失败:库“/vendor/lib/libjavafx_font_freetype.so" 未找到

12-11 17:49:36.601 18829 18859 E 艺术:dlopen("/system/lib/libjavafx_font_freetype.so", RTLD_LAZY) 失败:dlopen 失败:库“/system/lib/libjavafx_font_freetype.so" 未找到

12-11 17:49:36.601 18829 18859 D houdini : [18859] 为 Native Bridge 的 ClassLoader 添加了共享库 /data/app/hidralab.Hidrasmartcm_app_2-2/lib/arm/libjavafx_font_freetype.so。

12-11 17:49:36.611 18829 18859 W System.err:已加载 Freetype2(版本 2.5.0)

12-11 17:49:36.611 18829 18859 W System.err:LCD 支持已启用

12-11 17:49:36.671 18829 18859 W art : 在 Android 4.1 之前,方法 void com.sun.javafx.scene.transform.TransformUtils$ImmutableTransform.ensureCanTransform2DPoint() 会错误地覆盖包私有方法在 javafx.scene.transform.Transform

12-11 17:49:37.351 18829 18859 W art : 在 Android 4.1 之前,方法 double javafx.scene.text.TextFlow.computeChildPrefAreaHeight(javafx.scene.Node, javafx.geometry.Insets) 会有错误地覆盖了 javafx.scene.layout.Region

中的 package-private 方法

12-11 17:49:37.351 18829 18859 W art : 在 Android 4.1 之前,方法 double javafx.scene.text.TextFlow.computeChildPrefAreaWidth(javafx.scene.Node, javafx.geometry.Insets) 会有错误地覆盖了 javafx.scene.layout.Region

中的 package-private 方法

12-11 17:49:37.521 662 662 D wpa_supplicant: wlan0: 控制接口命令 'SIGNAL_POLL'

12-11 17:49:37.681 18829 18857 I System.out: 最大矩形纹理单元格大小 = 62

12-11 17:49:37.731 18829 18857 I System.out: 环绕矩形纹理 = 2 x 2

12-11 17:49:37.741 18829 18857 I System.out: ES2ResourceFactory: Prism - createStockShader: AlphaTexture_Color.frag

12-11 17:49:37.761 18829 18857 I System.out: ES2ResourceFactory: Prism - createStockShader: FillRoundRect_Color.frag

12-11 17:49:37.781 18829 18857 I System.out: ES2ResourceFactory: Prism - createStockShader: FillRoundRect_LinearGradient_PAD.frag

12-11 17:49:37.801 18829 18857 I System.out: ES2ResourceFactory: Prism - createStockShader: Solid_TextureRGB.frag

12-11 17:49:37.811 18829 18857 I System.out: ES2ResourceFactory: Prism - createStockShader: Mask_TextureSuper.frag

12-11 17:49:40.531 662 662 D wpa_supplicant: wlan0: 控制接口命令 'SIGNAL_POLL'

项目中我修改的部分在版本库中: https://github.com/MarianLN/Pruebas-JAVAFXPORTS-ANDROID/tree/master

app文件夹的一部分和项目的build.gradle。

会是什么错误?提前致谢。

我刚刚根据我在系统中安装的版本 25 修改了 build.gradle 文件。

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

android {
    compileSdkVersion 25
    buildToolsVersion '25.0.3'
    dexOptions {
        preDexLibraries = false
        additionalParameters = ['--core-library']
    }
    defaultConfig {
        applicationId "hidralab.Hidrasmartcm_app_2"
        minSdkVersion 16
        targetSdkVersion 16
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
    }

    sourceSets {
        main {
            jniLibs.srcDir file("/Users/.../.gradle/caches/modules-2/files-2.1/org.javafxports/dalvik-sdk/8.60.8/.../unpacked/dalvik-sdk/rt/lib")
            assets.srcDirs = ['assets']
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

dependencies {
    compile "com.android.support:appcompat-v7:25.3.1"
    compile 'com.android.support:design:25.3.1'
    testCompile 'junit:junit:4.12'
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile fileTree(include: ['*.jar'], dir: '/Users/.../.gradle/caches/modules-2/files-2.1/org.javafxports/dalvik-sdk/8.60.8/.../unpacked/dalvik-sdk/rt/lib/ext')
    compile 'com.google.android.gms:play-services-maps:11.0.4'
}

在使用 Android 7.1.1 部署到 Nexus 6 后,第二个 activity 显示正常,并且一直保持不变。

由于您使用的是主 JavaFX activity 和纯本机 Android activity,返回的唯一方法是使用后退按钮,这也有效。

作为一个可能的建议:您是否考虑过使用 Gluon Mobile 来正确管理不同的视图?它可以很容易地与 Gluon 地图(通过 OpenStreetMap)结合,并且它也可以在 iOS 上工作。

'kokos' 项目更像是一个概念证明,我认为从长远来看,通过 Android 项目在移动设备上开发 JavaFX 应用程序并不容易。如果您确实需要 JavaFX,请考虑使用 JavaFXPorts/Gluon Mobile 的纯 JavaFX 应用程序。现有 Android 和 iOS 本机框架可以轻松组合(请参阅现有服务的 Charm Down 库 here)。