Android 动态功能:错误 -2 模块不可用

2024-03-30

我一整天都在调试,没有任何结果,我遵循了每个文档和谷歌代码实验室,并将捆绑包上传到内部测试,但错误仍然存​​在:模块不可用,下面是我的实现:

Module 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>

模块构建.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 ShopApplication: SplitCompatApplication(){

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

}

我在所有项目中只有 1 个活动:主要活动,它包含

private lateinit var manager: SplitInstallManager

在 onCreate 中我初始化它: manager = SplitInstallManager Factory.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 的内部测试功能进行测试。

后来我知道还有另一种方法可以使用名为的工具在本地完成此操作捆绑工具 https://github.com/google/bundletool/releases.

您可以从给定的链接下载它。下载Bundle Tool文件后,您需要使用它生成apk。

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

Ref : 安卓应用程序包 https://medium.com/mindorks/android-app-bundle-part-2-bundletool-6705b50bea4c

附言。当我在应用程序中执行此功能时,我使用 Java 代码开发它,但我 100% 确定它也可以与 kotlin 代码一起使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 动态功能:错误 -2 模块不可用 的相关文章

  • 这个方法比 Math.random() 更快吗?

    我是一名初学者 目前已经开始开发一款使用粒子群优化算法的 Android 游戏 我现在正在尝试稍微优化我的代码 并且 for 循环中有相当多的 Math random 几乎一直在运行 所以我正在考虑一种方法来绕过并跳过所有 Math ran
  • Android 应用程序在启动时打开应用程序信息屏幕,而不是启动主 Activity

    我不确定这是否是一个问题 但这是我第一次遇到这个问题 我正在开发一个应用程序 当我在进行一些编码后断开应用程序与 Android Studio 和 PC 的连接时 如果我尝试在手机上打开应用程序 它会启动app info屏幕 我们看到强制停
  • 使用 HttpClient 时,为什么服务器响应中省略了 Content-Length 标头?

    我正在使用这个问题的源代码如何异步执行httprequest并显示下载响应的进度 https stackoverflow com questions 9594318 how to asynchronous perform a httpreq
  • 导入已经创建的sqlite数据库(xamarin)

    我正在使用 Xamarin 想知道如何导入我已经创建的 sqlite 数据库 到目前为止 我已将其添加到资产文件夹中 但不知道下一步从哪里开始 string localPath Path Combine System Environment
  • Android 中的 Sugar ORM:更新 SQLite 中保存的对象

    我是在 Android 上使用 SQLite 和 Sugar ORM 进行应用程序开发的新手 并尝试阅读 Sugar ORM 文档 但没有找到有关如何更新 SQLite 中保存的对象的任何信息 更改对象属性后还可以保存对象吗 就像是 Cus
  • API29 上不推荐使用 setColorFilter

    我使用以下行来更改 VectorDrawable 的颜色 mydrawable getBackground setColorFilter color PorterDuff Mode SRC ATOP 这很好用 尽管它现在已被弃用 文档建议我
  • 如何在 Android TextView 中使用土耳其语字符,如“ş ç ı ö”?

    我想在 android TextView 中写入 ile 但它没有正确绘制 怎样才能使用这样的字符呢 例如 我将文本视图设置为 ile 它显示为 ile 我怎样才能解决这个问题 尝试以下方法 看看是否有帮助 source http grou
  • 如何向开发人员发送崩溃报告?

    我开发 Android 应用程序 但在某些情况下我的应用程序force close 如果出现以下情况 我如何向开发人员发送包含详细信息的电子邮件force close随时发生 The ACRA https github com ACRA a
  • 在 Android Lollipop 中从 Uri 中裁剪照片后总是返回 Null?

    我尝试在拍照或挑选照片后从 Uri 中裁剪图像 我的代码是这样的 public static void cropImage Uri uri Activity activity int action code Intent intent ne
  • 使用 Android Firebase 堆栈推送通知

    我开发了使用 Firebase 接收推送通知的 Android 应用程序 我的代码基于 Firebase Google 官方文档 https firebase google com docs cloud messaging android
  • 我想从 android 中服务器的视频 url 创建缩略图

    My code public static Bitmap retriveVideoFrameFromVideo String videoPath throws Throwable Bitmap bitmap null MediaMetada
  • 如何在 NumberPicker 中一次显示 3 个以上的值

    我正在创建一个数字选择器 如下图所示 但如果有可用空间 我想显示 3 个以上的值 该选择器有 20 个项目 并且有足够的空间来显示 3 个以上的值 这可以使用 NumberPicker 来完成吗 只需以编程方式设置numberPicker
  • Android 纹理仅显示纯色

    我正在尝试在四边形上显示单个纹理 我有一个可用的 VertexObject 它可以很好地绘制一个正方形 或任何几何对象 现在我尝试扩展它来处理纹理 但纹理不起作用 我只看到一种纯色的四边形 坐标数据位于 arrayList 中 the ve
  • 屏幕开/关检测

    在这里 我试图确定屏幕是否打开 但按下电源锁定 解锁按钮时它似乎不起作用 应用程序运行没有错误 但 if else 中的代码似乎没有效果 Edited现在代码可以工作了 谢谢Olgun 但媒体播放器播放不会停止 并且每次在屏幕上 离屏时都会
  • 如何在 Android 上将动态 alpha 遮罩应用于文本

    I want to make a dynamic alpha mask with drawable shapes as circles or whatever and apply it to a drawed text on Android
  • Android Root 执行 su 带参数

    我在使用参数执行 su 时遇到问题 包含空格 我的 Command java 看起来像这样 public class Command Process process public String executeCommand String c
  • 如何将依赖 ThreadLocal 的代码与 Kotlin 协程一起使用

    一些 JVM 框架使用ThreadLocal存储应用程序的调用上下文 例如SLF4j MDC https logback qos ch manual mdc html 事务管理器 安全管理器等 然而 Kotlin 协程是在不同的线程上调度的
  • 剪切评级栏中的图像

    我制作了自己的评级栏 花朵图像有 4 种尺寸 xdpi hdpi 等 从 24px24px 到 64x64px
  • 在android中创建SQLite数据库

    我想在我的应用程序中创建一个 SQLite 数据库 其中包含三个表 我将向表中添加数据并稍后使用它们 但我喜欢保留数据库 就好像第一次安装应用程序时它会检查数据库是否存在 如果存在则更新它 否则如果不存在则创建一个新数据库 此外 我正在制作
  • 在 Android 手机中通过耳机插孔发送数据

    我目前正在处理一个新项目 我必须通过具有特定电压的耳机插孔发送数据 然后我可以在该电压上工作 所以这里我需要根据我的数据来编程具体电压 我是否可以在android中访问耳机的输出电压 然后创建一个应用程序来控制该电压 这是一篇讨论此问题的

