具有多种构建风格的文件存储

时间:2016-01-13 08:47:33

标签: android file-storage

在我的应用程序中,我使用了两种构建版本/构建变体。切换到两种构建版本后,我的应用程序中引入了一个错误。我现在已经发现了这个错误的原因,但我无法找到解决方案。

情况:

在我的MainActivity类中,我有一个检查文件是否存在的函数 - 它非常简单;

public boolean fileExists(String filename) {
    File file = null;
    file = this.getApplicationContext().getFileStreamPath(filename);
    return file.exists();
}

使用调试器,文件的位置报告为:/data/data/foo.bar.appname。 buildflavour / files / filename

在另一堂课中,我试着写到同一个地方;

outputStream = getActivity().getApplicationContext().openFileOutput(filename, Context.MODE_PRIVATE);
outputStream.write("test");
outputStream.close();

但是,当我在outputStream getActivity().getApplicationContext()前面打印以下行时,上下文被报告为; com.foo.bar.appname@14fcdd18。因此,我认为这两个类正在尝试在不同位置保存/检索文件。关于如何确保应用程序在正确的构建风格位置编写文件的任何想法?提前谢谢!

2 个答案:

答案 0 :(得分:1)

您需要使用不同的应用程序ID。

表格官方网站Configuring Gradle Builds

  

使用构建变体时,构建系统使您能够为每种产品风格和构建类型唯一标识不同的包。

 productFlavors {
    pro {
        applicationId = "com.example.my.pkg.pro"
    }
    free {
        applicationId = "com.example.my.pkg.free"
    }
}

答案 1 :(得分:0)

最终我能够找到问题的答案。最初我在MainActivity onCreate中调用了一个函数,但是这个函数不再被调用,因为buildFlavors直接重定向到我的一个应用程序片段。

对于遇到类似问题的人来说:确认您的Flavors调用必要的函数和类。