Closed error454 closed 4 years ago
When I started the project my concern was only the immediate windows support for ue4. This repo has since gathered quite a few contributors and Linux support would be very welcome I think, but I have not much guidance to give you.
Only thing I can see for linux is: https://sourceforge.net/projects/p7zip/ and https://packages.debian.org/sid/p7zip-full. Those will likely inform how you would approach the android build.
Only thing I can see for linux is: https://sourceforge.net/projects/p7zip/ and https://packages.debian.org/sid/p7zip-full. Those will likely inform how you would approach the android build.
These are my findings as well. I figured I would check in before taking this on.
It has been about 2 years since I filed this and just wanted to post an update on my findings. 7z source/lib that this plugin uses is deeply embedded in the Microsoft Component Object Model. Despite some effort, I do not think it is feasible that the 7z base code will ever compile on posix without a complete port. The p7zip project is the closest candidate which is a port of the 7z command line interface for posix.
It's funny because several people have written wrappers for p7zip on Android, but they're all terminal wrappers that launch the command-line binary and scrape results. It's pretty strange stuff. I think ideally, someone could sever the command line layer and the core functionality of p7zip so that the core functionality could be compiled out into its own lib. I made some efforts here but quickly lost patience with 7z source.
Instead I moved on to using the miniz project which had a very straight-forward API and was cross-platform. On the down-side, it's just a zlib implementation so can only deal with zip archives. Since my requirements were to support in-memory extraction on x86/arm, I was ok with the archive type restriction.
Thanks for posting your findings! I think your conclusion is very reasonable. Probably the only way we'll get a wider 7z support is by asking the original Dev how to disentangle the com bind.
I have the need to get some UE4 zip library stuff on android and started looking into compiling 7zip-cpp for linux. There was an immediate roadblock with the COM stuff. I've hacked around for several hours, trying a few COM wrappers. It's starting to feel like a fool's errand.
I wanted to see if you ever had a super high-level plan of how to support other platforms or maybe this was meant to only ever be a windows lib? I'm guessing most likely using raw LZMA sdk and trying to reach parity with existing interface and callbacks is the long road.