Android Studio中运行App后JS文件代码自动还原问题求助
问题情况
修改android>app>assets>Scripts>experience.js中的代码:
//CreateBoxAsync(scene).then(function () { CreateSpheresAsync(scene).then(function () {
保存后点击“Run 'app'”,三星SM-T870设备上仍执行CreateBoxAsync逻辑,同时本地JS文件自动还原为修改前状态。执行Make Project时代码就会被还原,保存文件偶尔弹出“File Cache Conflict”提示,选择“Keep Memory Changes”后问题依旧。
解决方法
检查构建脚本的assets自动覆盖逻辑
打开app模块下的build.gradle,查找是否有copy、processAssets相关的task配置,有些项目会从其他目录(如外部JS源码目录)同步文件到assets目录,每次构建自动覆盖。若存在此配置,要么修改同步源为你编辑的文件路径,要么移除自动同步的逻辑。清理Android Studio缓存
依次点击File > Invalidate Caches...,勾选Invalidate and Restart选项,重启IDE后再修改文件测试。手动删除构建输出目录
删除项目根目录下的build文件夹,以及app模块下的build文件夹,之后重新修改代码,再执行Make Project和Run 'app'。排查版本控制工具的自动回滚
如果项目使用Git等版本控制,检查是否给该JS文件设置了忽略修改的规则(如git update-index --assume-unchanged),执行git update-index --no-assume-unchanged [文件路径]取消该设置,确保修改能正常提交和构建。手动替换设备上的文件验证
通过Android Studio的Device File Explorer,找到设备上的data/data/[你的应用包名]/files/assets/Scripts/experience.js,将修改后的本地文件手动替换进去,再启动应用。如果此时逻辑生效,说明构建过程未正确打包修改后的文件,需重点排查构建脚本的assets处理流程。
内容的提问来源于stack exchange,提问作者Luke Beveridge

