I am trying to use internal app sharing to test that I can correctly request and download an on-demand dynamic feature module.
When I try this I can see that it first starts to download new feature correctly, but it never installs. I see these com.example is installed but certificate mismatch logs. Could that be causing the problem? I know that internal app sharing uploads are "automatically re-signed with an Internal App Sharing key, which is automatically created for your app by Google." source. Is it possible that internal app sharing is not correctly signing the on-demand apk?
Download code in question:
private const val ONDEMAND_FEATURE_MODULE_NAME: String = "ondemandfeature" // must match gradle module name
fun downloadOnDemandFeature(context: Context) {
    val request = SplitInstallRequest
            .newBuilder()
            .addModule(ONDEMAND_FEATURE_MODULE_NAME)
            .build()
    val splitInstallManager = create(context)
    // Initializes a variable to later track the session ID for a given request.
    var mySessionId = 0
    val listener = SplitInstallStateUpdatedListener { state ->
        if (state.sessionId() == mySessionId) {
            when (state.status()) {
                SplitInstallSessionStatus.DOWNLOADING -> {
                    val totalBytes = state.totalBytesToDownload()
                    val progress = state.bytesDownloaded()
                    Timber.d("Downloading on demand module: state DOWNLOADING")
                    Timber.d("Downloading on demand module: %d of %d bytes", progress, totalBytes)
                }
                SplitInstallSessionStatus.INSTALLED -> {
                    Timber.d("Downloading on demand module: state INSTALLED")
                    // TODO installed, now do stuff
                }
                SplitInstallSessionStatus.CANCELED -> {
                    Timber.d("Downloading on demand module: state CANCELED")
                }
                SplitInstallSessionStatus.CANCELING -> {
                    Timber.d("Downloading on demand module: state CANCELING")
                }
                SplitInstallSessionStatus.DOWNLOADED -> {
                    Timber.d("Downloading on demand module: state DOWNLOADED")
                }
                SplitInstallSessionStatus.FAILED -> {
                    Timber.d("Downloading on demand module: state FAILED")
                }
                SplitInstallSessionStatus.INSTALLING -> {
                    Timber.d("Downloading on demand module: state INSTALLING")
                }
                SplitInstallSessionStatus.PENDING -> {
                    Timber.d("Downloading on demand module: state PENDING")
                }
                SplitInstallSessionStatus.REQUIRES_USER_CONFIRMATION -> {
                    Timber.d("Downloading on demand module: state REQUIRES USER CONFIRMATION")
                }
                SplitInstallSessionStatus.UNKNOWN -> {
                    Timber.d("Downloading on demand module: state UNKNOWN")
                }
            }
        }
    }
    splitInstallManager.registerListener(listener)
    splitInstallManager
            .startInstall(request)
            .addOnSuccessListener { sessionId -> mySessionId = sessionId }
            .addOnFailureListener { exception ->
                Timber.e(exception, "Error installing ondemandfeature")
            }
}
You can see my full logs here.
 
    