mirror of
https://github.com/f-droid/fdroidclient.git
synced 2025-12-23 23:27:44 -05:00
99 lines
3.3 KiB
Markdown
99 lines
3.3 KiB
Markdown
# F-Droid libraries
|
|
|
|
Core F-Droid functionality is split into re-usable libraries
|
|
to make using F-Droid technology in your own projects as easy as possible.
|
|
|
|
Note that all libraries are still in alpha stage.
|
|
While they work, their public APIs are still subject to change.
|
|
|
|
* [download](libs/download) library for handling (multi-platform) HTTP download
|
|
of repository indexes, APKs and image assets
|
|
* [index](libs/index) library for parsing/verifying/creating repository indexes
|
|
* [database](libs/database) library to store and query F-Droid related information
|
|
in a Room-based database on Android
|
|
|
|
## F-Droid multi-platform download library
|
|
|
|
[API docs](https://fdroid.gitlab.io/fdroidclient/libs/download/)
|
|
|
|
Note that advanced security and privacy features are only available for Android:
|
|
|
|
* Rejection of TLS 1.1 and older as well as rejection of weak ciphers
|
|
* No DNS requests when using Tor as a proxy
|
|
* short TLS session timeout to prevent tracking and key re-use
|
|
|
|
Other platforms besides Android have not been tested and might need additional work.
|
|
|
|
### How to include in your project
|
|
|
|
Add this to your `build.gradle` file
|
|
and replace `[version]` with the [latest version](download/index/gradle.properties):
|
|
|
|
implementation 'org.fdroid:download:[version]'
|
|
|
|
## F-Droid multi-platform index library
|
|
|
|
[API docs](https://fdroid.gitlab.io/fdroidclient/libs/index/)
|
|
|
|
Note that some features are only available for Android:
|
|
|
|
* index signature verification (`JarFile` is JVM only)
|
|
* index stream processing (`InputStream` is JVM only)
|
|
* index V2 diffing (reflection is JVM only)
|
|
* app device compatibility checking (requires Android)
|
|
|
|
Other platforms besides Android have not been tested and might need additional work.
|
|
|
|
### How to include in your project
|
|
|
|
Add this to your `build.gradle` file
|
|
and replace `[version]` with the [latest version](libs/index/gradle.properties):
|
|
|
|
implementation 'org.fdroid:index:[version]'
|
|
|
|
## F-Droid Android database library
|
|
|
|
[API docs](https://fdroid.gitlab.io/fdroidclient/libs/database/)
|
|
|
|
An Android-only database library to store and query F-Droid related information
|
|
such as repositories, apps and their versions.
|
|
This library should bring everything you need to build your own F-Droid client
|
|
that persists information.
|
|
|
|
### How to include in your project
|
|
|
|
Add this to your `build.gradle` file
|
|
and replace `[version]` with the [latest version](libs/database/gradle.properties):
|
|
|
|
implementation 'org.fdroid:database:[version]'
|
|
|
|
# Development
|
|
|
|
You can list available gradle tasks by running the following command in the project root.
|
|
|
|
./gradlew :libs:download:tasks
|
|
|
|
Replace `download` with the name of the library you want to view tasks for.
|
|
|
|
# Making releases
|
|
|
|
Bump version number in the library's [`gradle.properties`](gradle.properties),
|
|
ensure you didn't break a public API and run:
|
|
|
|
./gradlew :libs:download:check :libs:download:connectedCheck
|
|
./gradlew :libs:download:publish
|
|
./gradlew closeAndReleaseRepository
|
|
|
|
Replace `download` with the name of the library you want to publish.
|
|
|
|
See https://github.com/vanniktech/gradle-maven-publish-plugin#gradle-maven-publish-plugin
|
|
for more information.
|
|
|
|
# License
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|