写点什么

手把手教程:如何将小程序游戏集成到 Android APP 中

作者:Geek_2305a8
  • 2024-08-06
    广东
  • 本文字数:3049 字

    阅读完需:约 10 分钟

实现效果:在自有 App 中实现小程序游戏运行使用技术:FinClip (下载/升级最新版 IDE 即可使用)测试机:Android 测试 Demo:飞机大战


在 Android 项目中引入 FinClip SDK ,实现小程序游戏在 App 中运行,操作如下:第一步:获取凭据( SDK KEY 及 SDK SECRET)首先,集成 SDK 需要先在 FinClip 平台中创建应用并绑定小程序游戏应用,获得每个应用专属的 SDK KEY 及 SDK SECRET 后,随后就可以在集成 SDK 时填写对应的参数。打开小程序时 SDK 会自动初始化,并校验 SDK KEY,SDK SECRET 与 BundleID(Application ID)是否正确,这一步正确了才能初始化成功并正常使用。


1.1 创建小程序游戏


需要登录 FinClip 管理后台「宿主应用-新增合作应用」,完成小游戏应用创建;


注册用户需要登录「宿主应用-新增合作应用」,完成应用创建 1.2 获取 SDK KEY 及 SDK SECRET


新增应用后,可以展开应用名称,在下方的列表中点击「添加 BundleID」,在出现的弹窗中输入需要绑定应用的 BundleID。


配置 BundleID 完成 BundleID 的填写,并点击确定按钮后,您会看到如上图所示的界面。其中的 SDK KEY,SDK SECRET 与 API SERVER 是您在集成小程序 SDK 时需要要到的凭据。


⚠️请注意:


SDK KEY:是合作应用能使用小程序 SDK 的凭证,如果 SDK Key 校验失败,则 SDK 的所有 Api 都无法使用。SDK SECERT:是访问服务的安全证书,不要给第三方。第二步:导入 SDK2.1 在工程的 build.gradle 中需要配置的内容


在工程的 build.gradle 中添加 maven 仓库的地址:


maven {url "https://gradle.finogeeks.club/repository/applet/"credentials {username "applet"password "123321"}}由于 SDK 中部分代码使用了 Kotlin 来编写,因此需要工程的 build.gradle 中添加 Kotlin 的 gradle 插件:


classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.61"工程的 build.gradle 的完整配置如下:


buildscript {repositories {google()jcenter()}dependencies {classpath "com.android.tools.build:gradle:3.5.2"classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.61"}}


allprojects {repositories {google()jcenter()maven {url "https://gradle.finogeeks.club/repository/applet/"credentials {username "applet"password "123321"}}}}


task clean(type: Delete) {delete rootProject.buildDir}2.2 在 gradle 中依赖 SDK


在 gradle 文件的 dependencies 中添加对 finapplet 的依赖:


implementation 'com.finogeeks.lib:finapplet:x.y.z' //x.y.z 须替换为具体的版本号注意:SDK 中的动态库是被加固过的,被加固过的动态库在编译打包时不能被压缩,否则加载的时候会报错。因此需要在 App module 下的 build.gradle 中增加 doNotStrip 配置:


packagingOptions {// libsdkcore.so、libfin-yuvutil.so 是被加固过的,不能被压缩,否则加载动态库时会报错 doNotStrip "/x86/libsdkcore.so"doNotStrip "/x86_64/libsdkcore.so"doNotStrip "/armeabi/libsdkcore.so"doNotStrip "/armeabi-v7a/libsdkcore.so"doNotStrip "*/arm64-v8a/libsdkcore.so"


  doNotStrip "*/x86/libfin-yuvutil.so"  doNotStrip "*/x86_64/libfin-yuvutil.so"  doNotStrip "*/armeabi/libfin-yuvutil.so"  doNotStrip "*/armeabi-v7a/libfin-yuvutil.so"  doNotStrip "*/arm64-v8a/libfin-yuvutil.so"
复制代码


}2.3 配置混淆规则


在 App 的 proguard-rules.pro 文件里面添加混淆配置


-keep class com.finogeeks.** {*;}第三步:初始化 FinClip SDK 从 2.13.102 版本开始 SDK 支持配置多个服务器信息,可以同时打开不同环境中的小程序。配置参数如下:


3.1 小程序框架的配置信息


// 服务器信息集合 List<FinStoreConfig> storeConfigs = new ArrayList<>();


// 服务器 1 的信息 FinStoreConfig storeConfig1 = new FinStoreConfig("SDK Key 信息", // SDK Key"SDK Secret 信息", // SDK Secret"服务器 1 的地址", // 服务器地址"服务器 1 的数据上报服务器地址", // 数据上报服务器地址"/api/v1/mop/", // 服务器接口请求路由前缀"","加密方式" // 加密方式,国密:SM,md5: MD5(推荐));storeConfigs.add(storeConfig1);


// 服务器 2 的信息 FinStoreConfig storeConfig2 = new FinStoreConfig("SDK Key 信息", // SDK Key"SDK Secret 信息", // SDK Secret"服务器 2 的地址", // 服务器地址"服务器 2 的数据上报服务器地址", // 数据上报服务器地址"/api/v1/mop/", // 服务器接口请求路由前缀"","加密方式" // 加密方式,国密:SM,md5: MD5(推荐));storeConfigs.add(storeConfig2);


FinAppConfig config = new FinAppConfig.Builder().setFinStoreConfigs(storeConfigs) // 服务器信息集合.build();3.2 设置 SDK 初始化状态回调


实现 FinCallback 接口,用于监听 SDK 初始化状态:


// SDK 初始化结果回调,用于接收 SDK 初始化状态 FinCallback<Object> callback = new FinCallback<Object>() {@Overridepublic void onSuccess(Object result) {// SDK 初始化成功}


@Overridepublic void onError(int code, String error) {    // SDK初始化失败    Toast.makeText(AppletApplication.this, "SDK初始化失败", Toast.LENGTH_SHORT).show();}
@Overridepublic void onProgress(int status, String error) {
}
复制代码


};3.3 初始化 SDK


调用初始化接口初始化 SDK:


FinAppClient.INSTANCE.init(this, config, callback);3.4 SDK 初始化多进程处理


DK 采用多进程机制实现,每个小程序运行在独立的进程中,即一个小程序对应一个进程,在初始化 SDK 时,要特别注意的一点是:小程序进程在创建的时候不需要执行任何初始化操作,即使是小程序 SDK 的初始化,也不需要在小程序进程中执行。


例如:应用使用了一些第三方库,这些库需要在应用启动时先初始化,那么在 Application 中执行初始化时,只有当前进程为宿主进程时才需要初始化这些第三方库,小程序进程是不需要初始化这些库的。


因此,在初始化 SDK 之前,一定要判断当前进程是哪一个进程,如果是小程序进程,就不进行任何操作了:


if (FinAppClient.INSTANCE.isFinAppProcess(this)) {return;}以上即为初始化 SDK 的整个流程。完整代码如下:


package com.example.finogeeks.appletdemo;


import android.os.Process;import android.support.multidex.MultiDexApplication;import android.text.TextUtils;import android.widget.Toast;


import com.example.finogeeks.appletdemo.api.ApiOpenPage;import com.example.finogeeks.appletdemo.api.ApiOpenPageForResult;import com.example.finogeeks.appletdemo.api.DrawModule;import com.example.finogeeks.appletdemo.util.ProcessUtilKt;import com.finogeeks.lib.applet.client.FinAppClient;import com.finogeeks.lib.applet.client.FinAppConfig;import com.finogeeks.lib.applet.interfaces.FinCallback;


/**


  • 应用的{@link android.app.Application}*/public class AppletApplication extends MultiDexApplication {

  • @Overridepublic void onCreate() {super.onCreate();

  • }}第四步:启动小程序在平台中上架小程序之后,我们就可以通过调用 SDK 中启动小程序的接口来打开小程序了。启动小程序的代码如下:


FinAppClient.INSTANCE.getAppletApiManager().startApplet(this, "5e0dc1f574193e00010d73c1");如果启动小程序时需要携带启动参数,则可以调用支持传递启动参数的接口,如下:


更多关于 FinClip 小程序 SDK 引入的介绍,可以查看 官方文档。


打开效果如下:


各位开发者可以上手试试看,有任何问题都可以向官方提出哦!

用户头像

Geek_2305a8

关注

还未添加个人签名 2023-11-01 加入

深圳某知名大厂程序员

评论

发布
暂无评论
手把手教程:如何将小程序游戏集成到Android APP中_Geek_2305a8_InfoQ写作社区