【发布时间】:2017-12-15 21:37:46
【问题描述】:
我重建了一个我曾经在旧 Mac 上运行的项目并添加了 Android jar,因为我想在将来迁移到该项目并在项目中对其进行测试。程序执行,但 Swing 应用程序、JOGL 和 Java 3D 程序不再打开或渲染。可能有连续的过程。他们会执行还是有什么问题。
【问题讨论】:
标签: java android swing jogl java-3d
我重建了一个我曾经在旧 Mac 上运行的项目并添加了 Android jar,因为我想在将来迁移到该项目并在项目中对其进行测试。程序执行,但 Swing 应用程序、JOGL 和 Java 3D 程序不再打开或渲染。可能有连续的过程。他们会执行还是有什么问题。
【问题讨论】:
标签: java android swing jogl java-3d
通过添加 Android jar,我假设您是指 Android SDK。将这些添加到 Java 项目将破坏为 Java != Android。 (这部分在聊天和提问中已经讨论过无数次了,JDK和Android SDK不一样,字节码不同等等)
Swing 在 Android 中不存在。 Java3D1 也没有。 Android 依赖于嵌入式 OpenGL ES 支持、框架(例如 LibGDX)、引擎(例如 Unity)或类似 LWJGL 的东西来访问 OpenGL API。请注意,Android 运行 OpenGL ES,它基本上是一个轻量级的 OpenGL(API 较少是一个区别)
JOGL 确实支持 Android,而且看起来更容易转换,因为 API 没有分开
另外,与Java相比,android有一个完全不同的系统。例如,有活动,不使用主要方法,有布局(.xml 或创建 View 对象的新实例,例如 SurfaceView 或 GLSurfaceView,但按钮也可以工作)
我的观点是,如果你想将桌面 OpenGL 项目转换为 Android,由于主要的 API 差异,你必须重新编写大部分项目。
因此,除非您采取措施使其可在 Android 上运行,否则它们不会执行。而且你最好开始一个新项目,以确保你获得了一个 Android 项目所需的所有依赖项(sdk 是一回事,但还有清单、gradle 插件等)
1:Java3D 对 Android 有一些支持,但还不是功能齐全的 API
【讨论】: