Android原生集成uniapp小程序 您所在的位置:网站首页 uniapp打包安卓切换阿拉伯语言会闪退一下 Android原生集成uniapp小程序

Android原生集成uniapp小程序

2024-07-14 23:59| 来源: 网络整理| 查看: 265

    这个是官网链接:https://nativesupport.dcloud.net.cn/UniMPDocs/UseSdk/android 根据官网文档配置,我这边出现了一些问题,这里就和大家分享一下。     第一步:先下载uniapp集成所需要的SDK。 在这里插入图片描述     打开其中的SDK文件夹: 在这里插入图片描述     这里总共有6个文件或文件夹:     1.Manifest文件:最简单的集成只需要在我们的android studio的manifest文件中添加这么几行就行了

    2.assets文件夹:将其整个全部复制到android studio项目的main文件夹下     3.libs文件夹:我们只需要几个最基本的库就行了,有其他需求的自己再去添加

uniMPSDK-release.aar //必须集成 uniapp-release.aar //必须集成 sqlite-release.aar msa_mdid_1.0.13.aar //必须集成 注意(2.8.0版本的SDK及以下版本请集成miit_mdid_1.0.10.aar) messaging-release.aar iBeacon-release.aar fingerprint-release.aar contacts-release.aar Bluetooth-release.aar [email protected] //必须集成

    4.proguard.cfg:将其复制放到android studio项目的app目录下(具体的build文件配置后面再一起说明)     5.res文件夹不需要处理     6.src文件夹如果不需要用到微信支付,也不需要处理;用到了微信支付的话就将其复制到android studio项目的src目录下     第二步:修改项目的build.gradle文件配置,这一步是最重要也是最容易出错的一步,下面贴出我的build.gradle文件配置,每一项我都给出了详细的注释。

apply plugin: 'com.android.application' //必须配置 def mfph = [ //包名 "apk.applicationId": "你的appid", ] android { compileSdkVersion 29 //根据你自己的version配置 buildToolsVersion "29.0.3" //根据你自己的version配置 defaultConfig { applicationId "你的appid" minSdkVersion 19 //必须是19-22 targetSdkVersion 26 //最高28最优26 设置值域超过28可能在android10以上手机出现白屏问题。 versionCode 1 versionName "1.0" multiDexEnabled true //根据你自己的version配置 manifestPlaceholders = mfph //必须配置 //ndk必须配置 ndk { abiFilters 'x86', 'armeabi-v7a', "arm64-v8a" //不支持armeabi } testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } //必须配置:混淆配置文件 buildTypes { debug { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg' } release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard.cfg' } } //此处配置必须添加 否则无法正确运行 aaptOptions { additionalParameters '--auto-add-overlay' //noCompress 'foo', 'bar' ignoreAssetsPattern "!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~" } } //必须配置:导入aar需要的配置 repositories { flatDir { dirs 'libs' } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) //必须配置: implementation fileTree(include: ['*.aar'], dir: 'libs') implementation 'com.android.support:recyclerview-v7:27.1.0' //必须集成 implementation 'com.android.support:support-v4:27.1.0' //必须集成 implementation 'com.android.support:appcompat-v7:27.1.0' //必须集成 implementation 'com.alibaba:fastjson:1.1.46.android' //必须集成 implementation 'com.facebook.fresco:fresco:1.13.0'//必须集成 implementation 'com.facebook.fresco:animated-gif:1.13.0'//必须集成 implementation 'com.github.bumptech.glide:glide:4.9.0'//必须集成 }

    第三步:在HBuilderX中生成小程序资源包     1.生成小程序应用资源 在这里插入图片描述     生成wgt资源包后,控制台会输出wgt资源包所在文件路径,找到所在文件,解压。(将.wgt后缀改成.zip解压)。     2.导入小程序应用资源:     打开android原生项目。在主Module模块的assets路径下创建apps/(内置uni小程序的appid)/www 路径。例如:apps/__UNI__04E3A11/www。将之前导出的应用资源包解压释放到apps/__UNI__04E3A11/www路径下。     注意:是创建apps/__UNI__04E3A11/www目录,不是创建apps.__UNI__04E3A11.www文件夹。请注意是apps/__UNI__04E3A11/www目录。并将wgt资源包解压释放到www文件夹中!!!。如图: 在这里插入图片描述     第四部:最后编写代码     1.初始化uniMPSDK(最好在application初始化)

MenuActionSheetItem item = new MenuActionSheetItem("关于", "gy"); List sheetItems = new ArrayList(); sheetItems.add(item); DCSDKInitConfig config = new DCSDKInitConfig.Builder() .setCapsule(true) .setMenuDefFontSize("16px") .setMenuDefFontColor("#ff00ff") .setMenuDefFontWeight("normal") .setMenuActionSheetItems(sheetItems) .build(); DCUniMPSDK.getInstance().initialize(this, config, new DCUniMPSDK.IDCUNIMPPreInitCallback() { @Override public void onInitFinished(boolean isSuccess) { Log.e("unimp", "onInitFinished-----------"+isSuccess); } });

    2.启动小程序,有两种方式:     第一种内置uni小程序启动:(就是解压了wgt资源包,并导入小程序应用资源)

try { DCUniMPSDK.getInstance().startApp(MainActivity.this,"__UNI__04E3A11"); } catch (Exception e) { e.printStackTrace(); }

    第二种非内置uni小程序:(不需要解压wgt资源包,直接导入wgt文件到主Module模块的assets路径下:apps/(内置uni小程序的appid)/www 路径) 在这里插入图片描述

String wgtPath = context.getExternalCacheDir().getPath()+"/__UNI__04E3A11.wgt"; DCUniMPSDK.getInstance().releaseWgtToRunPathFromePath("__UNI__04E3A11", wgtPath, new ICallBack() { @Override public Object onCallBack(int code, Object pArgs) { if(code ==1) {//释放wgt完成 try { DCUniMPSDK.getInstance().startApp(context, "__UNI__04E3A11"); } catch (Exception e) { e.printStackTrace(); } } else{//释放wgt失败 Toast.makeText(context, "资源释放失败", Toast.LENGTH_SHORT).show(); } return null; } });


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有