Skip to content

Rando ANDZA0000: Unable to open app.apk as a zip archive #6067

Closed
@jonpryor

Description

@jonpryor

It's our favorite, hysenbugs!

There is no repro!

Context:

Sometimes, the DebuggerAttribute"Full", False, True) unit test (and others?) will fail:

error ANDZA0000: Unable to open '/Users/runner/work/1/s/bin/TestRelease/temp/DebuggerAttribute_Full_False_True/obj/Debug/android/bin/com.xamarin.debuggerattribute.apk' as zip archive

The cause of the error is that zipalign doesn't like the file:

$ "$HOME/android-toolchain/sdk/build-tools/28.0.3/zipalign" -p 4 bin/Debug/com.xamarin.debuggerattribute.apk app-Signed.apk
Unable to open 'bin/Debug/com.xamarin.debuggerattribute.apk' as zip archive

The file does exist; it is attached here as com.xamarin.debuggerattribute.zip.

Aside: zipalign source: https://android.googlesource.com/platform/build.git/+/refs/heads/master/tools/zipalign/

Lots of spitballing and investigation later, and we we see that zipdetails -vv doesn't like it:

% zipdetails -vv com.xamarin.debuggerattribute.zip # or .apk…
…
00C06E 000004 50 4B 03 04 LOCAL HEADER #8       04034B50
00C072 000001 00          Extract Zip Spec      00 '0.0'
00C073 000001 00          Extract OS            00 'MS-DOS'
00C074 000002 00 00       General Purpose Flag  0000
00C076 000002 00 00       Compression Method    0000 'Stored'
00C078 000004 00 00 21 00 Last Mod Time         00210000 'Tue Jan  1 00:00:00 1980'
00C07C 000004 02 19 FA 61 CRC                   61FA1902
00C080 000004 BC 06 00 00 Compressed Length     000006BC
00C084 000004 BC 06 00 00 Uncompressed Length   000006BC
00C088 000002 0E 00       Filename Length       000E
00C08A 000002 02 00       Extra Length          0002
00C08C 00000E 72 65 73 6F Filename              'resources.arsc'
              75 72 63 65
              73 2E 61 72
              73 63
00C09A 000002 00 00       Malformed Extra Data  00 00
00C09C 0006BC ...         PAYLOAD


Unexpecded END at offset 0000C758, value 00000000
Done

It appears that either the resources.arsc entry, or the following classes.dex entry, is somehow broken; 7zip reports:

% 7z t -bb3 com.xamarin.debuggerattribute.apk
…
ERROR: Headers Error : classes.dex
…
Sub items Errors: 1

Archives with Errors: 1

Sub items Errors: 1

Something isn't kosher here.

@grendello eventually concludes:

local header for classes.dex is corrupted
the CD entry for it is fine
that's why listing the contents works fine

it appears the entry is preceded (or the previous entry followed) by two additional bytes
which then escalates to 9 extra bytes before the subsequent entries, but it appears to badly affect just the first entry with the extra leading bytes

It looks like this is due to something we're doing, but we're not sure what, why, or how to fix it.

Metadata

Metadata

Labels

Area: App+Library BuildIssues when building Library projects or Application projects.bugComponent does not function as intended.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions