Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Add APK Downloading System with Plugin Architecture #722

Closed
4 tasks done
Aunali321 opened this issue Feb 28, 2023 · 20 comments · May be fixed by #2041
Closed
4 tasks done

feat: Add APK Downloading System with Plugin Architecture #722

Aunali321 opened this issue Feb 28, 2023 · 20 comments · May be fixed by #2041
Assignees
Labels
Feature request Requesting a new feature that's not implemented yet ReVanced Manager Compose Regarding the Compose rewrite of ReVanced Manager

Comments

@Aunali321
Copy link
Contributor

Aunali321 commented Feb 28, 2023

Type

Functionality

Issue

Currently, there is no system in place for downloading APK files. It would be beneficial to have a flexible and extensible system in place that can be used to download APK files from different sources. This would allow developers to add support for new sources without having to modify the core codebase.

Feature

To address this, I propose adding a interface, IApkDownloadProvider, that defines a standard set of methods for downloading APK files. This interface can be implemented by developers as plugins to provide support for downloading from different sources.

The IApkDownloadProvider interface should at least include the following method:

getApkInfo(url: packageName): Promise<ApkInfo> - Retrieves information about the APK file using the package name, such as its version number, size, and download link.

In addition, the main codebase should include a DownloadManager class that acts as a central point for managing the download of APK files. This class should expose methods for adding and removing download providers, as well as starting and stopping downloads.

Motivation

With this system in place, developers can easily add support for new APK download sites by creating new plugins that implement the IApkDownloadProvider interface. This will make the codebase more modular and flexible, while also providing a better user experience for users who want to download APK files from different sources.

Additional context

No response

Acknowledgements

  • I have searched the existing issues and this is a new and no duplicate or related to another open issue.
  • I have written a short but informative title.
  • I filled out all of the requested information in this issue properly.
  • The issue is related solely to the ReVanced Manager
@Aunali321 Aunali321 added the Feature request Requesting a new feature that's not implemented yet label Feb 28, 2023
@oSumAtrIX oSumAtrIX self-assigned this Feb 28, 2023
@Aunali321 Aunali321 self-assigned this Mar 8, 2023
@oSumAtrIX
Copy link
Member

I don't think downloadApk will be necessary. ApkInfo should have a direct url to the download link.

@Aunali321
Copy link
Contributor Author

Tracking branch - apk-scraper

@Ushie
Copy link
Member

Ushie commented Mar 19, 2023

There must be consideration for metadata, things such as:

  • App Icon
  • App Name

These are needed for the downloadable apps to be integrateable with the existing installed apps list, with an indicator and/or a download action button in the ListItem, other than that it should not be treated differently from installed apps.

@bradhoschar

This comment was marked as off-topic.

@0-BlackSpectrum-0
Copy link

If not apk download atleast put the supported version out below the app name during app selection, it's too deep and only shows if the installed version doesn't support the patches, if it does but the version is old I won't know, so add the latest supported version as text near the app during selection that'd be helpful!

@antifarben
Copy link

antifarben commented May 24, 2023

A quick and still useful solution could add just a button opening the standard browser with useful search terms.
Something like https://duckduckgo.com/?q="com.google.android.youtube"+apk+"18.19.35" and using/showing the suggested version (see also #876).

This way it doesn't need a dedicated scraper that might fail.
A browser is probably available everywhere and users can decide about their sources like they prefer.

@Ushie
Copy link
Member

Ushie commented May 24, 2023

Very good idea!

@oSumAtrIX
Copy link
Member

If this is considered to be implemented, the search engine should not be hardcoded.

@Ushie Ushie added the ReVanced Manager Compose Regarding the Compose rewrite of ReVanced Manager label Nov 19, 2023
@Ushie Ushie pinned this issue Nov 19, 2023
@yonggamer
Copy link
Contributor

how about AuroraStore code

@oSumAtrIX
Copy link
Member

Aurora store serves splits from PlayStore

@yonggamer
Copy link
Contributor

what if you combine it with APKEditor

@oSumAtrIX
Copy link
Member

Then it becomes a bigger problem, requires more RAM, time to convert it to a full APK, more patching time and luck so it doesn't fail

@yonggamer
Copy link
Contributor

can a cach file help?

@yonggamer
Copy link
Contributor

or split the the tasks and write to internal storage inbetween tasks?

@oSumAtrIX
Copy link
Member

Split support won't be added this way. An interface will be provided where you can implement your own downloader if you want to.

@Aunali321 Aunali321 unpinned this issue Feb 29, 2024
@oSumAtrIX oSumAtrIX linked a pull request Jul 13, 2024 that will close this issue
@oSumAtrIX
Copy link
Member

Merging to #1474

@oSumAtrIX oSumAtrIX closed this as not planned Won't fix, can't repro, duplicate, stale Jul 18, 2024
@0-BlackSpectrum-0
Copy link

How about using glassdown (open source app) as basis for this functionality?

@oSumAtrIX
Copy link
Member

Thats too generic. A specialized system is discussed in #2064

@0-BlackSpectrum-0
Copy link

Something like vendetta then?

@oSumAtrIX
Copy link
Member

No, but refer to #2064

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Feature request Requesting a new feature that's not implemented yet ReVanced Manager Compose Regarding the Compose rewrite of ReVanced Manager
Projects
Status: Done
Development

Successfully merging a pull request may close this issue.

9 participants