全部产品
Search
文档中心

SuperApp:接入操作

更新时间:Dec 19, 2025

SuperApp 支持 Native App 接入 WindVane 小程序容器和 UniApp 小程序容器,您可根据业务需要,选择接入的小程序容器类型。本文介绍 Android 端接入小程序容器的详细操作。

前提条件

  • 已获取 Native App 的 AccessKey、SecretKey 和 App Code,获取方式请参见:App 设置

  • 已获取小程序ID,获取方式请参见:创建Miniapp

  • 已获取应用开放平台的环境域名。体验环境域名为:poc.superapp-intl.com

步骤一、添加Maven仓库

在工程根目录下的build.gradle文件中添加Maven仓库。

说明

小程序容器相关SDK发布在专有云部署的Maven仓库上,实际仓库地址和账户、密码请联系运维工程师提供。

allprojects {
    repositories {
        google()
        mavenCentral()
        jcenter() // Warning: this repository is going to shut down soon
        maven {
            url 'http://nexus-ce.xxx.com/repository/maven-public/'
            credentials {
                username = '${username}'
                password = '${password}'
            }
        }
    }
}

步骤二、添加依赖

app工程的build.gradle文件中添加小程序容器的依赖。

dependencies{
  //小程序容器基础sdk,必须集成
  implementation 'com.aliyun.emas.suite.core:servicebus:1.0.0'
  api "com.aliyun.emas.suite.foundation:mini-app-adapter:1.4.0"
  //WindVane小程序容器,如果选择WindVane小程序,则需要集成。
  implementation "com.aliyun.emas.suite.foundation:windvane-mini-app:1.4.0"
  //uni-app小程序容器,如果选择uni-app小程序,则需要集成。
  implementation "com.aliyun.emas.suite.foundation:uniapp-mini-app:1.4.0"
}
重要

如果工程使用了AndroidX,请确认在工程根目录下的gradle.properties文件中是否包含下面的配置。

android.useAndroidX=true
android.enableJetifier=true

步骤三、初始化容器

使用小程序容器前,需要先初始化小程序容器。

MiniAppInitConfig config = new MiniAppInitConfig.Builder()
  .setUseWindVane(true) //使用WindVane小程序时,需要设置
  .setUseUniApp(true)  //使用uni-app小程序时,需要设置
  .setAccessKey("ZXZ****")  //从应用开放平台获取
  .setSecretKey("3PNJxKtf7/eqUohlG3bI****")  //从应用开放平台获取
  .setHost("emas.example.com")//请配置应用开放平台的环境域名,此处仅为示例。体验环境域名为:emas-publish-intl.emas-poc.com。
  .setAppCode("161160300555671164****")  //从应用开放平台获取
  .build();
IMiniAppService miniAppService = new MiniAppService();
miniAppService.initialize(application, config);
ServiceManager.getInstance().registerService(IMiniAppService.class.getName(), miniAppService);

步骤四、混淆配置

1. windvane 混淆配置

如果宿主App开启了混淆功能,需要添加以下混淆配置。

