ovobin 2025-08-04 03:48 采纳率: 0%
浏览 10

Android studio预览布局渲染material3失败 但真机仍然可以显示

已经去按照错误提示找错误文件了 没有找到 并且已经仔细检查了项目内的资源文件 也没有特殊符号 清除缓存也没有用甚至重新下载Android studio也无济于事
java. nio. file. InvalidPathException: Illegal char <*> at index 33: C:\Users\ASUS\AppData\Local\Temp* at sun. nio. fs. WindowsPathParser. normalize at sun. nio. fs. WindowsPathParser. parse at sun. nio. fs. WindowsPathParser. parse at sun. nio. fs. WindowsPath. parse at sun. nio. fs. WindowsFileSystem. getPath at com. intellij. platform. core. nio. fs. DelegatingFileSystem. getPath(DelegatingFileSystem. java:96) at java. nio. file. Path. of at java. nio. file. Paths. get at javax. imageio. ImageIO. hasCachePermission at javax. imageio. ImageIO. createImageInputStream at javax. imageio. ImageIO. read at com. android. ninepatch. GraphicsUtilities. loadCompatibleImage(GraphicsUtilities. java:37) at com. android. ninepatch. NinePatch. load(NinePatch. java:97) at com. android. layoutlib. bridge. impl. ResourceHelper. getDrawable(ResourceHelper. java:432) at android. content. res. BridgeTypedArray. getDrawable(BridgeTypedArray. java:688) at android. graphics. drawable. StateListDrawable. inflateChildElements(StateListDrawable. java:182) at android. graphics. drawable. StateListDrawable. inflate(StateListDrawable. java:126) at android. graphics. drawable. DrawableInflater. inflateFromXmlForDensity(DrawableInflater. java:141) at android. graphics. drawable. Drawable. createFromXmlInnerForDensity(Drawable. java:1394) at android. graphics. drawable. Drawable. createFromXmlForDensity(Drawable. java:1355) at android. graphics. drawable. Drawable. createFromXml(Drawable. java:1330) at com. android. layoutlib. bridge. impl. ResourceHelper. getDrawable(ResourceHelper. java:395) at android. content. res. Resources_Delegate. getDrawable(Resources_Delegate. java:188) at android. content. res. Resources. getDrawable(Resources. java:952) at android. content. Context. getDrawable(Context. java:1005) at androidx. core. content. ContextCompat$Api21Impl. getDrawable ... (ContextCompat. java:1012) at androidx. core. content. ContextCompat. getDrawable(ContextCompat. java:522) at androidx. appcompat. widget. ResourceManagerInternal. getDrawable(ResourceManagerInternal. java:149) at androidx. appcompat. widget. ResourceManagerInternal. getDrawable(ResourceManagerInternal. java:137) at androidx. appcompat. content. res. AppCompatResources. getDrawable(AppCompatResources. java:66) at androidx. appcompat. widget. TintTypedArray. getDrawable(TintTypedArray. java:84) at androidx. appcompat. widget. SwitchCompat.(SwitchCompat. java:262) at com. google. android. material. switchmaterial. SwitchMaterial.(SwitchMaterial. java:70) at com. google. android. material. switchmaterial. SwitchMaterial.(SwitchMaterial. java:66) at jdk. internal. reflect. DirectConstructorHandleAccessor. newInstance at java. lang. reflect. Constructor. newInstanceWithCaller at java. lang. reflect. Constructor. newInstance at android. view. LayoutInflater. createViewFromTag(LayoutInflater. java:849) at android. view. LayoutInflater. rInflate_Original(LayoutInflater. java:1011) at android. view. LayoutInflater_Delegate. rInflate(LayoutInflater_Delegate. java:72) at android. view. LayoutInflater. rInflate(LayoutInflater. java:985) at android. view. LayoutInflater. rInflateChildren(LayoutInflater. java:972) at android. view. LayoutInflater. rInflate_Original(LayoutInflater. java:1014) at android. view. LayoutInflater_Delegate. rInflate(LayoutInflater_Delegate. java:72) at android. view. LayoutInflater. rInflate(LayoutInflater. java:985) at android. view. LayoutInflater. rInflateChildren(LayoutInflater. java:972) at android. view. LayoutInflater. rInflate_Original(LayoutInflater. java:1014) at android. view. LayoutInflater_Delegate. rInflate(LayoutInflater_Delegate. java:72) at android. view. LayoutInflater. rInflate(LayoutInflater. java:985) at android. view. LayoutInflater. rInflateChildren(LayoutInflater. java:972) at android. view. LayoutInflater. inflate(LayoutInflater. java:570) at android. view. LayoutInflater. inflate(LayoutInflater. java:433) Copy stack to clipboard

