问题标签 [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.

0 投票
2 回答
1808 浏览

android - Android App Bundles:解析包时出现问题(仅限动态功能模块)

我正在尝试实现 Android App Bundles,我需要它在 Play 商店之外工作。

  • 我创建了一个包含按钮的活动的新项目
  • 我通过File > New > New Module > Dynamic Feature Module 创建了一个新的 Dynamic Feature Module

现在我的Android项目结构如下:(省略无意义的文件)

我的build.gradle (app)文件包含

我的build.gradle (dynamic_feature)文件包含

出于测试目的,我要求我dynamic_feature

在一个OnClickListener附加到我的按钮上MainActivity

使用Build > Build Bundle(s)/APK(s) > Build Bundle(s)一切都很好,我得到我app.aab的文件并out.apks使用bundletool以下命令生成文件

之后,我提取base-master.apkdynamic_feature-master.apk简单地将它们拖出out.apks在 WinRar 中打开。

我安装base-master.apk并且工作正常,除了当我单击按钮时,因为它显然会java.lang.ClassNotFoundException因为找不到ModuleActivity.

当我尝试安装时,dynamic_feature-master.apk我收到一条消息There was a problem while parsing the package,当此消息出现时,我在 logcat 中没有看到任何明显的错误。我不知道如何前进。

0 投票
1 回答
1362 浏览

android - 在基本模块中找不到动态功能模块中的 Android 提供程序

我在我的动态功能模块中使用了一些库。这些库正在向清单中添加一些提供程序。

例如在我的动态模块中的 build.gradle 文件中:

该库将以下标记添加到清单中:

问题是当我构建我的基本模块时,应用程序崩溃了,因为它找不到提供程序。我该如何解决这个问题?

正如这里所说:

您的应用程序基本模块的清单类似于任何其他应用程序模块的清单。请记住,当 Google Play 生成您应用的基础 APK 时,它会将所有模块的清单合并到基础 APK 的清单中。

但为什么只有供应商受到影响?活动是否被忽略?

这是我得到的堆栈跟踪:

0 投票
0 回答
1438 浏览

android - 动态功能使用外部 aar 依赖项时如何修复“程序类型已存在”错误

我们有一个第 3 方 aar 文件,出于大小考虑,我们决定拆分为一个单独的动态功能(模块)。主应用程序和动态模块com.google.code.gson:gson 在我们删除依赖项的同一个模块中时都在使用gson,但现在我们的主模块需要它。

项目构建很好,但是当我们尝试构建捆绑包时,我们得到一个

“程序类型已存在:com.google.gson.FieldNamingPolicy$5”错误

我们试图从模块的 gradle 中排除 gson:在依赖项和 android 部分中,但没有运气。这是第 3 方 aar,因此我们无法访问其代码或依赖项。

主要应用程序梯度:

动态特征梯度:

错误:

org.gradle.execution.MultipleBuildFailures:构建完成,有 1 次失败。...引起:java.lang.RuntimeException:com.android.build.api.transform.TransformException:生成主 dex 列表时出错:合并 dex 档案时出错:程序类型已经存在:com.google.gson.FieldNamingPolicy 5 美元

0 投票
2 回答
802 浏览

android - Butterknife 在动态功能子项目中不起作用:错误:包 R2 不存在

我正在迁移应用程序以使用动态交付和动态功能模块,而黄油刀不再适用于新配置。

目前,butterknife 在基本:app模块中工作,它也可以在标有apply plugin: 'com.android.library'. 问题仅在我的新动态功能模块中,标有plugin: 'com.android.dynamic-feature'.

这是我的项目级 gradle 文件:

现在我的基本应用程序 gradle 文件(在:appButternifeR中照常使用)

最后,这里是我的动态功能模块的 gradle 文件,其中黄油刀不起作用,绑定R给了我null预期的参考,并且R2完全丢失了。

最后,这是我在尝试使用黄油刀(error: package R2 does not exist)时在我的动态功能模块中得到的

在此处输入图像描述

有任何想法吗?提前致谢!

0 投票
0 回答
342 浏览

android - Android 动态模块仅在 arm 处理器上

我正在向我的应用程序添加动态功能。

在动态模块中,我依赖于仅支持 arm abis 的外部库。

我的应用支持 arm 和 x86 abis。此外,我在 app 模块中有一些本机代码。我正在使用cmake。我的应用程序 gradle 文件的一部分:

当我尝试构建我的捆绑包时

我收到错误

任务 ':app:packageDebugBundle' 执行失败。工作人员引发了 1 个异常:com.android.tools.build.bundletool.exceptions.ValidationException:具有本机库的所有模块都必须支持相同的 ABI 集,但模块“dynamic_module”支持“[ARM64_V8A,ARMEABI_V7A]”和“模块” base'支持'[ARM64_V8A,ARMEABI_V7A,X86,X86_64]'。

我可以通过 gradle 中的任何条目仅为 arm 处理器添加动态模块吗?或者如果没有,知道我应该做什么吗?

0 投票
0 回答
870 浏览

android - 无法访问动态功能模块的资源

我正在尝试将新的 Android 动态交付功能添加到我的应用程序中,但我访问动态功能模块资源的尝试一直失败。

基本思想是加载一个没有代码但有一堆矢量文件作为可绘制资源的模块。

我能够加载模块甚至访问给定模块的资产,但我不知道如何访问资源。

正如我所说,我能够阅读资产 txt 文件中的文本,但我似乎没有在资源中找到任何可绘制对象。

当我尝试获取我知道在动态模块的资源文件夹中的可绘制对象时,我得到一个ResourcesNotFoundException

我已通读 Google 提供的 Android 文档,但我无法找到有关如何访问已下载模块资源的详细信息

https://developer.android.com/guide/app-bundle/playcore#access_installed_modules

0 投票
0 回答
524 浏览

android - 使用动态功能模块无法构建项目

我将我的项目迁移到androidX。之后我尝试添加一个动态功能模块。但添加后,我无法构建项目。我收到类似于以下内容的错误:

Expected configuration ':feature:debugCompileClasspath' to contain exactly one file, however, it contains no files.

我无法纠正如何解决这个问题。有没有人想出这种错误?请提出一些解决方案或解决方法。

尝试在功能模块的文件中更改/添加口味build.gradle,但没有运气。

0 投票
1 回答
341 浏览

java - 从资产中打开 pdf

我目前正在尝试使用动态交付来下载和安装一些 pdf 文件,并使用 barteksc 的 pdf 查看器 ( com.github.barteksc:android-pdf-viewer:2.8.2) 打开它们。

当我的apk中有pdf文件时,一切正常,但现在我下载它们并通过动态交付安装它们,当我尝试打开它们时出现此错误

E/PDFView: 加载 pdf 错误 java.io.FileNotFoundException: Example.pdf at android.content.res.AssetManager.nativeOpenAsset(Native Method) at android.content.res.AssetManager.open(AssetManager.java:744) 在 android。 content.res.AssetManager.open(AssetManager.java:721) at com.github.barteksc.pdfviewer.util.FileUtils.fileFromAsset(FileUtils.java:37) at com.github.barteksc.pdfviewer.source.AssetSource.createDocument( AssetSource.java:39) 在 com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:53) 在 com.github.barteksc.pdfviewer.DecodingAsyncTask.doInBackground(DecodingAsyncTask.java:25) 在 android.os.AsyncTask $2.call(AsyncTask.java:333) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent。ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 在 java.lang.Thread.run(Thread.java:764)