-keepclassmembers class android.taobao.windvane.jsbridge.api.WVBase
-keepclassmembers class android.taobao.windvane.jsbridge.api.WVBattery
-keepclassmembers class android.taobao.windvane.jsbridge.api.WVBluetooth
-keepclassmembers class android.taobao.windvane.jsbridge.api.WVCamera
-keepclassmembers class android.taobao.windvane.jsbridge.api.WVContacts
-keepclassmembers class android.taobao.windvane.jsbridge.api.WVCookie
-keepclassmembers class android.taobao.windvane.jsbridge.api.WVFile
-keepclassmembers class android.taobao.windvane.jsbridge.api.WVImage
-keepclassmembers class android.taobao.windvane.jsbridge.api.WVLocation
-keepclassmembers class android.taobao.windvane.jsbridge.api.WVMotion
-keepclassmembers class android.taobao.windvane.jsbridge.api.WVNativeDetector
-keepclassmembers class android.taobao.windvane.jsbridge.api.WVNetwork
-keepclassmembers class android.taobao.windvane.jsbridge.api.WVNotification
-keepclassmembers class android.taobao.windvane.jsbridge.api.WVPrefetch
-keepclassmembers class android.taobao.windvane.jsbridge.api.WVReporter
-keepclassmembers class android.taobao.windvane.jsbridge.api.WVScreen
-keepclassmembers class android.taobao.windvane.jsbridge.api.WVScreenCapture
-keepclassmembers class android.taobao.windvane.jsbridge.api.WVSystem
-keepclassmembers class android.taobao.windvane.jsbridge.api.WVUI
-keepclassmembers class android.taobao.windvane.jsbridge.api.WVUIDialog
-keepclassmembers class android.taobao.windvane.jsbridge.api.WVUIToast
-keepclassmembers class android.taobao.windvane.jsbridge.api.WVVideo
-keepclassmembers class com.emas.hybrid.api.scan.WVScan
-keepclassmembers class com.emas.hybrid.api.call.EHApiCall
-keepclassmembers class com.emas.hybrid.api.storage.EHApiStorage
-keepclassmembers class android.taobao.windvane.standardmodal.WVStandardEventCenter
-keepclassmembers class com.alibaba.module.android.mini.app.windvane.plugin.EHApiNavigator
-keepclassmembers class com.alibaba.module.android.mini.app.windvane.plugin.WVAuthorize
-keepclassmembers class com.alibaba.module.android.mini.app.windvane.plugin.WVDialog
-keepclassmembers class com.alibaba.module.android.mini.app.windvane.plugin.WVGetAuthorizeSetting
-keepclassmembers class com.alibaba.module.android.mini.app.windvane.plugin.WVMiniApp
-keepclassmembers class com.alibaba.module.android.mini.app.windvane.plugin.WVMiniAppVersion
-keepclassmembers class com.alibaba.module.android.mini.app.windvane.plugin.WVMiniPageEvent
-keepclassmembers class com.alibaba.module.android.mini.app.windvane.plugin.WVNavigationBar
-keepclassmembers class com.alibaba.module.android.mini.app.windvane.plugin.WVUIActionSheet
-keepclassmembers class com.alibaba.module.android.mini.app.windvane.plugin.WVUIDatePicker
-keepclassmembers class com.alibaba.module.android.mini.app.windvane.plugin.WVUser
-keepclassmembers class com.alibaba.module.android.mini.app.windvane.plugin.WVUserAuthorize
-keepclassmembers class com.alibaba.plugin.android.mini.app.plugin.WVEventReportPlugin

2. uni 混淆配置

如果接入了uni-app小程序容器,需要添加下面的混淆配置,涵盖了uni-app目前提供的模块相关的混淆配置。

-dontwarn
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose

#-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-dontoptimize

-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class * extends io.dcloud.common.DHInterface.IPlugin
-keep public class * extends io.dcloud.common.DHInterface.IFeature
-keep public class * extends io.dcloud.common.DHInterface.IBoot
-keep public class * extends io.dcloud.common.DHInterface.IReflectAble

-keep class io.dcloud.** {*;}
-dontwarn io.dcloud.**
-dontwarn com.alibaba.**

-keep class vi.com.gdi.** {*;}
-keep class android.support.v4.** {*;}

-keepclasseswithmembers class io.dcloud.appstream.StreamAppManager {
    public protected <methods>;
}

-keep public class * extends io.dcloud.common.DHInterface.IReflectAble{
  public protected <methods>;
  public protected *;
}
-keep class **.R
-keep class **.R$* {
    public static <fields>;
}
-keep public class * extends io.dcloud.common.DHInterface.IJsInterface{
  public protected <methods>;
  public protected *;
}

-keepclasseswithmembers class io.dcloud.EntryProxy {
    <methods>;
}

-keep class * implements android.os.IInterface {
  <methods>;
}

-keepclasseswithmembers class *{
  public static java.lang.String getJsContent();
}

-keepclasseswithmembers class *{
  public static io.dcloud.share.AbsWebviewClient getWebviewClient(io.dcloud.share.ShareAuthorizeView);
}

-keepattributes Exceptions,InnerClasses,Signature,Deprecated, SourceFile,LineNumberTable,*Annotation*,EnclosingMethod

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keep public class * extends android.app.Application{
  public static <methods>;
  public *;
}

-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
   public static <methods>;
}

-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}

