boardwalk吧 关注:10,298贴子:82,455
  • 30回复贴,共1

究竟什么是Boardwalk?

只看楼主收藏回复

感觉各位对Boardwalk不是很了解。我就用我浅薄的理解,帮助各位搞清楚模糊的概念。


IP属地:山东来自iPhone客户端1楼2018-08-31 00:54回复
    背景:Minecraft最初是由Java语言编写的,因此不需要重新编译就可以拥有良好的跨平台能力,也就是几乎所有支持Java SE的平台都可以运行Minecraft,现在我们知道运行Java程序的核心组件是被称作JVM虚拟机的东东,它可以解释编译后的Java二进制文件,使其转为目标平台的机器码运行,为了提高效率,JVM虚拟机是基于栈的,编译器产生的代码也是为栈优化的。众所周知安卓APP大部分是由Java代码编写的,当然目前也有Android NDK为c++提供了Android API,这涉及到Java代码对c语言的调用。偏题了......既然安卓APP是由Java编写的,那么可不可以在Android上直接运行Java程序呢?当然可以.....不过安卓运行Java程序的核心可是和标准的JRE不同,它采用了全新的解释器和编译器,其中解释器被称作DVM虚拟机,编译器就有很多了,著名的jar2dex就是一种。要想直接运行Java程序,首先要跨越过核心的门槛。.jar是一种Java封装的可执行程序,.class是Java二进制文件。但是DVM虚拟机这些都不认,它只认.dex后缀的二进制文件,它是基于寄存器的。好在Android系统提供了一个Dx的第三方库,可以在程序中调用它对.class进行转换。Boardwalk就采用了这种高大尚的方法实现了Minecraft的转换。现在已经得到了DVM虚拟机可以运行的Minecraft,但是这就可以了吗?没那么简单。Minecraft使用了著名的Lwjgl做游戏开发,liblwjgl.so是必不可少的文件,还需要使用lwjgl的开源项目编译arm架构的lwjgl。显示方面Minecraft使用了OpenGL接口,手机显卡肯定不支持OpenGL的,一般是支持OpenGL ES接口的居多,就是两个字母的差距,这也是不可逾越的鸿沟。好在github上的glshim项目又搞出了一个ARM架构上的OpenGL接口,这个是完全的软件接口,不提供硬件加速,也就是说使用它之后你的OpenGL图形性能完全和你的处理器性能挂钩,跟你的显卡屁关系没有。虽然鸡肋了点,但是至少能够提供OpenGL 1.5的支持。目前为止显示方面算是草草了事,再说说声音输出方面。Minecraft的声音输出得益于OpenAL,这个安卓是提供支持的,因此把OpenAL规则写进程序里就行了。万事具备,那么可以愉快的玩耍了吧。但是这么一运行就发现问题了—根本就不能运行Minecraft。这是怎么回事呢?原来JVM虚拟机和DVM虚拟机终究还是两种虚拟机,很多常量的名称,数值都不同。比如简单的获取屏幕分辨率操作,两者就不是通用的。这时,有一个Github上的项目jarjar和jarjarrules在绝境中提供了一线生机。这个项目为DVM虚拟机提供了一个常量指向,也就是让程序不要读区系统常量而是读区项目提供的常量模板,这其中重新定义了屏幕分辨率,内存,cpu等等一系列数值,这也算是有点黑客的味道了。


    IP属地:山东来自iPhone客户端2楼2018-08-31 00:55
    回复(4)
      为zBoardwalk贡献的项目:Dx,logcat,jarjar,jarjarrules,Androie NDK,glshim,lwjgl等等,还有很多可以在卓伟博客主页查看。因此Boardwalk的成功是各方努力的结果,是很多很多人智慧的融合,不容易。Bw同时也可以是linux软件碎片化的典型代表。


      IP属地:山东来自iPhone客户端3楼2018-08-31 00:59
      回复
        上述描述是指Boardwalk1.1和Boardwalk1.2的,而非Boardwalk1.9。后者将是一个全新的历程。


        IP属地:山东来自iPhone客户端4楼2018-08-31 01:01
        回复
          所以啊,各位。Boardwalk玩不了,很正常。黑屏,很正常。闪退,很正常。卡顿,很正常。难道你们就认为这样的一款软件不靠运气就能在你的手机上完美运行吗?但是啊,Boardwalk永远是个好软件,我很欣赏它,这也是我最后推出ice版的原因,不想让它凉。高手如云的贴吧你还能在活过来吗?......也请啊,各位不要乱发帖子啊,什么好不好,卡不卡,黑不黑,闪不闪,到底能不能玩你猜吧。


          IP属地:山东来自iPhone客户端5楼2018-08-31 01:11
          回复(4)
            即将开学,要说再见


            IP属地:山东来自iPhone客户端6楼2018-08-31 01:14
            回复
              感谢!顶一个!


              IP属地:安徽来自手机贴吧7楼2018-08-31 05:19
              回复
                不懂


                IP属地:广东来自Android客户端8楼2018-08-31 13:57
                回复
                  。。。


                  IP属地:黑龙江来自Android客户端9楼2018-09-01 20:08
                  回复
                    大佬知道怎么解决Boardwalk1.9触控的问题吗?就是某些游戏里某些按钮不能点,创造模式滑条也不能用。。。


                    IP属地:黑龙江来自Android客户端10楼2018-09-01 20:13
                    回复(6)
                      提问!安卓新版本和旧版本的dvm虚拟机不同吗才?


                      IP属地:海南来自Android客户端11楼2018-11-18 16:48
                      回复
                        我在bw1.9的data系统文件夹里发现了jre


                        IP属地:北京来自手机贴吧12楼2019-02-14 09:57
                        回复
                          boat也是,要不然打不开jar游戏文件


                          IP属地:北京来自Android客户端14楼2020-03-10 13:04
                          收起回复