You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

主源码集定义的文件路径为何在Android Flavor中不可见?

关于多Flavor维度下FileProvider路径资源不生效的问题

Flavor维度配置

  • payments(最高优先级):包含GooglePay、CreditCard、NoPayments三个Flavor
  • ads:包含WithAds、WithoutAds两个Flavor
  • api:包含MaxAPI29、DefaultAPI两个Flavor

FileProvider配置情况

主源码集(main)中定义了本应被所有Flavor共用的文件路径配置:
main/res/xml/file_paths.xml内容:

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-cache-path name="update" path="." />
    <external-path name="input_files"  path="." />
    <external-path name="output_files" path="output_directory/" />
</paths>

主源码集的AndroidManifest.xml中通过如下方式引用该配置:

<?xml version="1.0" encoding="utf-8"?>
<manifest ...> 
    <application ...>
        <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="@string/app_fileprovider"
            android:exported="false"
            android:grantUriPermissions="true"
            >
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths" 
            />
        </provider>
    </application>
</manifest> 

出现的异常

运行应用时抛出如下异常:

java.lang.IllegalArgumentException: Failed to find configured root that contains /...
    at androidx.core.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:800)
    at androidx.core.content.FileProvider.getUriForFile(FileProvider.java:442)

临时解决方法

必须将file_paths.xml复制到最高优先级维度(payments)的每个Flavor目录下,应用才能正常运行:

  • 复制到GooglePay/res/xml/、CreditCard/res/xml/、NoPayments/res/xml/后问题解决
  • 复制到低优先级维度(如api的MaxAPI29)无法解决问题

补充说明

payments维度的CreditCard和NoPayments两个Flavor依赖了一个外部库,该库也定义了file_paths.xml:

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-cache-path name="update" path="." />
</paths>

库的AndroidManifest.xml中也包含完全相同的<provider>块,但库中的路径配置同样无法被Flavor识别,也需要复制到对应Flavor目录才生效。

核心疑问

为什么主源码集定义的file_paths.xml无法被Flavor共用?其他资源(如字符串)都能正常共用,这是否是预期行为?如果是,相关的官方说明在哪里?

内容的提问来源于stack exchange,提问作者Viktor Brešan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 19:00:13