国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Flutter集成UniMPSDK(Uni小程序SDK)

這篇具有很好參考價(jià)值的文章主要介紹了Flutter集成UniMPSDK(Uni小程序SDK)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Android 集成 UniMPSDK

1.下載并解壓uni小程序 SDK。

SDK文件結(jié)構(gòu)如下:

|--	SDK-Android@3.98-20231127
	|--	DEMO	//uni小程序SDK示例DEMO
	|--	SDK		//uni小程序SDK
		|--	assets	// assets資源文件
		|--	libs	//依賴庫
		|--	res		// 資源文件
		|--	src		//微信分享支付需要的activity
		|-- proguard.cfg	//混淆配置

小程序打包基座:
提示:盡量與 UniMPSDK 版本一致

HBuilderX: 3.9.8
vue-cli @dcloudio/uvm版本: 3.0.0-3090820231124001

2.復(fù)制SDK資源到android項(xiàng)目相應(yīng)的目錄中。

libs依賴庫配置

查看Flutter項(xiàng)目中android/app目錄中是否存在libs文件夾,沒有就創(chuàng)建。
SDK-Android@3.98-20231127/SDK/libs 中相應(yīng)的依賴復(fù)制到 項(xiàng)目 android/app/libs/

libs 文件夾依賴庫可根據(jù)功能需要進(jìn)行增加或刪除,除視頻、地圖、分享、支付、登錄、直播pusher 等 SDK,只集成以下基礎(chǔ)模塊就可使用:

uniMPSDK-V2-release.aar  //必須集成,uni小程序sdk引擎需要
uniapp-v8-release.aar //必須集成,uni-app引擎需要
breakpad-build-release.aar //必須集成,breakpad用于采集系統(tǒng)崩潰日志
sqlite-release.aar
base_oaid_sdk.aar 必須集成 注意(3.3.8版本的SDK及以下版本請集成oaid_sdk_1.0.25.aar)
messaging-release.aar
iBeacon-release.aar
fingerprint-release.aar
contacts-release.aar
Bluetooth-release.aar
android-gif-drawable-release@1.2.23.aar //必須集成

assets 基礎(chǔ)資源配置

1,將SDK-Android@3.98-20231127/SDK/assets/ 目錄下的所有文件復(fù)制到 Flutter項(xiàng)目中android/app/src/main/assets/。(main目錄下沒有assets文件夾則自行創(chuàng)建)
2, Flutter項(xiàng)目中android/app/src/main/assets 目錄中創(chuàng)建 apps 文件夾,用于放置 uni小程序打包發(fā)行的程序。
在小程序項(xiàng)目的 manifest.json 內(nèi)獲取并使用 uni-app 應(yīng)用標(biāo)識(AppID),也是我們之后指定操作小程序的標(biāo)識。
vue-cli命令行打包:npm run build:app 生成本地包。
HBuilderX可視化界面打包:使用 【發(fā)行 => 原生App-本地打包 => 生成本地打包App資源】 生成本地包。
將打包好的uniapp小程序復(fù)制到apps文件下,apps文件夾結(jié)構(gòu)必須如下:

├── apps
│   ├── __UNI__xxxxxxx  # 小程序1
│   │   └── www
│   │   │   └── ...     #小程序編碼
│   ├── __UNI__xxxxxxx  # 小程序2
│   │   └── www
│   │   │   └── ...     #小程序編碼 

proguard 混淆配置

SDK-Android@3.98-20231127/SDK/proguard.cfg 復(fù)制到Flutter項(xiàng)目中android/app/ 中。

3.修改android配置

修改MainActivity.kt配置文件

MainActivity.kt文件路徑:Flutter項(xiàng)目/android/app/src/main/kotlin/com/example/xxxx/MainActivity.kt

package com.example.xxxx	//改成你自己的包名

import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterFragmentActivity;
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugins.GeneratedPluginRegistrant
import io.flutter.Log
 
import io.dcloud.feature.sdk.DCUniMPSDK;
import io.dcloud.feature.sdk.Interface.IUniMP
import io.dcloud.feature.sdk.DCSDKInitConfig
import io.dcloud.feature.sdk.MenuActionSheetItem
import io.dcloud.common.adapter.util.Logger

class MainActivity: FlutterFragmentActivity() {
    override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
        GeneratedPluginRegistrant.registerWith(flutterEngine);
        val messenger = flutterEngine.dartExecutor.binaryMessenger
        // Channel 對象
        val channel = MethodChannel(messenger, "UniMP_mini_apps")
        // Channel 設(shè)置回調(diào)
        channel.setMethodCallHandler { call, res ->
            // 根據(jù)方法名,分發(fā)不同的處理
            when(call.method) {
                // 打開指定的 UniMP 小程序
                "open" -> {
                    try {
                        // 接收 Flutter 傳入的參數(shù)
                        val argumentAppID = call.argument<String>("AppID")
                        // 設(shè)置右上角膠囊操作菜單
                        val item = MenuActionSheetItem("關(guān)于", "about")
                        val sheetItems: MutableList<MenuActionSheetItem> = ArrayList()
                        sheetItems.add(item)
                        // 初始化uniMPSDK
                        val config = DCSDKInitConfig.Builder()
                                .setCapsule(true)
                                .setMenuDefFontSize("16px")
                                .setMenuDefFontColor("#2D2D2D")
                                .setMenuDefFontWeight("normal")
                                .setMenuActionSheetItems(sheetItems)
                                .build()
                        DCUniMPSDK.getInstance().initialize(this, config)
 
                        // 打開小程序
                        val unimp: IUniMP = DCUniMPSDK.getInstance().openUniMP(this, argumentAppID)
                        // 監(jiān)聽膠囊菜單點(diǎn)擊事件
                        DCUniMPSDK.getInstance().setDefMenuButtonClickCallBack { argumentAppID, id ->
                            when (id) {
                                "about" -> {
                                    Logger.e(argumentAppID + "點(diǎn)擊了關(guān)于")
                                }
                            }
                        }
                        // 監(jiān)聽小程序關(guān)閉
                        DCUniMPSDK.getInstance().setUniMPOnCloseCallBack { argumentAppID -> Log.e("unimp", argumentAppID + "被關(guān)閉了") }
                    } catch (e: Exception) {
                        e.printStackTrace()
                    }
                }
 
                else -> {
                    // 如果有未識別的方法名,通知執(zhí)行失敗
                    res.error("error_code", "error_message", null)
                }
            }
        }
    }
} 

修改build.gradle配置文件

plugins {
    id "com.android.application"
    id "kotlin-android"
    id "dev.flutter.flutter-gradle-plugin"
}

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}

android {
    namespace "com.example.life_app"
    compileSdkVersion flutter.compileSdkVersion
    ndkVersion flutter.ndkVersion

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = '1.8'
    }

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.example.life_app"
        // You can update the following values to match your application needs.
        // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
        minSdkVersion flutter.minSdkVersion
        targetSdkVersion flutter.targetSdkVersion
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        //uni小程序sdk配置
        ndk {
            abiFilters 'x86','x86_64','armeabi-v7a','arm64-v8a' // 不支持armeabi
        }
    }

    buildTypes {
        release {   //發(fā)布
            // 注意點(diǎn):minifyEnabled 混淆和shrinkResources移除無用資源需同時(shí)為true或false,否則可能導(dǎo)致編譯失??!
            minifyEnabled true  //是否進(jìn)行混淆
            shrinkResources true  //刪除無用資源
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', 'proguard.cfg' //指定混淆規(guī)則文件
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.debug //設(shè)置簽名信息
        }
    }
    //uni小程序sdk配置(此處配置必須添加 否則無法正確運(yùn)行)
    aaptOptions {
        additionalParameters '--auto-add-overlay'
        //noCompress 'foo', 'bar'
        ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"
    }
}

flutter {
    source '../..'
}

