
InstallerService This merge request mainly introduces the ``InstallerService``. Many files have been touched and reworked in this merge request, due to the following changes: * After download of an apk in ``InstallManagerService``, the ``InstallerService``is started an kicks off the installation process. For unattended installers this directly runs through without any user interaction, for the default installer a new PendingIntent containing ``DefaultActivityInstaller`` is returned that is either stuffed into the notification or directly started from ``AppDetails`` * Using local broadcasts, ``InstallManagerService`` and ``AppDetails`` are informed of state changes in the installation process * ``DefaultActivityInstaller`` is a wrapper around the default installation APIs of Android * If the unattended ``PrivilegedInstaller`` is available, a permission screen is shown before download * Actual error codes and messages are displayed in notification or dialog on fail, especially interesting when using the ``PrivilegedInstaller`` * The process for installing the Privileged Extension has been moved into an own installer for logic seperation, called ``ExtensionInstaller`` Some design considerations: * I try to use Uris where ever possible. At some points this clashes with the usage of ``urlString`` in ``InstallManagerService``. This could be fixed in a later merge request Some other TODOs are left, but I would like to do them after this merge request has been merged if it's okay, as this one is already too huge: * Check if apk permissions are the same as announced in the permission screen for ``PrivilegedInstaller`` * In ``Installer.newPermissionCount()``, I need the target SDK before download to check if it's targetting Android M, which does not require the permission screen * Introduce FileProvider for Android N * Redesign layout of ``InstallConfirmActivity`` * Remove "cancel" icon for installing progress in AppDetails See merge request !300
F-Droid Client
Client for F-Droid, the Free Software repository system for Android.
Building with Gradle
./gradlew assembleRelease
Direct download
You can download the application directly from our site or browse it in the repo.
Contributing
See our Contributing doc for information on how to report issues, translate the app into your language or help with development.
IRC
We are on #fdroid
and #fdroid-dev
on Freenode. We hold weekly dev meetings
on #fdroid-dev
on Tuesdays at 20h UTC, which usually last half an hour.
FAQ
- Why does F-Droid require "Unknown Sources" to install apps by default?
Because a regular Android app cannot act as a package manager on its own. To do so, it would require system privileges (see below), similar to what Google Play does.
- Can I avoid enabling "Unknown Sources" by installing F-Droid as a privileged system app?
This used to be the case, but no longer is. Now the Privileged Extension is the one that should be placed in the system. It can be bundled with a ROM or installed via a zip, or alternatively F-Droid can install it as a system app using root.
License
This program is Free Software: You can use, study share and improve it at your will. Specifically you can redistribute and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Some icons are made by Picol, Icomoon or Dave Gandy from Flaticon or by Google and are licensed by Creative Commons BY 3.0.
Other icons are from the Material Design Icon set released under an Attribution 4.0 International license.