commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hai Zhang (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (COMPRESS-455) Cannot open certain APK file (Unexpected record signature)
Date Sun, 01 Jul 2018 11:01:00 GMT

    [ https://issues.apache.org/jira/browse/COMPRESS-455?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16529048#comment-16529048
] 

Hai Zhang commented on COMPRESS-455:
------------------------------------

What you described reminds me of [apk-golf|https://github.com/fractalwrench/ApkGolf]. It provides
a signed APK file is [here|https://github.com/fractalwrench/ApkGolf/blob/master/signed-release.apk],
and accroding to the [build script|https://github.com/fractalwrench/ApkGolf/blob/master/build.sh]
it uses only APK signature V2. The only problem is I didn't see a license at first glance.

> Cannot open certain APK file (Unexpected record signature)
> ----------------------------------------------------------
>
>                 Key: COMPRESS-455
>                 URL: https://issues.apache.org/jira/browse/COMPRESS-455
>             Project: Commons Compress
>          Issue Type: Bug
>          Components: Archivers
>    Affects Versions: 1.17
>         Environment: Android 8.1.0
>            Reporter: Hai Zhang
>            Priority: Major
>
> I'm developing a file manager for Android and noticed that ZipArchiveInputStream throws
an exception for certain APK files (but not all) I have at hand:
>  
> {noformat}
> 06-12 23:01:03.043 26960-4050/me.zhanghai.android.materialfilemanager W/System.err: java.util.zip.ZipException:
Unexpected record signature: 0X621
> 06-12 23:01:03.044 26960-4050/me.zhanghai.android.materialfilemanager W/System.err: at
org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.getNextZipEntry(ZipArchiveInputStream.java:258)
>  at org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.getNextEntry(ZipArchiveInputStream.java:406)
>  at me.zhanghai.android.materialfilemanager.filesystem.Archive.readEntries(Archive.java:79)
>  at me.zhanghai.android.materialfilemanager.filesystem.Archive.read(Archive.java:36)
>  at me.zhanghai.android.materialfilemanager.filesystem.ArchiveFile.loadFileList(ArchiveFile.java:112)
>  at me.zhanghai.android.materialfilemanager.filelist.FileLiveData$1.doInBackground(FileLiveData.java:32)
>  at me.zhanghai.android.materialfilemanager.filelist.FileLiveData$1.doInBackground(FileLiveData.java:28)
>  at android.os.AsyncTask$2.call(AsyncTask.java:333)
>  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245)
>  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
>  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
>  at java.lang.Thread.run(Thread.java:764){noformat}
>  
> However, these APKs installs fine, and can be viewed by the system Files app (by changing
extension to zip) and some other opensource file managers built upon java.util.zip.
> Some links to APKs I found with this problem:
> 1. [https://github.com/paphonb/PixelLauncherModV5/releases/download/5.3_23/Pixel.2.Launcher.modded.5.3.build.23.apk] 
> 2. [https://github.com/Yink/Amadeus/releases/download/0.9.6-alpha.5/amadeus.apk]
> My code for reading the APK archive entries:
>  
>  
> {code:java}
> private static void readEntries(InputStream inputStream, List<ArchiveEntry> entries)
>         throws ArchiveException, IOException {
>     try (ArchiveInputStream archiveInputStream = sArchiveStreamFactory.createArchiveInputStream(
> new BufferedInputStream(inputStream))) {
>         while (true) {
>             ArchiveEntry entry = archiveInputStream.getNextEntry();
>             if (entry == null) {
>                 break;
>             }
>             entries.add(entry);
>         }
>     }
> }
> {code}
> Also note that if I catch the exception while keeping the list of already-read entries,
it seems that (almost) all entries have been read.
> I wonder how this can be fixed, or if this is because those files have some kind of
weird format, how can I possibly work around this?
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message