本文档是对 WebView h5 游戏的 Android Studio 模板工程的说明, 下载模板工程 工程下有三个模块:
app:由第三方框架 Tari 生成的 h5 游戏模板demo:使用 Android 原生 WebView 的游戏模板operateBZjs:对版署 SDK 的 js 封装在正式接入前,要按其他4399游戏那样注册并获取游戏 id,即
game key
operateBZjs/build.gradle中dependencies {
// 运营 SDK,建议使用最新版本,可通过浏览仓库地址或向运营咨询版本
implementation "cn.m4399.sdk:operateBZ:2.4.3"
}
在 app 或 demo 的 build.gradle 中
applicationId
:注意不同的游戏包要确定好包名versionCode, versionNameandroid {
defaultConfig {
applicationId "cn.m4399.oeprate.h5demo" // 游戏包名
versionCode 1 // 版本数字
versionName "1.0.0" // 版本名称
}
}
在 app 或 demo 的 AndroidManifest.xml 中
package
:此设置与applicationId可以一致android:icon和android:roundIconandroid:label<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.rpgsample">
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:theme="@style/AppTheme"
tools:ignore="UnusedAttribute">
</manifest>
版署 SDK 用 java 开发,而 h5 游戏无法直接调用 java 接口,因此要先将
SDK 接口封装成可被注入到 js 接口类
具体做法参考
operateBZjs/src/main/java/com/operatebz/js/OperateBZJsApi
游戏可以按需要自由定制
h5 游戏都由某种 WebView 加载,同时也可以注入一个 js 对象,词对象是上面封接口类的示例,比如
mWebView.addJavascriptInterface(OperateBZJsApi(this, mWebView), "operateBZNativeApi")这之后,游戏 js 脚本中就可以通过 operateBZNativeApi
调用接口,如
operateBZNativeApi.initSDK(gameId, screenOrientation, compatNotch, cbName, logoutCbName);但是,为了在游戏代码中调用方便,比如方便参数转换,可以对
operateBZNativeApi 再次封装
具体做法参考
demo/src/main/assets/js/operateBZ_h5_test.js
游戏代码先引入此 js 文件,如
demo/src/main/assets/index.html
<script src="js/operateBZ_h5_test.js" type="text/javascript"></script>此后,可以调用 js 接口,如
demo/src/main/assets/index.html 所示
function _init(gameId, screenOrientation, compatNotch) {
operateBZJsApi.init(gameId, screenOrientation, compatNotch, initCallback);
_setUserListener();
}
function initCallback(code, message) {
console.log('initCallback')
console.log(message)
document.getElementById('ext-board').value=' 状态/状态码:' + code + '\n ' + message;
if (+code === 0) {
let isLoggedIn = operateBZJsApi.isLogin();
if (isLoggedIn) {
_getUser();
}
}
}
_init('40001', 0, true)以下接口比较重要,接口说明见
demo/src/main/assets/js/operateBZ_h5_test.js 的
·operateBZJsApi· 对象下的方法:
init:初始化SDKlogin:登录isLogin:是否登录getUser:获取当前登录账号logout:登出recharge:充值getArchive:获取游戏存档setArchive:存档getSdkVersion:获取 SDK 版本更多信息可以参考原始的 Android java 接口
游戏应使用apktool或 as
生成签名文件,或使用已有签名文件
并参考app/build.gradle中signingConfigs定义与使用方式配置打包签名
最后,设置游戏地址或将打包好的游戏拷贝到项目。
以后一种方式为例,删除demo/src/main/assets下原有所有文件,并将编译好h5游戏文件移动到其下
完成最后的步骤后,同步项目,即可打包验证