簡體   English   中英

Android 動態功能:錯誤-2 模塊不可用

[英]Android Dynamic Feature : Error -2 Module Unavailable

我一直在調試一整天都沒有結果,我已經關注了每個文檔和谷歌代碼實驗室並將捆綁包上傳到內部測試並且錯誤仍然存在:模塊不可用,下面是我的實現:

模塊AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest 
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:dist="http://schemas.android.com/apk/distribution"
 package="com.appshive.shop"
 >

<dist:module
    dist:instant="false"
    dist:title="@string/measure">
    <dist:delivery>
        <dist:on-demand />
    </dist:delivery>
    <dist:fusing dist:include="true" />
</dist:module>
</manifest>

模塊 build.gradle:

plugins {
id 'com.android.dynamic-feature'
id 'kotlin-android'
id 'kotlin-kapt'
id 'kotlin-android-extensions'
}
android {
compileSdkVersion 30
buildToolsVersion "30.0.2"

defaultConfig {
    minSdkVersion 22
    targetSdkVersion 30
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
    jvmTarget = '1.8'
}
}

並且該模塊具有片段以及它們的一些依賴項。

在基礎應用程序 Android 清單中:

我添加了這個

dynamicFeatures = [':measure']
android:name=".core.ShopApplication"

我在 build.gradle 中的應用程序 ID 是:com.appshive.ecommerce

我的應用程序 class 擴展了 SplitCompatApplication

class ShopApplication: SplitCompatApplication(){

override fun onCreate() {
    super.onCreate()
    Timber.plant(DebugTree())
    SplitCompat.install(this)
    startKoin {
        androidContext(this@ShopApplication)
        modules(listOf(appModule, repoModule))
    }

}

我在所有項目中只有一項活動:主要活動,它包含

private lateinit var manager: SplitInstallManager

在 onCreate 我初始化了它: manager = SplitInstallManagerFactory.create(this)

我正在檢查模塊是否可用我正在打開其他片段:

val request = SplitInstallRequest.newBuilder()
    .addModule(name)
    .build()

manager.startInstall(request).addOnSuccessListener {
    makeToast("Successss")
}.addOnFailureListener { e->
    makeToast(e.message.toString()+" as")
}

我正在向經理注冊聽眾:

override fun onPause() {
    manager.unregisterListener(listener)
    super.onPause()
}
override fun onResume() {
    manager.registerListener(listener)
    super.onResume()
}

僅此而已,然后我使用我的密鑰生成簽名包並將其上傳到內部測試,然后將其安裝在手機上,然后發生錯誤:錯誤 -2 模塊不可用

我已經嘗試了互聯網上的所有方法,但沒有運氣我不知道我錯過了什么。 是因為捆綁簽名還是因為打包?

當我更改模塊以安裝時間模塊時,它就像一個魅力。

當我在開發這個功能時,我只使用 Playstore 的內部測試功能進行測試。

后來我才知道還有另一種方法可以使用名為Bundle Tool的工具在本地進行。

您可以從給定的鏈接下載它。 下載 Bundle Tool 文件后,您需要使用它生成 apk。

bundletool build-apks 
--bundle=app/build/outputs/bundle/debug/bundle.aab
--output=my_app.apks

參考: Android 應用程序包

PS。 當我在我的應用程序中執行此功能時,我使用 Java 代碼開發它,但我 100% 確定它也適用於 kotlin 代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM