android版本中不存在src根文件夹下的图像文件(代号为ONE)

android版本中不存在src根文件夹下的图像文件(代号为ONE),android,image,file-io,build,codenameone,Android,Image,File Io,Build,Codenameone,这与此类似,但我的问题是,图像在Codename ONE模拟器中(图像可以正确加载和显示),但当我在手机上进行android构建并尝试它时,我会得到一个java.io.FileNotFoundException。根据Shai Almog对上述问题的评论,它应该是有效的 这里怎么了?可能是文件名必须全部小写还是全部大写 (我在这里省略了源代码,因为这似乎是打包的问题,而不是代码本身的问题。) 更新:我尝试将所有文件名更改为小写,但没有效果。最后我发现您必须将文件作为资源打开(感谢@ChrisStr

这与此类似,但我的问题是,图像在Codename ONE模拟器中(图像可以正确加载和显示),但当我在手机上进行android构建并尝试它时,我会得到一个
java.io.FileNotFoundException
。根据Shai Almog对上述问题的评论,它应该是有效的

这里怎么了?可能是文件名必须全部小写还是全部大写

(我在这里省略了源代码,因为这似乎是打包的问题,而不是代码本身的问题。)


更新:我尝试将所有文件名更改为小写,但没有效果。

最后我发现您必须将文件作为资源打开(感谢@ChrisStratton指出了正确的方向,而评论显然是关于android SDK开发的)

这项工作:

private static Image loadImage(String path) throws IOException {
    InputStream in=null;
    try {
        // works in simulator but not on device:
        // in = FileSystemStorage.getInstance().openInputStream(path);

        // works on both simulator and device:
        in = Display.getInstance().getResourceAsStream(null, path);
        return Image.createImage(in);
    } finally {
        if (in!=null) {
            in.close();
        }
    }
}

您应该使用EncodedImage.create(“/fileName”)创建图像,或者更好地将它们添加到res文件中,您可以使用多图像格式:

使用输入流的方法的效率略低于我们内部可以做的


src目录中的文件隐式地放在Android的Codename One中的assets目录中,因此不需要assets目录。

@ChrisStratton:这是否也适用于Codename One或只是“正常”的Android开发?(代号为ONE-)文档中没有关于资产文件夹的内容。。。