當前關注:Android系統,怎么在自有App中引入小游戲?

2022-12-28 14:22:32 來源:51CTO博客

之前有跟大家分享過ios系統上引入FinClip SDK,并將小程序游戲運行到自有App 中,這周就繼續分享如何在Android系統中引入FinClip SDK。

????


(資料圖片僅供參考)

實現效果:在自有 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:是訪問服務的安全證書,不要給第三方。

第二步:導入 SDK

2.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 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 callback = new FinCallback() {    @Override    public void onSuccess(Object result) {        // SDK初始化成功    }    @Override    public void onError(int code, String error) {        // SDK初始化失敗        Toast.makeText(AppletApplication.this, "SDK初始化失敗", Toast.LENGTH_SHORT).show();    }    @Override    public 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 {        @Override    public void onCreate() {        super.onCreate();        if (FinAppClient.INSTANCE.isFinAppProcess(this)) {            // 小程序進程不執行任何初始化操作            return;        }                // 服務器信息集合        List 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();        FinAppClient.INSTANCE.init(this, config, new FinCallback() {            @Override            public void onSuccess(Object result) {            }            @Override            public void onError(int code, String error) {                Toast.makeText(AppletApplication.this, "SDK初始化失敗", Toast.LENGTH_SHORT).show();            }            @Override            public void onProgress(int status, String error) {            }        });    }}

第四步:啟動小程序

在平臺中上架小程序之后,我們就可以通過調用SDK中啟動小程序的接口來打開小程序了。啟動小程序的代碼如下:

FinAppClient.INSTANCE.getAppletApiManager().startApplet(this, "5e0dc1f574193e00010d73c1");

如果啟動小程序時需要攜帶啟動參數,則可以調用支持傳遞啟動參數的接口,

更多關于 FinClip 小程序 SDK 引入的介紹,可以查看官方文檔。

打開效果如下:

大家可以親自上手試試看咯,有任何問題可以向官方提出哦!

標簽: 服務器地址

上一篇:世界熱議:【技術分享】如何實現功能完備性能優異的RTMP、RTSP播放器?
下一篇:sqoop入門教程