// uni小程序sdk配置(導(dǎo)入aar需要的配置)
repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    //uni小程序sdk配置(導(dǎo)入SDK相關(guān)依賴jar、aar)
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation fileTree(include: ['*.aar'], dir: 'libs')
    //uni小程序sdk配置(必須添加的依賴)
    implementation 'androidx.recyclerview:recyclerview:1.0.0' //必須集成,android 自帶recyclerview支持
    implementation 'androidx.legacy:legacy-support-v4:1.0.0' //必須集成,androidx support支持
    implementation 'androidx.appcompat:appcompat:1.0.0' //必須集成,androidx appcompat支持
    implementation 'com.alibaba:fastjson:1.2.83' //必須集成,fastjson功能需要
    implementation 'com.facebook.fresco:fresco:2.5.0'//必須集成,圖片加載需要
    implementation 'com.facebook.fresco:animated-gif:2.5.0'//必須集成,圖片加載需要
    implementation 'com.github.bumptech.glide:glide:4.9.0'//必須集成,圖片加載需要
    implementation 'androidx.webkit:webkit:1.3.0' //3.6.15版本之后 必須集成,用來支持暗黑模式
}


4.Flutter項(xiàng)目中調(diào)用


  Widget build(BuildContext context) {
    const channel = MethodChannel('UniMP_mini_apps');

    Future callNativeMethod(String appID) async {
      try {
        // 通過通道,調(diào)用原生代碼代碼的方法
        final future = await channel.invokeMethod("open", {"AppID": appID});
        // 打印執(zhí)行的結(jié)果
        print(future.toString());
      } on PlatformException catch (e) {
        print(e.toString());
      }
    }

    return Scaffold(
        body: Center(
      child: GestureDetector(
        onTap: () async {
          await callNativeMethod("__UNI__359FE36");
        },
        child: const Text('打開uni小程序'),
      ),
    ));
  }

本文參考以下鏈接:
https://amoshk.top/2022050801/文章來源地址http://www.zghlxwxcb.cn/news/detail-853584.html

