Android Studio 构建变体

3

这是我的问题。我有一个运行良好的应用程序。我希望同一个应用程序有两个不同的包名和drawable文件夹。所以我做了以下操作:

productFlavors {
    AppOne {
        applicationId 'com.AppOne'//Package name for AppOne
    }
    AppTwo{
        applicationId 'com.AppTwo'//Package name for AppTwo
    }
}

然后我在我的src文件夹内创建了两个不同的文件夹。项目结构看起来像这样:

src
   -> AppOne
          ->drawable
                    ->Image for AppOne
   -> AppTwo
          ->drawable
                    ->Image for AppTwo
   -> UnchangedApp
          ->drawable
                    ->Image for someImage

据我理解,如果我从Flavor AppTwo中获取构建,则将使用“AppTwo的图像”(如果我没有弄错的话)。 这对于具有不同包名称和不同图标的单独应用程序也可以正常工作。 问题在于,在我的原始文件夹中有一个本地html文件。 我在代码中像这样引用它。
Webview.loadUrl("file:///android_res/raw/mytemplate.html");

这两个应用的HTML文件也会发生变化,因此我为两个版本创建了“raw”文件夹。现在项目结构如下:

src
   -> AppOne
          ->drawable
                    ->Image for AppOne
          ->raw
                    ->mytemplate.html
   -> AppTwo
          ->drawable
                    ->Image for AppTwo
          ->raw
                    ->mytemplate.html
   -> UnchangedApp
          ->drawable
                    ->Image for someImage
          ->raw
                    ->sometemplate.html

现在当我使用flavor 1或flavor 2运行我的应用程序时,webview会出现错误,显示无法找到file:///android_res/raw/mytemplate.html文件。
我犯了什么错误?在drawable文件夹中的图标正在更改,但raw文件夹中的html文件没有更改。有人能帮忙吗?非常感谢您的任何帮助。谢谢。
1个回答

0

您的目录结构不符合 Android Studio 的默认约定。您的项目结构应该像这样。

app/src/your_flavor/java 包含您的 Java 源代码

app/src/your_flavor/res 包含您的应用程序资源,在此 res 目录下,您可以拥有常规资源目录,例如 drawablelayoutraw 等。


你说得没错。但是我的Java文件没有改变。只有我的简历文件夹改变了。我需要在每个口味中都有Java文件夹吗? - user5894930
我认为你不需要...你只需要添加res文件夹。 - guipivoto
1
@Guilherme是正确的。这是因为Android Studio会将您在main源集中拥有的任何内容合并到每个变体中,因此如果您没有任何特定于口味的代码,您可以从src/main源集中“继承”这些内容,包括manifest.xml文件,这就是为什么您不希望在main源集和您的变体中有两个同名类的原因。 - Trash Can
你是如何读取原始文件的呢?是使用 getResources().openRawResource(R.raw.resource_id) 吗? - Trash Can
@Sharj 我会更新我的问题,展示我从原始HTML中读取的方式。但是Webview.loadUrl("file:///android_res/raw/mytemplate.html"); 这样做就足以在webview中加载模板了,对吗?如果这不是正确的方法,请告诉我。 - user5894930
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接