【ANE】这是坑?Caused by: java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
新的一年竟然遇到了如此的坑货。都说ane很坑,之前反应不是很强烈。感觉也还凑合,毕竟也都成功打出了几个ane。然而最近这个ktplay的sdk却让我有苦说不出。
制作方式,和之前一样 不赘述,如有不会 可点击标签ANE搜索之。
然而关键的时候来了,测试,初始化。but 无论我怎么弄 始终会出现下面的报错 而这个报错在air16里面没有 17 19 没试过,不过 18 和 20 里面会有 在logcat里面可以看到
Caused by: java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed
上面的则是关键。乍看这个报错都明白 资源找不到,而下面说的是资源可能被压缩了。然后我做了下面的尝试
1、解包apk,查看res/raw里面是否有camera.wav。发现确实安安静静躺在那里。
2、从打包的过程中找问题,尝试替换 jar包,尝试去掉安卓项目配置里面的版本限制,尝试新建依赖库,尝试新建安卓项目并导入三方SDK,尝试修改各种打包参数等等
3、尝试升级air sdk的版本
4、尝试解包以前成功案例的ane 以及打包后的apk 并作对比。尝试将三方demo(能成功运行)解包 并对比结构
尝试寻找客服帮助(虽然他们并没有 也完全不熟悉 甚至不知道air是个啥东西)。
5、针对最后的it is probably compressed这个错误,以及 客服的帮助和 度娘的帮助。尝试将camera.wav重新转换,尝试将后缀改成mp3 wav 甚至于 其他。
然而以上的所有尝试均于事无补。
就在我认为我已经尝试了所有方法 而且能够确定这个SDK单独初始化 登陆 是可以做到的,并且ANE打包方式在其他SDK上实验有效的情况下,发觉就只有这个SDK有毛病的情况下。我已经快要疯掉的时候,柳暗花明了。
解决方法是:
在fb里面将apk导出,然后通过apktool进行反编译、回编译。通过jarsigner进行签名。然后放进手机里面,最后成功了 没有报错了。
而最终的apk相比较而言大了0.2mb
所以个人觉得,fb在使用adt.jar对apk进行打包的时候会对一些资源进行压缩,从而导致上面的问题出现,而aapt 进行打包的时候 会忽略掉一些特定的后缀名文件(这个是网上看到的)其中就包括了 wav,后来我将后缀改成 mp3 wma也能成功运行。
坑填了