这将返回“已安装”

如果这会有所不同,我正在从不同的类安装模块,我在 Google 文档中看到了一些关于更新上下文的信息,但我无法弄清楚。

我还添加了

正如文档所说,仍然没有运气。

这是我用来查看 Pdf 文件的方法。当 pdf 位于基本应用程序的资产文件夹中时,它工作得很好,但现在 pdf 位于动态交付模块的资产文件夹中,它无法正常工作。

0 投票
0 回答
100 浏览

android - Android 动态交付:无法解析以下类的超类型;未解决的超类型:android:support:v7:app:AppCompatActivity

我正在向现有项目中添加一个新的动态模块。添加动态模块并制作项目后,给我 Supertypes notsolved 问题。我现有的项目是 Kotlin 和 Java 的混合体

[项目设置 Gradle][1][1]:https://drive.google.com/open?id=1RxIoYOZQxNvoSP5pzg7reG4dlQywHci3

[动态模块 Gradle][1] [1]:https://drive.google.com/open?id=1pflGp5aWIGf_WhJ5GNruylYr9Sia9YQE

[主应用模块1][1][1]:https://drive.google.com/open?id=1W3p5CsdyjhA-6pTHvsKa9aVzbJ_4HElN

[主应用模块2][1][1]:https://drive.google.com/open?id=1ib-xlPD0bHUR5bSRmb2GkFqqSN7yq8HW

[产生错误][1][1]:https://drive.google.com/open?id=1j5VQMNZndD8mI_4lpczkYHLLJpIrPP6O

0 投票
0 回答
29 浏览

android - 我们可以使用动态功能模块作为 SDK 吗?

我目前正在开发一个使用多个动态功能模块的应用程序。我想知道我是否可以发布与独立 SDK 相同的 .aab 模块。如果不是,将 .aab 功能转换为 .aar 文件的成本是多少。提前致谢。