Skip to content

deminearchiver/Obtainium

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Important

You are viewing a fork of the original Obtainium project.

If you are looking for the original, proceed to ImranR98/Obtainium.

To view details about this fork, go to the Fork section.

Obtainium Icon

Obtainium

Get Android app updates straight from the source.

Original by ImranR98 · Modified by deminearchiver

Report a bug · Request a feature

Table of contents

Fork

The repository you are currenly viewing deminearchiver/Obtainium is a fork of ImranR98/Obtainium.

In this section the primary differences and deviations compared to the original project are described.

Self-built only

Unfortunately, this fork does not provide any builds. If you want to use this version the app, you'll have to build it from source.

What about codesigning?

For the time being, it's recommended to use the default "debug" keystore for release builds, as redistribution of builds is not provided.

Redesign

The redesign of the app is introduced through incremental adoption, which involves introducing changes gradually.

Material 3 Expressive

This version of the app features the all-new fresh and shiny Material 3 Expressive open-source design system created at Google.

The 2025 "Expressive" update the Material You design system received a big update, which made it look more polished and finished.

Currently, implementation of Material 3 Expressive design across the app is considered incomplete, but over time the support for the new design language will improve.

The design changes begin with refactoring the code for a certain UI element, then using legacy styling methods to achieve wanted looks. In order to fully embrace the new design language, it's needed to create new implementations for certain UI elements. This process is slow and tedious, hence the adoption of the new design language will be split a number of migration steps depending on the specific component's complexity. In the process of the redesign, the UI may looks incomplete, but it's the only way to properly apply design changes currently.

Markdown styles update

The app uses Markdown to display certain rich text messages, namely changelogs for tracked apps.

While not a part of the Material Design spec, a refresh of the default Markdown styles is urgently needed.

The priority of this change is low, because Markdown is rarely encountered throughout the app normally.

No significant changes were made to Markdown stylesheets yet, because the update is at the design stage.

Internal changes

This fork features important developer-facing changes, such as:

  • Differences in the process of building the app.

  • Updated tooling configurations:

    • Removal of Docked support.
    • Framework and SDK updates.
  • Code style updates:

    • General improvement of code quality.
    • Application of widely known best practices.
    • Added support for EditorConfig.
  • Resolving feature deprecations (and introducing new ones).

  • Source code splitting via internal unpublished packages, such as custom implementations of layout, UI, platform interfaces, internationalization, assets.

Other

Currently, there are a lot of changes not yet covered in this section, which means that this section is incomplete. The changelist will be updated and more changes will be described.

Roadmap

This section contains the list of projects that are planned to be implemented.

User-facing changes

  • Migrate to a new localization file structure
    • Develop a new localization file structure to use with slang
    • Create a Dart script which remaps easy_localization files to the new localization structure (to preserve some of the existing translations)
    • Intermediate steps (TBA)
    • Start accepting localization contributions

New features

  • Add the ability to require biometric authentication upon opening the app via the local_auth package
  • Cookie Manager - a way for users to obtain and store cookies for any website. The cookies will be used globally across the app for all web requests

Material 3 Expressive

Many Material widgets used still come from Flutter's Material library. The long-standing goal of this project is to get rid of the dependency on Flutter's Material library. It is considered "legacy" in the scope of this repository (it's not actually deprecated).

Here's a list of widgets that are planned to have a custom implementation:

  • Switch (Switch)
    • Support default style
    • Support theming
  • Checkbox (Checkbox)
    • Support default style
    • Support theming
  • Radio button (RadioButton)
    • Support default style
    • Support theming
  • Common buttons (Button and ToggleButton)
    • Support default style
    • Support theming
  • Icon buttons (IconButton and IconToggleButton)
    • Support default style
    • Support theming
  • Standard button group (StandardButtonGroup)
    • One of the most complex widgets to implement, will probably require a custom render object. In that case children will be required to support dry layout.
  • Connected button group (ConnectedButtonGroup)
  • FAB (FloatingActionButton)
  • FAB menu (FloatingActionButtonMenu)
  • App bar (AppBar)
    • Implement using existing SliverAppBar
    • Improve title layout to account for actions
    • Fully custom implementation (must use SliverPersistentHeader under the hood)
  • Loading indicator (LoadingIndicator)
    • Port androidx.graphics.shapes and androidx.compose.material3.MaterialShapes libraries
    • Use a placeholder implementation
    • Create a complete implementation
  • Progress indicators
    • Linear progress indicator (LinearProgressIndicator)
      • Use a placeholder implementation
      • Flat shape (LinearProgressIndicator)
      • Wavy shape (LinearWavyProgressIndicator)
      • Implement complex transition logic (LinearProgressIndicatorController)
    • Circular progress indicator
      • Use a placeholder implementation
      • Flat shape (CircularProgressIndicator)
      • Wavy shape (CircularWavyProgressIndicator)
      • Implement complex transition logic (CircularProgressIndicatorController)

Internal changes

These changes are expected to not affect the user experience. They include various architecural and structural changes to the project.

Here's a tree-like checklist of the changes expected to be implemented in the near future:

Organization

The following list contains changes regarding the project's repository:

  • Modernize issue temlates
  • Create pull request templates
  • Set up discussions
  • Start accepting open-source contributions
  • Consider choosing a different name for the app to further deviate from the original project
  • Set up Renovate CLI
    • Install Renovate GitHub app in this repository

Miscellaneous

  • Create a website for the app

About

Obtainium allows you to install and update apps directly from their releases pages, and receive notifications when new releases are made available.

Useful links

Supported app sources

Open Source (general)

Other (general)

Other (app-specific)

Direct APK Link

HTML

Any other URL that returns an HTML page with links to APK files

Finding app configurations

You can find crowdsourced app configurations at apps.obtainium.imranr.dev.

If you can't find the configuration for an app you want, feel free to leave a request on the Discussions page.

Or, contribute some configurations to the website by creating a PR at ImranR98/apps.obtainium.imranr.dev.

Limitations

For some sources, data is gathered using Web scraping and can easily break due to changes in website design. In such cases, more reliable methods may be unavailable.