【问题标题】:Incorrect value of app module dimen/color when using in dynamic-delivery module在动态交付模块中使用时应用模块尺寸/颜色的值不正确
【发布时间】:2020-08-20 07:32:29
【问题描述】:

我有一个应用模块和一个名为“聊天”的动态模块。我有一个布局和片段驻留在聊天模块中,在布局中有一个android:textSize="@dimen/sp20" 写。 Dimen 是在应用程序模块中定义的,因为它在我运行它时显示不正确的文本大小。我调试了一下,等于12sp(xxhdpi设备为36)。

我尝试以编程方式使用维度,但结果相同。 (landing_page_toolbar_title.setTextSize(TypedValue.COMPLEX_UNIT_PX, resources.getDimension(com.sendbird.R.dimen.sp20)))。小心使用应用模块包中的“R”。

当我在聊天模块中定义相同的值时,它可以完美运行。但这对于我们的场景是不可行的。我有大量的字符串、尺寸、颜色资源,在应用程序模块中编写了多种配置。 请分享可行的解决方案。

附上截图方便理解。

【问题讨论】:

  • 如何从动态模块访问和扩充片段?
  • @rmunge 动态模块可以访问应用程序中可用的所有资源。简单的 R.dimen.sp30

标签: android android-resources dimension dynamic-feature-module dynamic-delivery


【解决方案1】:

您可以尝试使用“app_sp20”前缀更新您的app module resources,它会得到大部分解决。

常用名称大多被SDKs/modules覆盖

不过,您还是会遇到问题,然后将反射作为最后的选择。

【讨论】:

    【解决方案2】:

    下载动态模块时,它的代码和资源会放在应用的内部存储中。也许这个存储有一个不一致或过时的状态(包括来自应用程序的缓存资源)。如果在开发/测试期间出现问题,请尝试清除应用的内部存储空间。

    还要确保为您的应用和动态模块的所有活动/片段正确初始化 SplitCompat,如所述:here。文档对于 SplitCompat 实际执行的操作非常模糊,但未正确初始化它也会影响从动态模块访问应用程序资源。

    【讨论】:

    • 我已经写好了SplitCompat.install(this);在 Application 类 attachBaseContext 方法中描述。
    • SplitCompat.installActivity 用于动态模块中的活动和片段呢?
    • 也试过了。写在基础活动中,但没有工作。
    猜你喜欢
    • 2020-02-19
    • 2020-12-10
    • 2021-07-21
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    相关资源
    最近更新 更多