img

img

  • 写回答

6条回答 默认 最新

  • 檀越@新空间 2025-08-04 08:40
    关注

    上午好☀️☀️☀️️
    本答案参考通义千问

    根据你提供的错误日志,可以看出问题出在 Android Studio 的布局预览渲染失败,而真机运行正常。这表明问题可能与资源文件路径中的非法字符有关,尤其是在临时文件夹(C:\Users\ASUS\AppData\Local\Temp*)中出现了非法字符 *


    一、问题分析

    错误关键信息:

    java.nio.file.InvalidPathException: Illegal char <*> at index 33: C:\Users\ASUS\AppData\Local\Temp*
    
    • 这个错误表示 Windows 文件系统不支持路径中包含 * 字符
    • Android Studio 在加载资源时,尝试访问了包含非法字符的路径,导致预览失败。
    • 虽然你检查了项目内的资源文件,但问题可能出现在 Android Studio 自动缓存或临时生成的文件 中。

    二、解决方案

    1. 检查并清理临时文件夹

    重点:
    C:\Users\ASUS\AppData\Local\Temp* 这个路径中包含非法字符 *,需要删除或重命名该目录。

    步骤如下:

    1. 打开 文件资源管理器
    2. 导航到以下路径:
      C:\Users\ASUS\AppData\Local\Temp
      
    3. 检查是否有名为 Temp* 或类似带有 * 的文件夹
    4. 如果存在,请重命名该文件夹为合法名称(例如:Temp_old),或者直接删除它。
    5. 重启 Android Studio。

    注意: 删除前请确认该文件夹是否是 Android Studio 临时文件夹,避免误删其他重要文件。


    2. 清除 Android Studio 缓存

    即使你已经尝试过清除缓存,建议再次执行以下操作:

    步骤如下:

    1. 关闭 Android Studio。
    2. 删除以下文件夹:
      • C:\Users\ASUS\.gradle
      • C:\Users\ASUS\.AndroidStudioX.X\system
      • C:\Users\ASUS\.cache\AndroidStudioX.X
      • C:\Users\ASUS\AppData\Local\Google\AndroidStudioX.X
    3. 重新启动 Android Studio 并重新导入项目。

    **3. 修改项目中的资源路径(如有)

    虽然你已经检查过资源文件,但可以再仔细检查一下:

    检查点:

    • 所有图片、字体、XML 文件的路径是否包含特殊字符(如 *, ?, :, /, \ 等)。
    • 确保没有使用中文路径(如 C:\用户\...)。
    • 避免使用空格或特殊符号,推荐使用英文小写字母和下划线。

    4. 更新 Android Studio 和插件

    确保你的 Android Studio 是最新版本,并且 Material 3 插件 也是最新版。

    步骤如下:

    1. 打开 Android Studio。
    2. 点击菜单栏:Help > Check for Updates
    3. 更新 Android Studio 和相关插件(如 Material Design 3)。

    5. 修改 build.gradle 文件(可选)

    如果以上方法无效,可以尝试强制禁用预览功能(虽然不推荐,但可测试是否为预览问题):

    android {
        buildFeatures {
            viewBinding true
            // 可以尝试关闭预览
            // preview false
        }
    }
    

    注意: 这不会修复根本问题,只是临时规避。


    三、总结

    | 问题 | 解决方案 | |------|----------| | 预览渲染失败 | 检查并删除或重命名 C:\Users\ASUS\AppData\Local\Temp* | | 缓存残留 | 清除 .gradle, .AndroidStudioX.X, .cache 等缓存文件夹 | | 资源路径非法 | 检查资源路径是否包含 *, ?, : 等非法字符 | | 插件/版本问题 | 更新 Android Studio 和 Material 3 插件 |


    四、代码示例(如果涉及)

    如果你有自定义的 SwitchMaterial 或其他 Material 3 组件,确保它们的 XML 文件中没有异常引用:

    <com.google.android.material.switchmaterial.SwitchMaterial
        android:id="@+id/my_switch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Toggle" />
    

    五、最终建议

    • 优先解决临时文件夹路径问题,这是最可能的原因。
    • 不要忽略任何看似无关的日志,尤其是路径相关的错误。
    • 如果问题依然存在,可以尝试创建一个新项目,逐步迁移资源,定位问题根源。

    如有更多具体错误日志或代码片段,欢迎继续提供,我可以进一步帮你分析。

    评论

报告相同问题?

问题事件

  • 修改了问题 8月4日
  • 创建了问题 8月4日