android - Android:根据用户设置以编程方式更改 SourceSet
问题描述
我正在创建一个具有管理员和用户模式的应用程序,每种模式都有自己的布局、字符串和可绘制资源文件。我想知道如何根据用户在运行时切换的应用模式更改资源 SourceSet。
目前,我正在使用 2 种产品口味来做到这一点。但是风味的问题在于它是构建时间,我必须创建 2 个不同的 apk,每个风味一个。因此,能够在运行时更改 SourceSet 意味着我只能拥有 1 个 apk。
更新:我只是想要一个文本视图来调用 R.string.title,这将根据用户模式(管理员或用户)调用不同的字符串文件。这与更改区域设置语言(例如 en vs fr)将调用适当的文件而不需要更改代码相同。
解决方案
我想知道如何根据用户在运行时切换的应用模式更改资源 SourceSet。
这是不可能的。源集是一个编译时构造。APK 包含基于您在编译 APK 时选择的构建变体的源集的内容 - 其他源集的内容不在该 APK 中。
我正在创建一个具有管理员和用户模式的应用程序,每种模式都有自己的布局、字符串和可绘制资源文件。
然后要么是两个应用程序(和两个 APK),要么你需要将所有这些资源放在一个源集中,然后进入你的一个 APK。
通常,管理模式还涉及专用的 Java/Kotlin 代码(例如,专用的片段),因此无论如何仅交换资源是不够的。
如果您仅通过 Play 商店进行分发,您可以考虑使用动态功能模块,如果您关心的是包含用户和管理代码/资源的 APK 的大小。
推荐阅读
- python - TensorFlow 不使用 GPU
- apache-spark - Spark Streaming 2.3.1 类型转换:字符串到时间戳
- ios - 点击按钮后 UIAppearance 主题不适用于 VC
- primeng - p-paginator 是如何工作的
- java - jtable 仅使用来自链接列表的值填充一行
- python - Django在scrapy完成后重定向到结果页面
- c++ - CLS 达到性能
- javascript - 在 puppeteer 解决特定事件的承诺
- python - Python同时填满一个列表
- python - 如何在python中逐帧进行实时视频流传输?