如何从Instant App安装onDemand模块

问题描述 投票:0回答:1

我有一个android应用,我想从Instant App安装新模块。我正在使用SplitInstallManager来这样做。请求安装后,出现错误代码= -100的SplitInstallSessionStatus.FAILED。根据android文档,错误代码-100是内部错误。 (https://developer.android.com/reference/com/google/android/play/core/splitinstall/model/SplitInstallErrorCode

这是用于模块化的android应用。我有多个模块(大约十个),但是只有一个启用即时应用程序的模块和一个启用onDemand的模块(我正在尝试安装的一个)

fun installAndLaunchPlayer(manager: SplitInstallManager, videoId: String) {

        var mySessionId = 0

        if (manager.installedModules.contains("player")) {
            _onPlayerInstalledSuccessful.value = videoId
            return
        }

        val request = SplitInstallRequest.newBuilder()
            .addModule("player")
            .build()

        manager.registerListener(object : SplitInstallStateUpdatedListener {
            override fun onStateUpdate(state: SplitInstallSessionState) {
                if (state.status() == SplitInstallSessionStatus.FAILED && state.errorCode() == SplitInstallErrorCode.SERVICE_DIED) {
                    // Retry the request.
                    return
                }
                if (state.sessionId() == mySessionId) {
                    when (state.status()) {
                        SplitInstallSessionStatus.DOWNLOADING -> {

                        }
                        SplitInstallSessionStatus.INSTALLED -> {

                            _onPlayerInstalledSuccessful.value = videoId
                        }
                        SplitInstallSessionStatus.FAILED -> {
                            // HERE IS WHERE I GET THE ERROR CODE = -100
                            state.errorCode()
                            _onPlayerInstalledFailure.value = "failed to install module"
                        }
                    }
                }
            }

        })

        manager
            .startInstall(request)
            .addOnSuccessListener { mySessionId = it }
            .addOnFailureListener {
                _onPlayerInstalledFailure.value = it.message
            }
    }

除了在安装请求开始时得到的SplitInstallSessionStatus.FAILED,我再也没有得到任何其他的SplitInstallSessionStatus.PENDING。这是错误的日志:

SplitInstallSessionState{sessionId=42, status=6, errorCode=-100, bytesDownloaded=0, totalBytesToDownload=0, moduleNamesNullable=[player], languagesNullable=null, resolutionIntent=null, splitFileIntents=null}

您能帮我吗?

android android-instant-apps
1个回答
0
投票

Instant Apps目前不支持onDemand模块。此功能仅适用于可安装的应用程序。

[作为Instant App,另一个即时启用的动态功能模块具有类似效果

<dist:module
    dist:instant="true"
    dist:onDemand="false">
    <dist:fusing dist:include="false" />
</dist:module>

也可以通过App Links支持按需下载。

© www.soinside.com 2019 - 2024. All rights reserved.