gpt4 book ai didi

android - Android中如何访问property资源文件来解析Maven项目信息?

转载 作者:太空狗 更新时间:2023-10-29 15:14:09 25 4
gpt4 key购买 nike

在我的(非 Android 测试)测试中,我在 src/main/resources 中放置了一个名为 common.properties 的资源到我的 Android 项目中,以从中读取 Maven 项目版本它:

@Test
public void testReadVersion() throws IOException {
Properties props = new Properties();
props.load(FileUtils.openInputStream(FileUtils.toFile(this.getClass().getResource("/common.properties"))));

String version = props.getProperty("version");

assertNotNull(version);
assertTrue(!"".equals(version));
}

这行得通。但是当我尝试在生产代码中访问相同的资源时,访问资源时总是会出现 NullPointerExceptions:

    Properties props = new Properties();
final StringBuilder versionBuilder = new StringBuilder();

try {
props.load(FileUtils.openInputStream(FileUtils.toFile(this.getClass().getResource("/common.properties"))));

versionBuilder.append(props.getProperty("version"));
}
catch (IOException e) {
// will be ignored.
}

我调试过了。它为空,因为它找不到资源。我应该如何解决这个问题?当我将文件放入 res/raw 以通过

读取时
props.load(getResources().openRawResource(R.raw.common));

文件访问有效,但无法从我的文件内容中转换值:version=${project.version}。结果将是值字符串本身 ${project.version} 而不是 Version 1.0 或其他。我有哪些选择?

[更新]
下面接受的解决方案不再适用于我的最新项目。我总是得到 ${project.version} 而不是值。不知道为什么会这样。甚至 AssetManager 的解决方案也不适合我。我找到了一个很好的解决方法,它也不那么不方便。我获取并显示 android:versionName (AndroidManifest) 的信息。

String versionName = this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName;

TextView version = (TextView)findViewById(R.id.version);
version.setText(" " + versionName);

最佳答案

首先我建议使用更简单的方法:

InputStream resourceAsStream = this.getClass().getResourceAsStream("/common.properties");
Properties prop = new Properties();
prop.load(resourceAsStream);

如果您在测试或生产代码中运行,这将起作用。此外,要从您的资源中替换的 pom 中获取值,您必须设置过滤:

<project>
...
<build>
...
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
...
</resources>
...
</build>
...
</project>

关于android - Android中如何访问property资源文件来解析Maven项目信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14021908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com