すべてのプロダクト
Search
ドキュメントセンター

SuperApp:ミニアプリコンテナの統合

最終更新日:Apr 21, 2026

SuperApp を使用すると、WindVane または uni-app のミニアプリコンテナをネイティブアプリに統合できます。 ビジネス要件に基づいてミニアプリコンテナを選択してください。 このトピックでは、ミニアプリコンテナを Android アプリに統合する方法について説明します。

前提条件

  • ご利用のネイティブアプリの AccessKey、SecretKey、および App Code。 詳細については、「アプリ設定」をご参照ください。

  • ミニアプリ ID。 詳細については、「ミニアプリの作成」をご参照ください。

  • アプリケーションオープンプラットフォームのドメイン名。 デモ環境のドメイン名は emas-publish-intl.emas-poc.com です。

ステップ 1:Maven リポジトリの追加

プロジェクトのルートディレクトリにある build.gradle ファイルに、Maven リポジトリを追加します。

説明

ミニアプリコンテナ SDK は、Apsara Stack にデプロイされた Maven リポジトリに公開されます。 リポジトリの URL、ユーザー名、パスワードについては、運用保守エンジニアにお問い合わせください。

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}'
            }
        }
    }
}

ステップ 2:依存関係の追加

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 ミニアプリコンテナの SDK。 WindVane ミニアプリを統合する場合は、この依存関係を含めます。
  implementation "com.aliyun.emas.suite.foundation:windvane-mini-app:1.4.0"
  // uni-app ミニアプリコンテナの SDK。 uni-app ミニアプリを統合する場合は、この依存関係を含めます。
  implementation "com.aliyun.emas.suite.foundation:uniapp-mini-app:1.4.0"
}
重要

プロジェクトで AndroidX を使用している場合は、プロジェクトのルートディレクトリにある gradle.properties ファイルに次の構成が含まれていることを確認してください:

android.useAndroidX=true
android.enableJetifier=true

ステップ 3:コンテナの初期化

ミニアプリコンテナを使用する前に、初期化する必要があります。

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);

ステップ 4:難読化の設定

1. WindVane の難読化設定

ホストアプリでコードの難読化を有効にしている場合は、次のルールを追加します。

-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-app の難読化設定

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.**

# Getui
-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 { *; }
# Meizu
-keep class com.meizu.** { *; }
-dontwarn com.meizu.**
# Xiaomi
-keep class com.xiaomi.** { *; }
-dontwarn com.xiaomi.push.**
-keep class org.apache.thrift.** { *; }
# Huawei
-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.**


# Amap Location
-keep class com.amap.api.location.**{*;}
-keep class com.amap.api.fence.**{*;}
-keep class com.loc.**{*;}

# Tencent 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 *;}
# Tencent X5--------------end-----------------------

開発環境

Gradle バージョン: 6.7.1

Android Gradle プラグインバージョン: 4.2.2

JDK バージョン: 8

MinSdkVersion: 16

TargetSdkVersion: 30

説明

上記の設定は、推奨される環境の詳細です。 互換性を確保するために、これらのバージョンを調整する必要がある場合があります。

API リファレンス

API の詳細については、「API リファレンス」をご参照ください。