NativeScript项目重置后构建失败,缺失splash_screen资源求助
从你的错误日志里能一眼看到核心问题:
D:\workspace\tns\projectname\platforms\android\app\src\main\res\values\styles.xml:40:5-41:13: AAPT: error: resource drawable/splash_screen (aka org.nativescript.projectname:drawable/splash_screen) not found.
虽然你已经做了git回退、清理未跟踪文件、重装NativeScript这些操作,但显然还有残留的构建产物或者配置问题没处理干净。下面是一步步的修复方案:
1. 彻底清理构建相关目录
有时候git clean可能没完全清理干净platforms和hooks里的编译残留,建议手动彻底删除这些目录再重新初始化:
- 先关掉所有正在运行的NativeScript相关进程(比如
tns run的终端) - 删除项目根目录下的
platforms/、hooks/、node_modules/这三个文件夹 - 重新执行
npm install安装依赖,再运行tns prepare android重新生成Android构建文件
2. 检查App_Resources里的启动屏配置
错误直接指向splash_screen资源缺失,你需要重点检查:
- 确认
App_Resources/Android/src/main/res目录下是否存在以splash_screen命名的资源文件(比如不同分辨率文件夹下的splash_screen.png,或者对应的drawable xml文件) - 打开
App_Resources/Android/src/main/res/values/styles.xml,检查引用splash_screen的地方有没有拼写错误 - 如果之前修改过启动屏配置,确认是否误删了默认的资源文件,或者路径配置不对
3. 彻底清理npm缓存并重新安装CLI
你提到npm提示哈希不匹配,虽然清理过缓存,但可以再做一次更彻底的操作:
npm cache clean --force npm cache verify
如果你用了nvm管理Node版本,还可以清理nvm的缓存:
rm -rf ~/.nvm/.cache/npm
然后重新安装NativeScript CLI:
npm uninstall -g nativescript npm install -g nativescript tns doctor # 运行这个命令检查你的开发环境是否正常
4. 验证git回退的完整性
有时候git reset可能没完全恢复所有文件,尤其是App_Resources这类可能被修改但没及时提交的目录:
- 执行
git status确认所有文件都是已跟踪状态,没有未提交的修改 - 执行
git diff HEAD~1对比上一个能正常构建的版本,看看App_Resources和配置文件有没有差异,确保回退到位
5. 修复gradle的过时配置(可选,但建议做)
日志里还提到compile和debugCompile已废弃,虽然这不是当前错误的直接原因,但为了避免后续问题,建议打开App_Resources/Android/app.gradle,把里面的:
compile替换成implementationdebugCompile替换成debugImplementation
如果以上步骤都试过还是不行,可以尝试创建一个全新的同版本NativeScript项目(用tns create testApp --ng --version 4.0.1),然后把你的业务代码和配置逐步迁移过去,对比两个项目的差异,就能快速定位问题所在了。
内容的提问来源于stack exchange,提问作者primee

