设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 15655|回复: 32
打印 上一主题 下一主题

[原创发布] Rpg Maker MV android 打包方案(加入自定义存档目录设置)

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1380
在线时间
140 小时
注册时间
2007-8-10
帖子
21
跳转到指定楼层
1
发表于 2020-4-19 21:34:47 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 huhao1987 于 2020-4-28 10:10 编辑

大家好,我算是初来乍到了,虽然注册了很久,但几乎没发过贴.最近是玩过了某个游戏才开始研究RMMV的,因为本职是Android程序员,所以对和Android有关的东西都会有点敏感.研究了下目前各类把RMMV游戏打包成android格式的方法,主流的有两种方式(应该).

一种是使用github上的MV Android Client,基于Android studio,相对于原生,但是操作比较复杂,而且是基于他项目的复制粘贴,看起来运行没问题,但是实际上项目内很多东西修改起来很复杂,比如包名和一些代码.
另一种则是比较常见的傻瓜打包工具,这类工具简单方便,但是可塑性比较差,比如用的应该是比较久版的sdk之类的.

所以废话了这么多,终于该说正题了.我用了2天时间写了个依赖库,基于原生android,也就是必须要使用Android studio,但内部代码量非常少,可以使用最新sdk,可以自己加代码(如果你想学着写点Android代码给游戏加点料之类的),生成出来的apk完全是你自己的东西,包括包名,签名之类的.后面的版本会对本地存档的bug进行android端的修复(因为这个问题在目前版本的Android上其实是用纯JS实现不了的).后续还会加入对obb的支持,也就是可以上架Google Play(这个我知道对国内开发者可能意义不大).

项目介绍:https://github.com/huhao1987/RMMV-android-deployment/blob/master/README.zh_CN.md

有任何问题请留言,或者在github上开issues.


本项目提供了一个可以帮助RMMV游戏作者制作_安卓_版本游戏的依赖库,并且使用方便快捷.
本项目使用kotlin编写,所以代码比Java更易读和简便.

更新日志
添加Android本地存档支持(基于我编写的插件)

添加自定义存档目录


基本步骤

1. 首先你要下载最新Android Studio, 目前最新版是3.6.3.
2. 创建一个新项目或者打开一个已有的项目.
3. 在项目环境刷新完毕后,选择"build.gradle(Project:xxxx)" 在allproects里加入 "maven { url 'https://jitpack.io' }"
  1. allprojects {
  2.     repositories {
  3.         google()
  4.         jcenter()
  5.          maven { url 'https://jitpack.io' }

  6.     }
  7. }
复制代码


4. 在 "build.gradle(Module:app)"中加入下面一行
  1. implementation 'com.github.huhao1987:RMMV-android-deployment:1.0.8'
复制代码

5. 选择 "manifests", 在"activity"标签内添加
   
  1.   android:configChanges="orientation|screenSize"
  2.        android:screenOrientation="sensorLandscape"
复制代码

此步骤可以保证游戏运行于横屏

如果你的游戏需要网络支持
5.1 请添加

   
  1. <uses-permission android:name="android.permission.INTERNET" />
  2.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
复制代码

5.2 在"application"标签内添加

  1.         android:networkSecurityConfig="@xml/network_security_config"
复制代码

5.3 右键点击 "app"->"New"->"Android Resource Directory", 在Resource type里选择"xml". 右键点击 "xml"->"New"->"XML Resource file",命名为"network_security_config",然后复制以下代码

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <network-security-config>
  3.     <base-config cleartextTrafficPermitted="true" />
  4. </network-security-config>
复制代码

5.1 和 5.2设置可以让游戏有网络连接权限.5.2能保证连接到"http"和"https"都不被阻断

在项目的主activity的layout文件中加入下面的控件,默认主activity为MainActivity, 它的layout文件一般为activity_main.
  1. <hh.rpgmakerplayer.webviewmodule.rpgPlayerView
  2.         android:id="@+id/rpgwebview"
  3.         android:layout_width="match_parent"
  4.         android:layout_height="match_parent" />
复制代码

如果你的项目里没有assets目录,右键点击 "app"-"New"->"Folder"->"Assets Folder",然后把你游戏的www文件夹复制进去.

在MainActivity的oncreate方法中加入下面几行

kotlin:
  1. rpgwebview.build()
  2. rpgwebview.Playgame("//android_asset/www/index.html")
复制代码

Java:
  1. rpgPlayerView rpgwebview=findViewById(R.id.rpgwebview)
  2. rpgwebview.build()
  3. rpgwebview.Playgame("//android_asset/www/index.html")
复制代码

在手机上编译并且运行你的游戏.
高级操作
除去基本步骤,你也可以使用一些其他属性

1)全屏游戏或者不全屏
  1. rpgwebview
  2. .isfullscreen(false/true)
  3. .build()
复制代码

2)使用你自己的evaluateJavascript运行游戏
  1. rpgwebview
  2. .setevaluateJavascript(xxxxxx)
  3. .build()
