
Listen for a new intent, show a screen to the user mentioning they are about to start a swap. Make FDroid receive repo intents, then dispatch to relevant Activity. Previously manage repo always got the intents. Now FDroid does, and chooses whether to give to ManageRepos or Client connect. Not sure if it is required to do it this way or not, but it seems to work. I had a bit of an issue getting the "Welcome to F-Droid" string to fit on one line, because it was breaking on the hyphen. That is still not resolved in this commit. Still need to: * Show error messages instead of the "connect" description * Jar signing seems not to work when connecting to other repo. In order to handle returning to F-Droid after connecting (or saying no) I tagged the intent with a "handled" extra value. That way, I can ignore trying to connect to a repo if we've already handled that event. Finally, I also fixed an issue regarding downloading of signed index.jar files with an uppercase fingerprint. The fingerprint from the jar differed from that in the swap url, in that one was upper case and the other was lower case. This uses an .equalsIgnoreCase check instead. It also adds an extra guard in case the repo doesn't have a fingerprint. Although it may not even use the signed repo updater if both the pubkey and fingerprint are null, it is nice to have the extra assurance. Fixes issue #19. I also left some more TODO's around. I should put them in issues, but I'm in a bit of a hurry.
F-Droid Client
Client for F-Droid, the Free Software repository system for Android.
Building from source
The only required tools are the Android SDK and Apache Ant.
Once you have checked out the version you wish to build, run:
git submodule update --init
./ant-prepare.sh # This runs 'android update' on the libs and the main project
ant clean release
The project itself supports Gradle, but some of the libraries it uses don't. Hence it is currently not possible to build F-Droid with Gradle in a clean way without manual interaction.
Direct download
You can download the application directly from our site or browse it in the repo.
Contributing
You are welcome to submit Merge Requests via the Gitorious web interface. You can also follow our Issue tracker and our Forums.
Translating
The res/values-*
dirs are kept up to date automatically via MediaWiki's
Translate Extension. See
our translation page if you
would like to contribute.
Running the test suite
FDroid client includes a embedded Android Test Project for running tests. It
is in the test/
subfolder. To run the tests from the command line, do:
git submodule update --init
./ant-prepare.sh # This runs 'android update' on the libs and the main project
ant clean emma debug install test
You can also run the tests in Eclipse. Here's how:
- Choose File -> Import -> Android -> Existing Android Code Into Workspace for the
fdroidclient/
directory. - Choose File -> Import -> Android -> Existing Android Code Into Workspace for the
fdroidclient/test/
directory - If fdroid-test has errors, right-click on it, select Properties, the Java Build Path, then click on the Projects tab.
- Click on the Add... button and select
fdroidclient/
- Right-click on the fdroid-test project, then Run As... -> Android JUnit Test
Troubleshooting
When building F-Droid, the following error may occur:
Invalid file: extern/UniversalImageLoader/library/build.xml
Check the output of the ./ant-prepare.sh command. This error is often accompanied by the following message:
Error: The project either has no target set or the target is invalid. Please provide a --target to the 'android update' command.
The most likely cause of this is that your installed Android SDK is missing the target version specified by one of the dependencies. For example, at the time of writing this, UniversalImageLoader uses the "android-16" target API, however the default install of the Android SDK will usually only install the latest version ("android-20" as of writing). So you will have to install missings "android-xx" targets via the SDK manager. To get a list of already installed SDK targets, run:
$ android list targets
To get a list of targets used by fdroidclient libs, run:
$ for i in $(grep "android update lib-project" ant-prepare.sh | cut -f5 -d' '); do
grep ^target $i/project.properties | cut -f2 -d'=';
done | sort | uniq | paste -s -d',' -
to install missing or all needed targets, for example "android-16" and "android-7" run:
$ android update sdk -u -t "android-16,android-7"
NOTE: While it may be tempting to add "--target=android-19" to the ant-prepare.sh script, it is not the correct solution. Although it may work, it can cause strange bugs at runtime.
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.