-keep class dc.** {*;}
-keep class okio.**{*;}
-keep class org.apache.** {*;}
-keep class org.json.** {*;}
-keep class net.ossrs.** {*;}
-keep class android.** {*;}
-keep class com.facebook.**{*;}
-keep class com.bumptech.glide.**{*;}
-keep class com.alibaba.fastjson.**{*;}
-keep class com.sina.**{*;}
-keep class com.weibo.ssosdk.**{*;}
-keep class com.asus.**{*;}
-keep class com.bun.**{*;}
-keep class com.heytap.**{*;}
-keep class com.huawei.**{*;}
-keep class com.meizu.**{*;}
-keep class com.samsung.**{*;}
-keep class com.zui.**{*;}
-keep class com.amap.**{*;}
-keep class com.loc.**{*;}
-keep class com.autonavi.**{*;}
-keep class pl.droidsonroids.gif.**{*;}
-keep class com.tencent.**{*;}
-keep class com.baidu.**{*;}
-keep class com.iflytek.**{*;}
-keep class com.umeng.**{*;}
-keep class tv.**{*;}
-keep class master.**{*;}
-keep class uk.co.**{*;}
-keep class com.dmcbig.**{*;}
-dontwarn android.**
-dontwarn com.tencent.**

-keep class * implements com.taobao.weex.IWXObject{*;}
-keep public class * extends com.taobao.weex.common.WXModule{*;}


-keepattributes Signature

-dontwarn org.codehaus.mojo.**
-dontwarn org.apache.commons.**
-dontwarn com.amap.**
-dontwarn com.sina.weibo.sdk.**
-dontwarn com.alipay.**
-dontwarn com.lucan.ajtools.**
-dontwarn pl.droidsonroids.gif.**

-keep class com.taobao.weex.** { *; }
-keep class com.taobao.gcanvas.**{*;}
-dontwarn com.taobao.weex.**
-dontwarn com.taobao.gcanvas.**

#个推
-dontwarn com.igexin.**
-keep class com.igexin.** { *; }
-keep class org.json.** { *; }

-keep class android.support.v4.app.NotificationCompat { *; }
-keep class android.support.v4.app.NotificationCompat$Builder { *; }
#魅族
-keep class com.meizu.** { *; }
-dontwarn com.meizu.**
#小米
-keep class com.xiaomi.** { *; }
-dontwarn com.xiaomi.push.**
-keep class org.apache.thrift.** { *; }
#华为
-dontwarn com.huawei.hms.**
-keep class com.huawei.hms.** { *; }

-keep class com.huawei.android.** { *; }
-dontwarn com.huawei.android.**

-keep class com.hianalytics.android.** { *; }
-dontwarn com.hianalytics.android.**

-keep class com.huawei.updatesdk.** { *; }
-dontwarn com.huawei.updatesdk.**
#OPPO
-keep class com.coloros.mcssdk.** { *; }
-dontwarn com.coloros.mcssdk.**


#高德定位
-keep class com.amap.api.location.**{*;}
-keep class com.amap.api.fence.**{*;}
-keep class com.loc.**{*;}

#腾讯X5--------------start-----------------------
-dontwarn dalvik.**
-dontwarn com.tencent.smtt.**
#-overloadaggressively
# ------------------ Keep LineNumbers and properties ---------------- #
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,*Annotation*,EnclosingMethod
# --------------------------------------------------------------------------
# Addidional for x5.sdk classes for apps
-keep class com.tencent.smtt.export.external.**{*;}
-keep class com.tencent.tbs.video.interfaces.IUserStateChangedListener {*;}
-keep class com.tencent.smtt.sdk.CacheManager {public *;}
-keep class com.tencent.smtt.sdk.CookieManager {public *;}
-keep class com.tencent.smtt.sdk.WebHistoryItem {public *;}
-keep class com.tencent.smtt.sdk.WebViewDatabase {public *;}
-keep class com.tencent.smtt.sdk.WebBackForwardList {public *;}
-keep public class com.tencent.smtt.sdk.WebView {public <fields>;public <methods>;}
-keep public class com.tencent.smtt.sdk.WebView$HitTestResult {public static final <fields>;public java.lang.String getExtra();public int getType();}
-keep public class com.tencent.smtt.sdk.WebView$WebViewTransport {public <methods>;}
-keep public class com.tencent.smtt.sdk.WebView$PictureListener {public <fields>;public <methods>;}
-keepattributes InnerClasses
-keep public enum com.tencent.smtt.sdk.WebSettings$** {*;}
-keep public enum com.tencent.smtt.sdk.QbSdk$** {*;}
-keep public class com.tencent.smtt.sdk.WebSettings {public *;}

