рд╢реБрдн рджреЛрдкрд╣рд░
рдПрдХ рд╣реА рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрддреЗ рд╕рдордп, рдореБрдЭреЗ рдЙрди
рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЬрд┐рдирдХрд╛ рдЖрдХрд╛рд░ 1 рдПрдордмреА рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред
рдорд╛рди рд▓реАрдЬрд┐рдП, рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ,
рдкрд░рд┐рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдореЗрдВ
file.dat рдлрд╝рд╛рдЗрд▓ рдирд┐рд╣рд┐рдд рд╣реИ, рдЬрд┐рд╕реЗ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдмрдлрд░ 8 рдкрд╣рд▓реЗ рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдкрдврд╝реЗрдВ
AssetManager am = context.getAssets();
InputStream is = am.open("file.dat", AssetManager.ACCESS_BUFFER);
// Read file
is.read(buffer, 0, 8);
Android 2.2 рдФрд░ рдЙрд╕рд╕реЗ рдХрдо рдкрд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ
LogCat рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдорд┐рд▓рддрд╛ рд╣реИ
06-14 17: 10: 48.554: DEBUG / рд╕рдВрдкрддреНрддрд┐ (382): рдбреЗрдЯрд╛ UNCOMPRESS_DATA_MAX (1048852 рдмрдирд╛рдо 1048576) рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ
рдФрд░
IOException06-14 17: 10: 48.654: WARN / System.err (698): java.io.ioException
рд╣рдо рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред
рдЪреМрдЦрдЯреЗ / рдЖрдзрд╛рд░ / рд╢рд╛рдорд┐рд▓ / рдмрд░реНрддрди / рдЖрд╕реНрддрд┐.рд╣ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╣реА рд╕реНрдерд┐рд░
UNCOMPRESS_DATA_MAX рд╣реИ
enum {
/* data larger than this does not get uncompressed into a buffer */
#ifdef HAVE_ANDROID_OS
UNCOMPRESS_DATA_MAX = 1 * 1024 * 1024
#else
UNCOMPRESS_DATA_MAX = 2 * 1024 * 1024
#endif
};
рдФрд░
рдЪреМрдЦрдЯреЗ / рдЖрдзрд╛рд░ / рд╢рд╛рдорд┐рд▓ / рдмрд░реНрддрди / Asset.cpp рдлрд╝рд╛рдЗрд▓ рдореЗрдВ , рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдкрд░ рдПрдХ рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ
if (mUncompressedLen > UNCOMPRESS_DATA_MAX) {
LOGD("Data exceeds UNCOMPRESS_DATA_MAX (%ld vs %d)\n",
(long) mUncompressedLen, UNCOMPRESS_DATA_MAX);
goto bail;
}
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдбреЗрдЯрд╛ рдЬреЛ рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ
UNCOMPRESS_DATA_MAX рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ,
.apk рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдмрдлрд░ рдореЗрдВ рдЕрдирдкреИрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ:
1. рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ
file.dat рдлрд╝рд╛рдЗрд▓
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЛ рдЗрд╕ рддрд░рд╣ рдмрджрд▓рдирд╛ рдХрд┐ рдпрд╣ рдлрд╝рд╛рдЗрд▓
.apk рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреИрдХ рд╣реЛрдиреЗ рдкрд░ рд╕рдВрдХреБрдЪрд┐рдд рди рд╣реЛред рдЗрди рдПрдХреНрд╕рдЯреЗрдВрд╢рдиреЛрдВ рдХреА рд╕реВрдЪреА
Package.cpp рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рдЧрдИ рд╣реИ
/* these formats are already compressed, or don't compress well */
static const char* kNoCompressExt[] = {
".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"
};
рдпрд╛, рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ "-0" рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде
aapt рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ
.apk рдореЗрдВ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЦрд╛рд▓реА рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рднреА рдлрд╝рд╛рдЗрд▓ рд╕рдВрдкреАрдбрд╝рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧреАред
рдпрд╣ рд╡рд┐рдзрд┐ рдЦрд░рд╛рдм рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рдЬрд╛рд░ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░ рдХрд╛рдлреА рдмрдврд╝рддрд╛ рд╣реИ (рд╕рдВрдкреАрдбрд╝рд┐рдд рдФрд░ рдЕрд╕рдореНрдкреАрдбрд┐рдд рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░), рдФрд░ рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдореЛрдмрд╛рдЗрд▓ рдбрд┐рд╡рд╛рдЗрд╕реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдкрд╛рда рдЬрд╛рдирдХрд╛рд░реА
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред
рдЕрдирдкреИрдХреНрдб рд░реВрдк рдореЗрдВ рдЗрд╕реЗ 1MB рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд▓рдЧрддрд╛ рд╣реИ, рдФрд░
.apk рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдпрд╣ 40Kb рддрдХ рд╕рдВрдХреБрдЪрд┐рдд рд╣реЛрддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХреА
рд╕рдВрдкрддреНрддрд┐ рдХреА рдлрд╛рдЗрд▓реЗрдВ рдЬрд┐рдк (рдореАрдбрд┐рдпрд╛) рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрдкреАрдбрд╝рд┐рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ, рддреЛ рдпрд╣ рддрд░реАрдХрд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИред
2. рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдХрдВрд╕реЛрд▓ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП
file.dat рдХреЛ 1MB рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╣реИ:
split file.dat --bytes=1024K
рдкрд░рд┐рдгрд╛рдореА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ
рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрд╡реЗрджрди рдХреЗ рдкрд╣рд▓реЗ рд▓реЙрдиреНрдЪ рдкрд░, рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ "рдЧреЛрдВрдж" рдФрд░ рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рд╕реНрдЯреИрдХрдУрд╡рд░рдлрд╝реНрд▓реЛ рдкрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕реЗ рд╕реЗрд╡рд╛ рдЕрд▓реЗрдХреНрд╕реЗрдпреЗрд╡ рдирд╛рдо рдХреЗ рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреЗрд╡рд▓ рд▓рд┐рдВрдХ рд╕реНрдЯреИрдХрдУрд╡рд░рдлрд╝реНрд▓реЛ /questions/2860157/load-files-bigger-than-1m-from-assets-folder/3093966#30939669 рд▓рд┐рдВрдХ рджреВрдВрдЧрд╛ред
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдкрдХрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрдЯрд╛ рдХреА рджреЛ рдкреНрд░рддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛, рдПрдХ
.apk рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рджреВрд╕рд░рд╛ рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдФрд░ "рдЕрдирдкреИрдХреНрдб" рдбреЗрдЯрд╛ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдФрд░ рдЕрдЦрдВрдбрддрд╛ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рднреА рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рдПрдВрдбреНрд░реЙрдЗрдб 2.3.1 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╡рд░реНрдгрд┐рдд рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред
рдмреЗрд╢рдХ, рдЖрдк рдХреБрдЫ рдФрд░ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреЗрдЯрд╡рд░реНрдХ (рддрдерд╛рдХрдерд┐рдд рдХреИрд╢) рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛, рдЬреЛ рд╣рдореЗрд╢рд╛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдпрд╛ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдлрд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рджреЛ рд╡рд┐рдзрд┐рдпрд╛рдВ рдореЗрд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдереАрдВред