JavaFX打包到Android上
2015-07-12 17:15
232 查看
让JavaFX运行到移动平台一直是社区努力完成的事。
当然,目前已经可以让JavaFX运行到Android和IOS平台了,下面我们来看看如何打包自己的JavaFX项目到Android平台。
首先下载下面这个示例: http://pan.baidu.com/s/1bnwIYrP
这个示例是我从打包官方示例的例子里修改而来,用于打包一个简单的JavaFX程序。
示例结构如下:
由目录结构可以看到,示例是采用gradle来构建的。gradle也是国外非常火的自动化构建工具。
在第一次打包的时候,需要双击gradlew.bat,会下载一系列的库和包,这里可能会花不少的时间,大家需要等等。
打包的时候需要注意以下的步骤:
1.JavaFX的项目代码放在src/main/java/文件夹下面
2.JavaFX需要的资源放在src/main/resources/文件夹下面
3.修改build.gradle文件,里面的mainClassName表示的JavaFX主类的包结构,applicationPackage表示生成的Android的APK程序的包名,当然我们也可以指定自己的xml,这个是后面需要研究的事。
4.在环境变量里添加ANDROID_HOME,用于指定AndroidSDK的目录。
在完成了上面的操作后,通过cmd进入到示例文件夹的目录里,运行gradle run,看看能否运行,如果能运行,则执行gradle android来打包我们的APK程序。
打包好的APK放在build/javafxports/android目录下面。
另外,有一个重要的点,根据官方说明,JavaFX程序需要通过以下代码来设置Stage的大小,不然在Android设备上的程序分辨率和显示会有问题。
点击颜色,下面会同步显示文本,运行效果良好。
本人之前用JavaFX写的SLG的示例,也可以打包到手机上运行,只有个别问题,当然是因为没有针对移动设备的分辨率进行调整。
有兴趣的朋友可以自己试试,后续我还会做相关研究,有问题的可以直接评论,有时间我会回复解答。
----------------------------------------------------------------------------------------------------------------------------------------------
最近推特和Youtube上的比较多,研究了几天的JavaFX打包到Android上。基本没什么大的问题了,现在已经支持针对各个平台做不同的操作,可以添加Android广告,调用Android功能等等了。但是JavaFX游戏打包到Android上的效率不容乐观,本人写了一点示例打包到Android上了。
JavaFX游戏在Android上的效率感觉一般般,本人用写的简单的游戏引擎写了一些示例打包到android上,物体不算很多的情况下大概都在50-60FPS之间。一个简单的Image,添加了100个到同屏幕上,FPS就掉到20-30了。当然,PC和android性能差别很大,PC上至少添加3000个Image,FPS才会到30左右(个人电脑测试)。不过,毕竟不是用OpenGL做底层绘制,在android上运行效率这样的情况也不算太难堪。
看看后续会有什么改进吧!
---------------------------------------------------------------------------------------------------------------------------------------------
本文章为个人原创,转载请注明出处,本人CSDN博客:http://blog.csdn.net/wingfourever,个人博客地址:http://www.wjfxgame.com。
当然,目前已经可以让JavaFX运行到Android和IOS平台了,下面我们来看看如何打包自己的JavaFX项目到Android平台。
首先下载下面这个示例: http://pan.baidu.com/s/1bnwIYrP
这个示例是我从打包官方示例的例子里修改而来,用于打包一个简单的JavaFX程序。
示例结构如下:
由目录结构可以看到,示例是采用gradle来构建的。gradle也是国外非常火的自动化构建工具。
在第一次打包的时候,需要双击gradlew.bat,会下载一系列的库和包,这里可能会花不少的时间,大家需要等等。
打包的时候需要注意以下的步骤:
1.JavaFX的项目代码放在src/main/java/文件夹下面
2.JavaFX需要的资源放在src/main/resources/文件夹下面
3.修改build.gradle文件,里面的mainClassName表示的JavaFX主类的包结构,applicationPackage表示生成的Android的APK程序的包名,当然我们也可以指定自己的xml,这个是后面需要研究的事。
4.在环境变量里添加ANDROID_HOME,用于指定AndroidSDK的目录。
在完成了上面的操作后,通过cmd进入到示例文件夹的目录里,运行gradle run,看看能否运行,如果能运行,则执行gradle android来打包我们的APK程序。
打包好的APK放在build/javafxports/android目录下面。
另外,有一个重要的点,根据官方说明,JavaFX程序需要通过以下代码来设置Stage的大小,不然在Android设备上的程序分辨率和显示会有问题。
Rectangle2D bounds = Screen.getPrimary().getVisualBounds(); Scene scene = new Scene(root, bounds.getWidth(), bounds.getHeight());在Android上运行效果如下:
点击颜色,下面会同步显示文本,运行效果良好。
本人之前用JavaFX写的SLG的示例,也可以打包到手机上运行,只有个别问题,当然是因为没有针对移动设备的分辨率进行调整。
有兴趣的朋友可以自己试试,后续我还会做相关研究,有问题的可以直接评论,有时间我会回复解答。
----------------------------------------------------------------------------------------------------------------------------------------------
最近推特和Youtube上的比较多,研究了几天的JavaFX打包到Android上。基本没什么大的问题了,现在已经支持针对各个平台做不同的操作,可以添加Android广告,调用Android功能等等了。但是JavaFX游戏打包到Android上的效率不容乐观,本人写了一点示例打包到Android上了。
JavaFX游戏在Android上的效率感觉一般般,本人用写的简单的游戏引擎写了一些示例打包到android上,物体不算很多的情况下大概都在50-60FPS之间。一个简单的Image,添加了100个到同屏幕上,FPS就掉到20-30了。当然,PC和android性能差别很大,PC上至少添加3000个Image,FPS才会到30左右(个人电脑测试)。不过,毕竟不是用OpenGL做底层绘制,在android上运行效率这样的情况也不算太难堪。
看看后续会有什么改进吧!
---------------------------------------------------------------------------------------------------------------------------------------------
本文章为个人原创,转载请注明出处,本人CSDN博客:http://blog.csdn.net/wingfourever,个人博客地址:http://www.wjfxgame.com。
相关文章推荐
- Android笔记---错误笔记
- android fragment 的使用
- 【Android游戏开发之六】无法在SurfaceView中添加组件的替代方法
- 安卓开发——AndroidManifest.xml配置详解一
- Android常用工具类封装---SharedPreferencesUtil
- 【Android】setAdapter()与notifyDataSetChanged()对比
- Windows 7 X86 + Android Studio 1.2.2 + Emulator
- android系统的启动流程
- [Android随笔]Android关于Crash的处理
- android学习路线:如何成长为高级工程师
- 【Android】关于使用空格对齐文字
- Android Studio 项目目录结构
- android 程序中禁止屏幕旋转和重启Activity
- Android应用被killed时,Service不被一起kill的方法
- Android Studio SDK Download interrupted: Read timed out解决
- Mac下Android studio 之NDK配置教程(二)
- android 中“分享一下”的实现方法
- Android去掉标题栏和全屏
- Android开发:获取屏幕宽和高的两种方法(px、dip、分辨率之间的关系及px与dip互相转化)
- Android 屏幕(View)坐标系统