-keepattributes Signature
-keep public class com.tencent.smtt.sdk.ValueCallback {public <fields>;public <methods>;}
-keep public class com.tencent.smtt.sdk.WebViewClient {public <fields>;public <methods>;}
-keep public class com.tencent.smtt.sdk.DownloadListener {public <fields>;public <methods>;}
-keep public class com.tencent.smtt.sdk.WebChromeClient {public <fields>;public <methods>;}
-keep public class com.tencent.smtt.sdk.WebChromeClient$FileChooserParams {public <fields>;public <methods>;}
-keep class com.tencent.smtt.sdk.SystemWebChromeClient{public *;}
# 1. extension interfaces should be apparent
-keep public class com.tencent.smtt.export.external.extension.interfaces.* {public protected *;}

# 2. interfaces should be apparent
-keep public class com.tencent.smtt.export.external.interfaces.* {public protected *;}
-keep public class com.tencent.smtt.sdk.WebViewCallbackClient {public protected *;}
-keep public class com.tencent.smtt.sdk.WebStorage$QuotaUpdater {public <fields>;public <methods>;}
-keep public class com.tencent.smtt.sdk.WebIconDatabase {public <fields>;public <methods>;}
-keep public class com.tencent.smtt.sdk.WebStorage {public <fields>;public <methods>;}
-keep public class com.tencent.smtt.sdk.DownloadListener {public <fields>;public <methods>;}
-keep public class com.tencent.smtt.sdk.QbSdk {public <fields>;public <methods>;}
-keep public class com.tencent.smtt.sdk.QbSdk$PreInitCallback {public <fields>;public <methods>;}
-keep public class com.tencent.smtt.sdk.CookieSyncManager {public <fields>;public <methods>;}
-keep public class com.tencent.smtt.sdk.Tbs* {public <fields>;public <methods>;}
-keep public class com.tencent.smtt.utils.LogFileUtils {public <fields>;public <methods>;}
-keep public class com.tencent.smtt.utils.TbsLog {public <fields>;public <methods>;}
-keep public class com.tencent.smtt.utils.TbsLogClient {public <fields>;public <methods>;}
-keep public class com.tencent.smtt.sdk.CookieSyncManager {public <fields>;public <methods>;}
# Added for game demos
-keep public class com.tencent.smtt.sdk.TBSGamePlayer {public <fields>;public <methods>;}
-keep public class com.tencent.smtt.sdk.TBSGamePlayerClient* {public <fields>;public <methods>;}
-keep public class com.tencent.smtt.sdk.TBSGamePlayerClientExtension {public <fields>;public <methods>;}
-keep public class com.tencent.smtt.sdk.TBSGamePlayerService* {public <fields>;public <methods>;}
-keep public class com.tencent.smtt.utils.Apn {public <fields>;public <methods>;}
-keep class com.tencent.smtt.** {*;}
# end
-keep public class com.tencent.smtt.export.external.extension.proxy.ProxyWebViewClientExtension {public <fields>;public <methods>;}
-keep class MTT.ThirdAppInfoNew {*;}
-keep class com.tencent.mtt.MttTraceEvent {*;}
# Game related
-keep public class com.tencent.smtt.gamesdk.* {public protected *;}
-keep public class com.tencent.smtt.sdk.TBSGameBooter {public <fields>;public <methods>;}
-keep public class com.tencent.smtt.sdk.TBSGameBaseActivity {public protected *;}
-keep public class com.tencent.smtt.sdk.TBSGameBaseActivityProxy {public protected *;}
-keep public class com.tencent.smtt.gamesdk.internal.TBSGameServiceClient {public *;}
#腾讯X5--------------end-----------------------

开发环境配置

Gradle Version : 6.7.1

Android Gradle Plugin Version : 4.2.2

JDK Version : 8

MinSdkVersion : 16

TargetSdkVersion : 30

说明

由以上配置是建议环境配置,可根据版本的不同进行升级兼容匹配。

API参考

关于API的详细说明请参见API参考