卧槽系列 - Android Studio 中 asserts 位置
不知道大家有没有遇到过这样的问题,一个 bug 查了好几天,突然发现,卧槽,竟然是这里出的问题。卧槽,竟然是这样玩儿的,卧槽,竟然。。。是不是有一种
踏破铁鞋无觅处,得来全不费工夫,
山重水复疑无路,柳暗花明又一村。
所有就有了这个卧槽系列系列
今天遇到的这个问题就是这样。首先说结论吧 ** Android Studio 中, assets 文件夹是放在src/main 下面的,和 res 属于平行关系** 今天做写 demo ,需要从 assets 中加载一张图片显示出来,这对我这种有 N 年开发经验的工程师来说,不是小菜一碟嘛,在 res 下面建一个 assets 文件夹,图片放进去,然后读取出来成为 InputStream ,然后加载到 Imageview ,简单,
InputStream is=getAssets().open("qm.jpg");
largeImageView.setInputStream(is);
然而,刚开始就出问题
问题一 java.io.FileNotFoundException
卧槽,文件不能找到, assert 下面的有文件的啊,这是毛线啊,难道我读取 assets 下的文件方式有问题,那么换一种方式吧,
String path="file:///android_asset/qm.jpg";
InputStream is=new FileInputStream(new File(path));
问题依旧, NND ,为啥啊, 那我就看看 asserts 下面有啥东西吧,这个也简单。
String[] list = getAssets().list("");
list() 参数为空字符串就可以了。 结果竟然出乎意料,竟然是 images、sounds、webkit 这三个文件,根本就没有我添加的qm.jpg,这是毛线啊,然而,这个问题还没解决,竟然又出新的问题。
问题二 The file name must end with .xml
不知道是毛线,我再往 assets 中添加一个文件,竟然出现这个错误,可是我把这个文件删除,只剩下我添加的那个图片,依旧有这个错误,这又是毛线啊,还让不让人干活啦。。
assets 下面为啥必须只能放 xml 文件呢,不可能啊,肯定是可以放图片的啊,然后继续Google+百度吧,于是就找到了一个博客 The file name must end with .xml or .png
让我在项目级的gradle.properties 添加 android.disableResourceValidation=true
,然后在 clean 一下,尽管我不知道这是干嘛的,是骡子是马,拉出来溜溜再说吧,添加,然后 clean ,然后 build ,然后又出问题了
问题三 前言中不允许有内容。
卧槽,还能不能行啊,这又是啥啊,百度吧,还真找到了, Android studio assets error:前言中不允许有内容, 原来 assets 是放在src/main 下面的,不是在 res 文件夹下面的,犯了经验主义错误。只需要把 assets 移动到src/main 下面,所有的问题都解决了,不需要添加所谓的 android.disableResourceValidation=true一样能解决问题。终于可以睡个好觉了。。
搬运地址:
既已览卷至此,何不品评一二: