Quantcast
Channel: Adobe Community : All Content - AIR Development
Viewing all articles
Browse latest Browse all 2954

Android loading a packaged asset fails due to compression

$
0
0

Hi,

 

I've been trying to create a way to play a media file that is packaged with an AIR application from within a native extension. However I've come into a problem that seems to be related to the way the assets are getting packaged into the APK. I'm trying to access the files using the Android AssetManager something like:

 

     context.getAssets().openFd( "video/big_buck_bunny.mp4" );

 

However this commonly results in the error:

 

     java.io.FileNotFoundException: This file can not be opened as a file descriptor; it is probably compressed

 

I can list out all the assets in the AssetManager and can definitely confirm the asset is known and present. When I inspect the packaged APK, indeed the file is compressed and not Stored as it should be. eg the following is a file from unzip -v App.apk

 

5510872  Defl:N  5044897   9%  06-11-14 12:15  30431fa9  assets/video/big_buck_bunny.mp4

 

where you can see the Defl:N indicates it's compressed (by 9%). However some files will be Stored correctly:

 

  390668  Stored   390668   0%  11-15-13 10:06  2d380eae  assets/Default-568h@2x.png

    5015  Defl:N     4384  13%  03-25-13 21:24  2b6284ce  assets/Default.png

  211743  Defl:N   211329   0%  11-12-13 10:58  9384a8ae  assets/icons/icon512x512.png

    6536  Stored     6536   0%  11-12-13 10:58  ea5ca1e6  assets/icons/icon57x57.png

 

It seems very inconsistent with an AIR application. According to the documentation Android should not compress the following asset file types (from Package.cpp in the aapt source code):

 

".jpg", ".jpeg", ".png", ".gif", ".wav", ".mp2", ".mp3", ".ogg", ".aac", ".mpg", ".mpeg", ".mid", ".midi", ".smf", ".jet", ".rtttl", ".imy", ".xmf", ".mp4", ".m4a", ".m4v", ".3gp", ".3gpp", ".3g2", ".3gpp2", ".amr", ".awb", ".wma", ".wmv"

 

and indeed when I package the same assets in an android packaged application the files aren't compressed.

 

Of course I know I can work around this by reading the file out and writing it to a cache or temp location however this seems to be a bug in the way AIR is packaging Android applications and was wondering if anyone has encountered this or found a workaround.

 

Cheers,

Michael


Viewing all articles
Browse latest Browse all 2954

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>