复制代码

3)Android 存档支持
由于Android系统的限制,RMMV无法将存档保存在Android本地,我写了个插件来支持。 用法很简单,首先使用本项目来创建你的Android游戏项目,从 这里下载hh_Android_save.js,然后在你的RMMV项目中开启这个插件。

记住修改之后更新你Android项目中的assets文件夹

之后当你测试和玩游戏的时候,游戏存档会被存储在app的内部存储中,如果你root过,可以在这个文件夹下找到游戏存档。

4) 自定义存档设置
添加自定义存档设置,本功能允许你把存档保存在设置的目录里,但是你必须自己获取android的写文件权限。
  1. rpgwebview.setupcustompath("your path")
  2. rpgwebview.build()
复制代码

5)更多新功能...敬请期待

评分

参与人数 6+6 收起 理由
Darknessforever + 1 Excellent articles
hryio + 1
mulier + 1 精品文章
walf_man + 1 塞糖
白嫩白嫩的 + 1 精品文章
CxyGL + 1 塞糖

查看全部评分

Lv3.寻梦者

梦石
0
星屑
1380
在线时间
140 小时
注册时间
2007-8-10
帖子
21
2
 楼主| 发表于 2020-4-20 06:13:07 | 显示全部楼层
PLeaseS 发表于 2020-4-19 22:46
感谢大佬
然而好像还是不能用一些插件

请问是什么插件呢?我用RMMV时间很短,不知道哪些插件会和Android本身属性有冲突
回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1380
在线时间
140 小时
注册时间
2007-8-10
帖子
21
3
 楼主| 发表于 2020-4-21 09:35:23 | 显示全部楼层
重大新更新:Android本地存档支持
回复 支持 2 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1380
在线时间
140 小时
注册时间
2007-8-10
帖子
21
4
 楼主| 发表于 2020-4-21 12:05:55 | 显示全部楼层
walf_man 发表于 2020-4-21 11:32
不错,教程步骤清晰明了,内容翔实,可以说是非常好的教程,学习了
支持楼主为rmmv生态贡献自己的力量

Android studio吗?我看能不能传个百度网盘
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1380
在线时间
140 小时
注册时间
2007-8-10
帖子
21
5
 楼主| 发表于 2020-4-28 10:10:59 | 显示全部楼层
加入更新:自定义存档目录设置
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1380
在线时间
140 小时
注册时间
2007-8-10
帖子
21
6
 楼主| 发表于 2020-5-3 15:36:16 | 显示全部楼层
本帖最后由 huhao1987 于 2020-5-3 15:44 编辑
haiyin 发表于 2020-5-3 13:42
大佬,你的方法Playgame()第二个参数的Boolean值true代表啥路径,false呢


是判断是否为网络链接,也就是传网络url过去,把这个设置成true能直接运行.
不过这个功能只是我之前测试的时候用的,并不算完善,我也没深入写,默认是false,后面可能会删掉
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1380
在线时间
140 小时
注册时间
2007-8-10
帖子
21
7
 楼主| 发表于 2020-5-31 06:29:03 | 显示全部楼层
dhies 发表于 2020-5-28 23:34
这个报错是缺少插件吧  但是按照这个提示网址下载后的文件 放在那
还是因为其他什么原因? ...

你用法错了,这个是源码,我已经编译好了,直接按照介绍里的方法是用就行了。你自己新建项目,然后把我的库引用进去,不需要修改源码
回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1380
在线时间
140 小时
注册时间
2007-8-10
帖子
21
8
 楼主| 发表于 2021-1-5 11:37:20 | 显示全部楼层
qq983378065 发表于 2021-1-4 17:35
感谢大佬,但是有几点不明白,求解答
首先是建立network_security_config.xml文件后,是把文件里的代码全部 ...

network_security_config文件,直接覆盖自动生成的代码
OnCreate直接复制粘贴代码。
自定义存档我估计你自己弄会很麻烦,可以暂时不考虑
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1380
在线时间
140 小时
注册时间
2007-8-10
帖子
21
9
 楼主| 发表于 2021-1-7 16:26:20 | 显示全部楼层
如果这是你的原代码的话,那就缺了几个分号,java是每行分号结尾的.

  1.     public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
  2.         rpgPlayerView rpgwebview=findViewById(R.id.rpgwebview);
  3.         rpgwebview.build();
  4.         rpgwebview.Playgame("//android_asset/www/index.html",false);
  5.         WebView dumbWV = new WebView(view.getContext());
  6.         dumbWV.setWebViewClient(new WebViewClient() {
  7.             @Override
  8.             public void onPageStarted(WebView view, String url, Bitmap favicon) {
  9.                 Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
  10.                 view.getContext().startActivity(browserIntent);
  11.             }
  12.         });
  13.         ((WebView.WebViewTransport) resultMsg.obj).setWebView(dumbWV);
  14.         resultMsg.sendToTarget();
  15.         return true;
  16.     }
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-9 11:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表