到了這里,關(guān)于Flutter集成UniMPSDK(Uni小程序SDK)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • [Flutter]導(dǎo)入singular_flutter_sdk后運(yùn)行到Android報(bào)錯(cuò)

    接入歸因之前,flutter項(xiàng)目一起正常。接入歸因之后,iOS正常Android有問題。 針對 Flutter 的 Singular SDK 集成指南 https://support.singular.net/hc/zh-cn/articles/4408894547227-%E9%92%88%E5%AF%B9-Flutter-%E7%9A%84-Singular-SDK-%E9%9B%86%E6%88%90%E6%8C%87%E5%8D%97 android/app/build.gradle android/build.gradle settings.gradle gradle

    2024年04月14日
    瀏覽(42)
  • mac 修改flutter sdk配置

    mac 修改flutter sdk配置

    問題描述:我mac電腦上有高低2個(gè)版本的flutter sdk,我需要低版本sdk的項(xiàng)目在setting里設(shè)置了sdk版本,可是命令行還是提示我版本過高。 直接上解決辦法: 打開mac終端,輸入open -e .bash_profile,然后修改下方圈起來的flutter版本ok。

    2024年01月25日
    瀏覽(26)
  • Flutter配置Android SDK路徑

    Flutter配置Android SDK路徑

    在使用VSCode作為開發(fā)Flutter的工具時(shí),當(dāng)選擇調(diào)試設(shè)備時(shí),通??床坏絘ndroid的模擬器,只能看到Chrome之類的。 原因就是Flutter找不到Android的SDK路徑,所以無法識別模擬器,我們用flutter doctor命令檢查環(huán)境時(shí),就好看到提示。 我們只需要為Flutter指定正確的SDK路徑即可,命令如下

    2024年02月07日
    瀏覽(19)
  • Flutter項(xiàng)目的sdk版本管理工具

    Flutter項(xiàng)目的sdk版本管理工具

    flutter項(xiàng)目的sdk版本使用是一個(gè)很尷尬的問題,一個(gè)項(xiàng)目一個(gè)SDK,電腦系統(tǒng)還只能裝一個(gè)SDK,這就使我們開發(fā)當(dāng)中很尷尬,好幾個(gè)項(xiàng)目分別使用不同的SDK就很難辦了,不可能來回升級降級SDK,現(xiàn)在市面有SDK版本管理工具,雖然不是很友好,但是也算一個(gè)解決辦法,下面說一下解

    2024年04月14日
    瀏覽(25)
  • Flutter:Android/iOS集成Flutter模塊

    Flutter:Android/iOS集成Flutter模塊

    一、Android工程集成Flutter模塊工程: 1.使用命令創(chuàng)建Flutter模塊工程lib_flutter(與Android工程屬于同級目錄): 2.更新Android工程配置: (1)將Android工程Support V4/V7包替換為AndroidX包,右鍵點(diǎn)擊工程,在彈出菜單中選擇 Refactor ? Migrate to AndroidX...,然后在左下角彈出的框中,點(diǎn)擊Do Refac

    2024年02月06日
    瀏覽(21)
  • Flutter iOS 集成使用 flutter boost

    Flutter iOS 集成使用 flutter boost

    在 Flutter項(xiàng)目中集成完 flutter boost,并且已經(jīng)使用了 flutter boost進(jìn)行了路由管理,這時(shí)如果需要和iOS混合開發(fā),這時(shí)就要到 原生端進(jìn)行集成。 注意:之前建的項(xiàng)目必須是 Flutter module 項(xiàng)目,并且原生項(xiàng)目和flutter module項(xiàng)目在同一個(gè)文件夾下面 下面是原生端集成 flutter boost的步驟

    2024年02月13日
    瀏覽(52)
  • Flutter 版本更新 和 dart SDK版本跟新

    Flutter 版本更新 和 dart SDK版本跟新

    報(bào)錯(cuò)啦怎么辦? 找到了我的電腦里面dart SDK的位置, D:Flutterflutterbincachedart-sdk 我認(rèn)為是dart的版本不夠的時(shí)候,我就去下載新的dart SDK(下載地址:Archive | Dart ),然后去替換我之前的dart-sdk,然后就出現(xiàn)問題了,官方的flutter sdk中已經(jīng)自帶了匹配版本的dart sdk。所以不要自

    2024年02月14日
    瀏覽(25)
  • flutter TARGET_SDK_VERSION和android 13

    flutter TARGET_SDK_VERSION和android 13

    config.gradle app/build.gradle里面的 有時(shí)候谷歌會(huì)讓你發(fā)的app版本起碼為android 13,那就要改上面的TARGET_SDK_VERSION

    2024年02月11日
    瀏覽(22)
  • Flutter集成Unity

    Flutter集成Unity

    最近做項(xiàng)目時(shí)需要用到Flutter來做跨平臺開發(fā),但是項(xiàng)目中又用到了虛擬場景,這樣一來就涉及到了Unity,那么總結(jié)下來便是用AndroidStudio來創(chuàng)建Flutter項(xiàng)目,將Unity項(xiàng)目嵌入到Flutter項(xiàng)目中,本篇文章就給大家分享一下Flutter集成Unity的詳細(xì)過程,下一篇再給大家分享 Flutter與Unity之

    2023年04月09日
    瀏覽(38)
  • Flutter 與第三方 Native-SDK 的交互代理方案

    Flutter 與第三方 Native-SDK 的交互代理方案

    場景 在使用 Flutter 進(jìn)行功能模塊或者整體項(xiàng)目的開發(fā)時(shí),如果需要(階段性)頻繁地和某個(gè)第三方 Native-SDK 進(jìn)行交互,而該 Native-SDK 沒有實(shí)現(xiàn) Flutter 插件版本的情況下,如果直接把這部分交互 API 加入到原有的 channel 類里面,會(huì)使得該 channel 類變得臃腫,造成代碼維護(hù)及迭代

    2024年02月02日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包