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

Project1

 找回密码
 注册会员
搜索
查看: 18019|回复: 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 塞糖

查看全部评分

Lv1.梦旅人

梦石
0
星屑
234
在线时间
18 小时
注册时间
2024-2-1
帖子
2
32
发表于 2024-2-2 04:25:37 | 只看该作者
huhao1987 发表于 2020-4-20 21:35
重大新更新:Android本地存档支持

I could not reply in the conversation message you sent. I dont have permission as yet.

Just want to say thank you so much. You are the best

我无法回复您发送的对话消息。 我还没有获得许可。

只是想说非常感谢。 你是最棒的
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
4980
在线时间
858 小时
注册时间
2019-11-7
帖子
361
31
发表于 2023-10-30 18:29:47 | 只看该作者
支持大佬
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
27
在线时间
3 小时
注册时间
2018-5-7
帖子
2
30
发表于 2022-11-26 17:54:42 | 只看该作者
感谢楼主,但是目前jcenter好像已经不能用了,AS小白自己摸索了一下才改好,如果楼主能有图文教程那就更好了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
21
在线时间
4 小时
注册时间
2021-5-10
帖子
24
29
发表于 2021-5-10 18:53:38 | 只看该作者
膜拜大佬,感谢分享
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
10
在线时间
3 小时
注册时间
2021-4-26
帖子
7
28
发表于 2021-4-27 00:49:07 | 只看该作者
谢大佬
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
437
在线时间
72 小时
注册时间
2016-10-5
帖子
5
27
发表于 2021-4-27 00:27:52 | 只看该作者
所以还是想问大佬MZ可以用嘛
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
69
在线时间
6 小时
注册时间
2020-10-18
帖子
7
26
发表于 2021-2-4 19:58:25 | 只看该作者
太感谢了!!!帮了我大忙!之前看网上教程试过webview,xwalkview方式在Android studio去打包,但是效果都不好...今天看见这篇帖子,简单的流程就搞定了我的问题~而且效果非常好!大赞!
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1380
在线时间
140 小时
注册时间
2007-8-10
帖子
21
25
 楼主| 发表于 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.     }
复制代码
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
747
在线时间
245 小时
注册时间
2019-7-6
帖子
61
24
发表于 2021-1-5 22:51:04 | 只看该作者
huhao1987 发表于 2021-1-5 11:37
network_security_config文件,直接覆盖自动生成的代码
OnCreate直接复制粘贴代码。
自定义存档我估计你 ...

从5.3开始就看不太懂了,
在项目的主activity的layout文件中加入下面的控件这一步我是这样写的,修改的是activity_main.xml文件
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     xmlns:app="http://schemas.android.com/apk/res-auto"
  4.     xmlns:tools="http://schemas.android.com/tools"
  5.     android:layout_width="match_parent"
  6.     android:layout_height="match_parent"
  7.     tools:context=".MainActivity">
  8.     <hh.rpgmakerplayer.webviewmodule.rpgPlayerView
  9.         android:id="@+id/rpgwebview"
  10.         android:layout_width="match_parent"
  11.         android:layout_height="match_parent" />
  12. </androidx.constraintlayout.widget.ConstraintLayout>
复制代码

这样子写不知道对不对。

在MainActivity的oncreate方法中加入下面几行这一步我是这样写的,修改改的是WebPlayerView文件
  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")
  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.         }

  17.     }
复制代码

然后这一步报错了,提示Cannot resolve symbol 'rpgPlayerView'
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-25 22:56

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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