随机推荐

  • PEP 412 是否会使 __slots__ 变得多余?

    PEP 412 http www python org dev peps pep 0412 在 Python 3 3 中实现 引入了对属性字典的改进处理 有效减少了类实例的内存占用 slots http docs python org 3
  • Python PyPDF2 合并旋转页面

    我正在使用Python报告实验室 https bitbucket org rptlab reportlab canvas 生成带有水印的覆盖文档 将其合并到源 pdf 文档中 带有PyPDF2 https github com mstamy
  • 使用 iTextSharp 实现 PDF 中的图像透明度

    我有一个传入的 jpg 文件 我可以将其颜色设置为透明 当我将图像添加到另一个图像时 效果非常好 我正在尝试使用 iTextSharp 将相同的图像添加到 PDF 但我无法使透明度发挥作用 我尝试了两种方法 但都不起作用 第一种方法是在位图
  • 两个 Android 应用程序如何相互通信?

    两个 Android 应用程序的一般通信架构是什么 Case 1 我有两个Android应用程序 a 一个是服务器 等待客户端请求 处理请求 从某些 sqlite 数据库读取数据 并将结果返回给客户端 该服务器应用程序在其自己独立的 And
  • 是否可以通过 iOS SDK 在 Facebook 请求对话框中显示所有好友?

    我正在使用 Facebook iOS SDK v3 17 我希望允许用户邀请多个朋友到我的应用程序 而不使用可邀请的朋友 API 我没有 Canvas 应用程序 想知道是否真的可以在多好友选择器中看到用户的所有好友 我的代码是 FBWebD
  • 重命名 CloudFormation 模板中的资源

    您可以重命名 CloudFormation 模板中的资源吗 假设我创建了一个堆栈模板来创建单个 lambda 函数 GetTheFunnyPhraseText Type AWS Serverless Function Properties
  • 如何在纯 Ruby 中使用 Capybara(没有 Rails)?

    我正在尝试让 Capybara 在一个简单的 Ruby 脚本中运行 即没有 在 Rails 之外 这是脚本 require rubygems require capybara require capybara dsl include Cap
  • Python子进程:如何三次使用管道? [复制]

    这个问题在这里已经有答案了 我想在以下行中使用子进程 convert loxie orig png bmp mkbitmap f 2 s 2 t 0 48 potrace t 5 progress s o DSC00232 svg 我发现感
  • Spring WebClient 无法从 REST API 读取数据

    在我的 Spring Boot 应用程序中 我想使用 Spring WebClient 从以下 API 读取数据 如下所示 我之前没有经验 在对许多页面和文章进行多次搜索后 我决定使用 Spring WebClient 端点 URL 是 s
  • 从 Flash 或纯 AS3 项目使用 RemoteObject (AMF)

    我最近将一些代码从 Flex 项目移植到新的纯 AS3 项目 当我尝试进行 AMF 调用时 收到如下错误消息 TypeError 错误 1034 类型强制失败 无法将 Object 5425371 转换为 mx messaging mess
  • MVC.net 2 - 更改 ValidationMessageFor 输出的 HTML - 这可以通过模板进行吗?

    MVC net 2 默认输出验证消息 如下所示 span class field validation valid A Validation message span 我希望它这样做
  • 用JPA继承抽象类(+Hibernate)

    您将如何在以下示例代码中配置注释 我想只坚持使用 JPA 注释并避免 Hibernate 特定的依赖项 下面的代码正确吗 Entity public class RefExample extends RefData 这些类将有多个版本 Re
  • Android 警报对话框中的 EditText

    我有一种在片段中创建警报对话框的方法 private void alertDialog final EditText editTextField new EditText this getContext AlertDialog dialog
  • 如何通过单击 Android 中当前选项卡中的按钮来转到其他选项卡?

    我试图在 Android 中编写一段代码 通过单击按钮从一个选项卡切换到另一个选项卡 我知道通过单击选项卡我们可以从一个选项卡切换到另一个选项卡 但是是否可以通过单击一个按钮从一个选项卡切换到另一个选项卡 我尝试了以下教程 http www
  • 是否有一个选项可以从 Azure 函数的部署中获取输出值处的事件网格触发器 url + 键?

    是否有一个选项可以从 Azure 函数的部署中获取输出值处的事件网格触发器 url 键 我们想要做的场景如下 我们通过 ARM 在 VSTS 版本中部署功能服务 部署函数服务后 我们部署事件网格订阅 谢谢 什拉达 阿格拉瓦尔 是的 有一种方
  • Maven依赖解析(冲突)

    假设我有四个项目 项目A 依赖于B和D 项目 B 依赖于 D 项目 C 依赖于 D 项目D 在这种情况下 如果我运行项目 A Maven 将正确解析对 D 的依赖关系 如果我理解正确 Maven 总是采用最短路径的依赖关系 由于 D 是 A
  • asyncio:睡眠亚毫秒间隔

    我正在构建一个基于树莓派的设备 它将具有多个应同时工作的并发功能 在这种情况下 使用 asyncio 看起来是一个合理的选择 好吧 我可以用线程用 C 编写所有这些东西 但 python 代码看起来更紧凑 其中一项功能是通过 GPIO 脉冲
  • 使用 VirtualAllocEX 时出现错误代码 487 (ERROR_INVALID_ADDRESS)

    我正在尝试使用 VirtualAllocEx 当我设置dwSize 第三个参数 为大于约 63 MB 的数字 当我查看时会导致生成错误代码 487GetLastError 但是 它适用于较小的大小 例如 4MB 这是我的代码的一部分 Vir
  • 处理传递给 WCF 服务的无效 URI

    我有 WebGet 和 WebInvoke 属性来描述我的合约 但是处理无效 URI 的最佳方法是什么 现在 如果用户传递的 URI 与我当前的操作不匹配 他们会收到 未找到端点 的消息 信息 我想传回更具描述性的消息 例如 我的 URI
  • Android 动态功能:错误 -2 模块不可用

    我一整天都在调试 没有任何结果 我遵循了每个文档和谷歌代码实验室 并将捆绑包上传到内部测试 但错误仍然存 在 模块不可用 下面是我的实现 Module AndroidManifest xml