我有一个以“_”开头的资产文件夹。当然,编译应用程序后,它找不到一些资源。
我找到了如何修复它的答案:https://github.com/ionic-team/capacitor/issues/1750,但我想知道这是否会对应用程序的运行产生负面影响?
在 Android 上(至少默认情况下),文件名编码为 UTF-8。 来自 android.os.FileUtils
private static boolean isValidFatFilenameChar(char c) {
if ((0x00 <= c && c <= 0x1f)) {
return false;
}
switch (c) {
case '"':
case '*':
case '/':
case ':':
case '<':
case '>':
case '?':
case '\\':
case '|':
case 0x7F:
return false;
default:
return true;
}
}
private static boolean isValidExtFilenameChar(char c) {
switch (c) {
case '\0':
case '/':
return false;
default:
return true;
}
}
注意:FileUtils 是隐藏的 API(不适用于应用程序;用于 AOSP 使用)。用作参考(或通过反思,风险自负)
用作忽略该文件的标志。
正如 jcesarmobile 提到的,
这确实是 Android 的一个“功能”。默认情况下,它不会将以 _ 开头的资产文件夹复制到生成的 apk 中(请参阅 https://android.googlesource.com/platform/frameworks/base/+/b41af58f49d371cedf041443d20a1893f7f6c840/tools/aapt/AaptAssets.cpp#60 ).
它可能会产生特定于平台的问题。由于有效文件名的传递规则是由操作系统、文件系统、编译器、链接器和编译工具链的其他部分设置并依赖于它们的。
例如,
.cshtml
文件以下划线开头。这些文件不适合浏览。带有前导下划线的文件将被忽略。_
开头的模块不应该直接使用;同样,带有 _
的方法被认为是私有的,等等。我相信现代系统几乎允许文件系统未直接禁止的任何内容。虽然我知道有些软件在显示文件时会自动用空格替换下划线以使它们看起来更好。但是,如果底层系统支持该名称,文件可以随意命名。
可以使用一些特殊字符:&
、
_
、
^
,但不能使用
%
、
~
、
#
和
\
。只要系统接受,甚至可以使用
{
和
}
。