我的原生扩展程序无法访问apk内的资源。
让我们说,我想本地播放声音" my_sound.wav":
MediaPlayer mediaPlayer = MediaPlayer.create(freContext.getActivity(), freContext.getResourceId("raw.my_sound"));
mediaPlayer.start();
我创建了这样的原生扩展名(.ane文件):
adt -package -target ane playSound.ane extension.xml -swc playSoundAPI.swc -platform Android-ARM -C Android-ARM .
...声音文件位于Android-ARM / res / raw / my_sound.wav文件夹中,因此将其打包到.ane文件中。
后来它被打包到Android应用程序(.apk文件)中。
当我运行这个aapt命令时:
aapt list -v myApp.apk
..我可以在其他资源中看到我的声音文件,所以我知道它在里面:
6342 Deflate 5414 15% 263300 06-11-15 19:21 b998fae3 res/raw/my_sound.wav
另外如果我用文件存档打开myApp.apk,我可以在里面看到res / raw / my_sound.wav。
问题是,当我在手机上运行应用程序时,会产生错误:
android.content.res.Resources$NotFoundException: File res/raw/my_sound.wav from drawable resource ID #0x7f040005
我做错了什么?
更新
看起来只有声音文件才会出现问题。例如,我可以从res / raw / some.txt中读取文本并在屏幕上显示该文本。我用.wav文件尝试了同样的事情,我设法访问它并使用InputStream和ByteArrayOutputStream将其作为文本(大量乱码)打印出来。所以,声音文件是,但为什么我不能播放它?仍然给我资源$ NotFoundException。但它确实存在。我用mp3,wav和不同的wav采样率尝试了它,没有变化。我也试过把它当作原生的Android应用程序来运行它完美无缺,但是当我尝试在android原生扩展中做同样的事情时,它无法正常工作...