Пакет приложений, в модуле динамических функций, модуль доступен перед установкой

Я пытаюсь реализовать модуль динамических функций в своем приложении. У меня есть кнопка в Activity. Когда пользователь нажимает, я проверяю, уже установлен ли модуль. если нет, я запускаю установку с помощью startInstall (запрос). Но я всегда перехожу в другое состояние.

Код

    if (manager.installedModules.contains("sample")) {
-----> Always go to this block 
                Toast.makeText(this, "Already Downloaded", Toast.LENGTH_SHORT).show()
                Intent().setClassName(packageName, "com.example.sample.SampleActivity")
                        .also {
                            startActivity(it)
                        }
            } else {
               // Never came to this state
                // Create request to install a feature module by name.
                val request = SplitInstallRequest.newBuilder()
                        .addModule("sample")
                        .build()
                // Load and install the requested feature module.
                manager.startInstall(request)
            }

В модуле динамических функций я установил onDemand = "true"

<manifest xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:dist = "http://schemas.android.com/apk/distribution"
package = "com.example.sample">

<dist:module
    dist:onDemand = "true"
    dist:title = "@string/title_sample">
    <dist:fusing dist:include = "true" />
</dist:module>

<application>
    <activity android:name = "com.example.sample.SampleActivity">
        <intent-filter>
            <action android:name = "android.intent.action.VIEW" />
        </intent-filter>
    </activity>
</application>

Потому что имя вашего пакета содержит «образец». поэтому всегда есть этот блок, просто поменяйте и проверьте.

Poovarasan Selvaraj 13.11.2018 11:29

Нет @PoovarasanSelvaraj, динамическая функция уже существует в моем приложении, поэтому она не дает сбой, когда я startActivity

Magesh Pandian 13.11.2018 11:31
5
2
1 769
3

Ответы 3

add split = "dynamic-feature-test" in your manifest
split = "split_name" : Defines the name of the module, which your app specifies when requesting an on demand module using the Play Core Library.

В настоящее время единственный способ проверить вашу реализацию доставки onDemand - это загрузить .aab в PlayStore.

При стандартном развертывании из Android Studio все модули развертываются на подключенном устройстве.

В среде разработки поток правилен, что модуль уже установлен при развертывании на устройстве.

Что касается кода, обратите внимание на образец приложения, в частности, на реализацию загрузки и прослушивания Основная деятельность.

есть какая-нибудь официальная документация?

Magesh Pandian 21.11.2018 06:46

Есть документация по PlayCore, но в настоящее время в ней не упоминается требование загрузки.

keyboardsurfer 21.11.2018 09:59

Другой способ тестирования динамических функциональных модулей локально, не загружая их в игровой магазин, - это использовать связка-инструмент.

bundle-tool использует флаг --local-testing, который имитирует точную среду, и можно увидеть загрузку функционального модуля.

./gradlew bundleDebug

bundletool build-apks --overwrite --local-testing --bundle path/to/bundle.aab --output path/to/apkset.apks

bundletool install-apks --apks path/to/apkset.apks

Для получения более подробной информации перейдите по следующей ссылке: https://medium.com/androiddevelopers/local-development-and-testing-with-fakesplitinstallmanager-57083e1840a4

Это помогло. Спасибо, что поделился.

Alankrita Shah 31.01.2021 12:24

Другие вопросы по теме