问题标签 [dynamic-delivery]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 无法在以下项目变体之间进行选择:features:myDynamicFeatureModule:
我正在我正在从事的项目中尝试使用 Android 的动态功能模块(又名按需模块)。
在我的 PoC(概念验证)项目中,动态功能模块 (DFM) 可以正常工作,并且 gradle 可以毫无问题地构建项目。在完成我的 PoC 后,我决定将其应用到现有项目中。但是,gradle 未能通过以下方式构建项目:
请注意,这个错误很长,会遍历所有可能的风格。
我尝试过但没有奏效的方法:
- 我在动态模块中添加了与基本模块(my-app)完全相同的风格
- 在我的 DFM 的 build.gradle 中,我尝试明确设置配置,例如:
implementation project(path: ':my-app', configuration: 'default')
以及配置:'someFlavor'
- 在我使用的基本模块(my-app)的 build.gradle 中
missingDimensionStrategy 'mydimension', 'myflavor'
- 从 Android Studio 和终端构建
- 从 build.gradle 文件中删除依赖项和其他代码
我已经尝试过并且有效:
- 从 DFM 中删除基本应用程序 (my-app) 的依赖项(即删除 implementation project(':my-app',) ) - 但我需要它。澄清一下,DFM 应用了以下 gradle 插件:
com.android.dynamic-feature
和kotlin-android
- 从基本应用程序和 DFM 中删除所有风味 - 但我需要在基本应用程序中使用它们。
- 我制作的 PoC 工作正常,即使使用与我在实际项目中使用的相同风格,gradle 也能编译项目
笔记:
- 我使用 DexGuard(但我禁用了它以确保它不会干扰)
- 我没有任何自定义构建类型,只有“调试”和“发布”
- Gradle 版本是 3.5.2
- Gradle 包装器是 5.5.1
- PoC 和我的实际项目都使用相同版本的 gradle、gradle 包装器、构建类型和风格
不幸的是,我无法在单独的项目中重现该问题。我尝试从我的项目中删除尽可能多的东西,但我无法解决这个问题。
您是否知道可能导致此问题的原因以及我该如何解决?谢谢!
android - 在 Marshmallow 6.0.1 上未找到 Android 动态交付资源异常
我正在关注谷歌示例以在我的应用程序中使用动态交付功能。我的示例应用程序在 pie 上运行良好,但在 marshmallow 6.0.1 自定义 rom 上崩溃,因为我的选项卡在 kitkat 4.4.4 之后不支持官方更新。我在内部测试中上传了应用程序(.abb),从我的手机(os pie)和我的标签(os marshmallow)上的Play商店下载,我在两者上运行应用程序,下载动态模块,成功下载后,我启动模块,模块在 Pie 上启动,但在 Marshmallow 上崩溃,找不到资源异常。经过一些研究,stackoverflow中有人说我只是更新版本代码并重新上传应用程序,它工作正常,所以我尝试修改版本代码并测试它在棉花糖上工作正常。
有人可以帮我看看我在这里缺少什么吗?
清单(动态模块)
构建 Gradle 文件(Dunamic 模块)
TestKotlin 活动(动态模块)
应用程序文件(基础应用程序)
BaseSplitActivity(基础应用程序)
主要活动(基础应用程序)
构建 Gradle 文件(基础应用程序)
android - 如果模块大小小于 10MB,则会显示动态交付用户确认对话框
我已经实现了一个大小为 4.6MB 的动态模块,根据谷歌文档https://developer.android.com/guide/app-bundle/playcore如果大小小于 10MB,那么我们不太可能得到用户确认对话框。
任何人都可以建议如何解决这个问题,因为如果大小小于 10MB,我不需要用户确认下载模块。
任何形式的帮助将不胜感激] 1
android - 具有第三方库的动态功能,其清单中有一个带有自定义主题的活动 - 找不到资源
我的应用程序中有一个模块充当动态功能。
此动态功能模块使用第三方库,其中该第三方库在其 AndroidManifest 中有一个使用自定义主题的 Activity。
使用所描述的配置,应用程序可以正常编译,但是当我尝试运行它时,它会抛出一个错误,指出找不到该 Activity 主题的资源。
错误如下所示:
AGPBI: {"kind":"error","text":"Android 资源链接失败","sources":[{"file":"/Users/my_user/Documents/MyProject/App/AppName/build/intermediates/ metadata_feature_manifest/debug/processDebugManifest/metadata-feature/AndroidManifest.xml","position":{"startLine":40,"startColumn":8,"endLine":45,"endColumn":54}}],"original" :“/Users/my_user/Documents/MyProject/App/AppName/build/intermediates/metadata_feature_manifest/debug/processDebugManifest/metadata-feature/AndroidManifest.xml:41:9-46:55:AAPT:错误:资源样式/CustomTheme(又名 com.my.project.domain:style/CustomTheme) 未找到。\n ","tool":"AAPT"}
* 出了什么问题:任务 ':app:processDebugResources' 执行失败。执行 com.android.build.gradle.internal.tasks.Workers$ActionFacade Android 资源链接失败 /Users/my_user/Documents/MyProject/App/AppName/build/intermediates/metadata_feature_manifest/debug/processDebugManifest/metadata-feature 时发生故障/AndroidManifest.xml:41:9-46:55:AAPT:错误:找不到资源样式/CustomTheme(又名 com.my.project.domain:style/CustomTheme)。
我认为这个问题与谷歌描述的以下问题有关:
在动态功能模块的清单中,您不应引用基本模块中不存在的资源。这是因为,当 Google Play 生成您应用的基础 APK 时,它会将所有模块的清单合并到基础 APK 的清单中。因此,如果基础 APK 的清单引用基础 APK 中不存在的资源,资源链接就会中断。
参考:https ://developer.android.com/guide/app-bundle/
如果第三方库未开放修改,如何使该项目运行?
android - 使用 React Native 的 Android 动态交付
我已经阅读了有关使用 Android App Bundles 为每个用户的设备配置生成和提供优化的 APK 的android Dynamic Delivery的信息,因此用户只下载运行您的应用程序所需的代码和资源。
我已经使用react-native创建了一个应用程序。我们如何启用基于用户需要的特征的动态交付作为特征交付。
例如,应用程序具有两个功能,例如 Feature-A 和 Feature-B,并非所有人都需要。因此,用户将从 Google Play 商店下载基础 APK,之后的用户将下载他们要求或订阅的功能 APK。
android - 未安装动态功能模块
我在我的应用程序上添加了一个按需动态功能模块,但我遇到了问题。
当我安装该功能模块时
打印以下日志
这让我相信动态功能模块已成功安装。但是当我尝试检查已安装的模块时:
它返回一个空列表。
有什么我想念的吗?
附加信息:
这是 a 的日志SplitInstallStateUpdatedListener
:
我还意识到,在INSTALLING
日志之后,会打印以下内容:
这是什么意思?
附加信息2:
在 Pixel 3XL (Android 10) 设备上,按需动态功能模块已成功下载并安装。
但是,在摩托罗拉 G5 (Android 8.1) 设备上,仅下载按需动态功能模块,但从未安装。
附加信息3:
出于某种原因,下载和安装仅适用于 Android 10 设备,但我不知道为什么。
为了测试该功能,我使用了内部应用程序共享工具,我可以在其中上传应用程序包。
android - 是否可以在开始下载之前获得动态功能模块大小?
我想知道在我们开始下载之前是否可以知道动态功能模块的大小。我在网络上的任何地方都没有找到答案=/。
android - 获取动态模块的 SplitInstallErrorCode.MODULE_UNAVAILABLE
SplitInstallErrorCode.MODULE_UNAVAILABLE
尝试安装动态模块时出现以下错误。我已经在使用 Google Play 内部应用程序共享来测试aab
文件,但仍然可以得到它。
这是动态功能清单文件:
这是我开始下载的方式:
我该如何解决这个问题?
android - 和有什么区别和
谁能解释一下有什么区别
和
也有区别
和
提前致谢。
android - 通过动态交付功能加载 opencv_java4.so 文件时出错
我正在使用 Android 的动态交付功能,因为 openCV 使应用程序大小太大。问题是当我尝试使用SplitInstallHelper.loadLibrary(this, "opencv_java4")
. 我给了我这个错误。
致命异常:主要 E AndroidRuntime:进程:com.example.com,PID:7470 E AndroidRuntime:java.lang.UnsatisfiedLinkError:dlopen 失败:找不到库“libc++_shared.so” E AndroidRuntime:在 java.lang.Runtime .loadLibrary0(Runtime.java:1016) E AndroidRuntime: at java.lang.System.loadLibrary(System.java:1669) E AndroidRuntime: at com.google.android.play.core.splitinstall.SplitInstallHelper.loadLibrary(Unknown Source: 0) E AndroidRuntime: 在 org.opencv.com.example.com.TempActivity.onResume(TempActivity.kt:615) E AndroidRuntime: 在 android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1434) E AndroidRuntime: 在 android. app.Activity.performResume(Activity.java:7304) E AndroidRuntime:在 android.app.ActivityThread。performResumeActivity(ActivityThread.java:3993) E AndroidRuntime: 在 android.app.ActivityThread.handleResumeActivity(ActivityThread.java:4033) E AndroidRuntime: 在 android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:51) E AndroidRuntime: 在android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:145) E AndroidRuntime: 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:70) E AndroidRuntime: 在 android.app.ActivityThread$H.handleMessage( ActivityThread.java:1977) E AndroidRuntime: 在 android.os.Handler.dispatchMessage(Handler.java:106) E AndroidRuntime: 在 android.os.Looper.loop(Looper.java:193) E AndroidRuntime: 在 android.app。 ActivityThread.main(ActivityThread.java:6923) E AndroidRuntime: 在 java.lang.reflect.Method.invoke(Native Method) E AndroidRuntime: 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) E AndroidRuntime: 在 com.android .internal.os.ZygoteInit.main(ZygoteInit.java:870)
我的onCreate看起来像这样
然后在onResume中加载openCV库
这是我在 gradle 中用于openCV模块的defaultConfig 。
一些资源要求对 CMakeList.txt 和 dummy.cpp 文件进行更改
CmakeList.txt
假人.cpp