Android Studio 3.0.1构建时Asset文件无法找到的问题排查与解决
Android Studio 3.0.1 中 Assets 文件读取失败的问题解决
我最近碰到了一个挺闹心的问题:我的应用从Android 2.3版本开始就自带一个私有样本数据文件,之前读取它的代码一直好好的,但切换到Android Studio 3.0.1构建后,assMan.open(DB_SAMPLE)总是触发File not found错误,直接跳进异常处理分支。
读取文件的核心代码如下:
Resources res = mCtx.getResources(); AssetManager assMan = res.getAssets(); try { is = assMan.open(DB_SAMPLE); // stuff that copies to destination... } catch (IOException e) { stat = false; }
我做了一系列排查:
- 确认assets文件夹和目标文件确实存在,路径也没问题
- 参考同类问题的方案,删除并重建了assets文件夹,重新复制了文件(项目视图里assets直接放在main目录下,图标和res文件夹一致)
- 测试了不同的构建版本,不管是目标SDK26还是旧版Android,这个问题都存在
一开始我还在纠结是不是要加什么特殊配置让AS识别这个文件,或者是AS的构建机制有变更,甚至怀疑是不是个Bug。
最后才发现是个低级失误!我之前一直以为Rebuild All已经包含了Clean Project的操作,所以从来没单独执行过Clean。当我手动执行Clean Project之后,assets文件夹被正常打包进APK,读取文件的代码立刻恢复正常了!
内容的提问来源于stack exchange,提问作者gordonwd
相关产品推荐
相关产品推荐

