file:/// android_res/drawable在使用flavor与其他包名称时不起作用

vik*_*eri 12 android gradle android-webview android-productflavors

我的问题是,在我向我的项目添加了flavor之后,包名称与实际源不同的风味似乎在访问文件时遇到了问题 android_res/drawable.

更具体地说,我有一个调用以下图像的html视图.

<img src="file:///android_res/drawable/image.png">
Run Code Online (Sandbox Code Playgroud)

该图像显示在生产flavor中,其包名称与java文件的目录相同,但它不适用于beta版本:

productFlavors {
    production {
        packageName "com.company.myapp"
    }

    beta {
        packageName "com.company.beta"
    }
}
Run Code Online (Sandbox Code Playgroud)

其中包含java文件的实际目录

java/com/company/myapp
Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为资源甚至不在该文件夹中.

Ben*_*ava 1

更新的答案

您是否正确设置了风味文件夹?

如果您有两种口味(flavorOne、flavorTwo),您需要相应地设置源文件夹。

您的 build.gradle 文件应如下所示:

productFlavors {
        flavorOne {
            applicationId "com.package.name"
            versionCode 1
            versionName "1.0"
        }
        flavorTwo {
            applicationId "com.package.name.two"
            versionCode 1
            versionName "1.0"
        }
}
Run Code Online (Sandbox Code Playgroud)

因此,这两种风格的文件夹结构如下:

src
---|main
--------|java
-------------|com.package.name
--------|res
-------------|drawable

---|flavorOne
--------|java
-------------|com.package.name
--------|res
-------------|drawable

---|flavorTwo
--------|java
-------------|com.package.name
--------|res
-------------|drawable
Run Code Online (Sandbox Code Playgroud)

将每种风格的可绘制对象放入其关联的文件夹中。因此,您将在该可绘制文件夹中拥有image.pngfor 的文件,并在可绘制文件夹中拥有for 的文件。flavorOneimage.pngflavorTwoflavorTwo

这样,本地化将适用于每种口味。

您不应该创建“R”类。这些是自动生成的。

旧答案

并不是真正解决您的具体问题,而是另一种方法。

您可以将图像文件移动到资产文件夹并使用它

<img src="file:///android_asset/image.png">
Run Code Online (Sandbox Code Playgroud)