Недавно, в 2018 году, Google анонсировал новую функцию в Android под названием Динамический функциональный модуль
Я попробовал ту же функцию по этой ссылке http://www.tellmehow.co/know-android-dynamic-delivery-module/#
В моем проекте я получил приложение-модуль, которое является моим приложением, и динамический модуль как bigbazaar,
Я использую следующий метод для загрузки динамического метода во время выполнения.
private void downloadDynamicModule() {
try {
SplitInstallManager splitInstallManager =
SplitInstallManagerFactory.create(this);
SplitInstallRequest request =
SplitInstallRequest
.newBuilder()
.addModule("bigbazaar")
.build();
SplitInstallStateUpdatedListener listener = new SplitInstallStateUpdatedListener() {
@Override
public void onStateUpdate(SplitInstallSessionState splitInstallSessionState) {
if (splitInstallSessionState.sessionId() == mySessionId) {
switch (splitInstallSessionState.status()) {
case SplitInstallSessionStatus.INSTALLED:
Toast.makeText(MainActivity.this,
"Dynamic Module downloaded", Toast.LENGTH_SHORT).show();
cmdBigBazaar.setEnabled(true);
break;
}
}
}
};
splitInstallManager.registerListener(listener);
splitInstallManager.startInstall(request)
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(Exception e) {
switch (((SplitInstallException) e).getErrorCode()) {
case SplitInstallErrorCode.MODULE_UNAVAILABLE:
Toast.makeText(MainActivity.this, "MODULE_UNAVAILABLE", Toast.LENGTH_SHORT).show();
}
}
})
.addOnSuccessListener(new OnSuccessListener<Integer>() {
@Override
public void onSuccess(Integer sessionId) {
mySessionId = sessionId;
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
По данной ссылке и другим болгам я обнаружил, что мы можем протестировать эту функцию через Google Play Store и, в конце концов, с помощью инструмента "bundletool"
Я также изменил свою конфигурацию Run согласно предложенной в примере ссылке.
Я также определил следующие атрибуты в файле AndroidManifest.xml моего динамического функционального модуля,
<dist:module
dist:onDemand="true"
dist:instant="false"
dist:title="@string/title_bigbazaar">
<dist:fusing dist:include="false" />
</dist:module>
Журнал ошибок,
06-05 10:43:55.452 17566-17566/com.dynamic I/PlayCore: UID: [11746] PID: [17566] SplitInstallListenerRegistry : registerListener
06-05 10:43:55.453 17566-17566/com.dynamic I/PlayCore: UID: [11746] PID: [17566] SplitInstallService : startInstall([dynamicmodule],[])
06-05 10:43:55.463 17566-18219/com.dynamic I/PlayCore: UID: [11746] PID: [17566] SplitInstallService : Initiate binding to the service.
06-05 10:43:55.504 17566-17566/com.dynamic I/PlayCore: UID: [11746] PID: [17566] SplitInstallService : ServiceConnectionImpl.onServiceConnected(ComponentInfo{com.android.vending/com.google.android.finsky.splitinstallservice.SplitInstallService})
06-05 10:43:55.505 17566-18219/com.dynamic I/PlayCore: UID: [11746] PID: [17566] SplitInstallService : linkToDeath
06-05 10:43:56.386 17566-17582/com.dynamic I/PlayCore: UID: [11746] PID: [17566] SplitInstallService : onError(-2)
06-05 10:43:56.387 17566-18219/com.dynamic I/PlayCore: UID: [11746] PID: [17566] SplitInstallService : Unbind from service.
06-05 10:43:56.387 17566-17566/com.dynamic D/MainActivity: Exception: com.google.android.play.core.splitinstall.SplitInstallException: Split Install Error: -2
06-05 10:43:56.387 17566-17566/com.dynamic W/System.err: com.google.android.play.core.splitinstall.SplitInstallException: Split Install Error: -2
06-05 10:43:56.387 17566-17566/com.dynamic W/System.err: at com.google.android.play.core.splitinstall.ag.e(Unknown Source)
06-05 10:43:56.387 17566-17566/com.dynamic W/System.err: at com.google.android.play.core.internal.bg.a(Unknown Source)
06-05 10:43:56.387 17566-17566/com.dynamic W/System.err: at com.google.android.play.core.internal.j.onTransact(Unknown Source)
06-05 10:43:56.387 17566-17566/com.dynamic W/System.err: at android.os.Binder.execTransact(Binder.java:453)
Вопрос
Я пробовал много способов, но каждый раз, когда я нажимаю кнопку загрузки, чтобы загрузить динамический модуль, он выдает мне код ошибки -2, который называется «MUDULE_UNAVAILABLE».
Как я могу решить эту ошибку?