Go to file
jolavillette 44d5840c45 Android: use the librnp built for the sysroot instead of rebuilding it inline
prepare-toolchain-clang.sh builds librnp and installs it in the Android
sysroot, but our own configure ignores it and builds librnp a second time,
inline, whenever ../supportlibs/librnp exists -- which is the case as soon as
libretroshare is checked out inside the RetroShare super-project instead of
standalone.

That inline build cannot work: librnp's CMake compiles findopensslfeatures
and runs it to enumerate the OpenSSL features, and that binary is an Android
executable the build host cannot execute. Where binfmt/qemu picks it up, as
on WSL, it fails on the missing Android dynamic linker:

  CMake Error at supportlibs/librnp/cmake/Modules/FindOpenSSLFeatures.cmake:151:
    Error getting supported OpenSSL hashes: 255
    qemu-aarch64: Could not open '/system/bin/linker64': No such file or directory

Prefer the pre-built library on Android, falling back to the previous
behaviour when none is installed. Desktop builds are untouched: RS_ANDROID is
OFF there, so the local librnp source is still used exactly as before.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-17 09:08:59 +02:00
.github/workflows ci(windows): drop the launcher, turn broadcast discovery off instead 2026-08-15 12:14:31 +02:00
.reuse Fix G10h4ck copyright attribution treewide 2026-06-14 12:13:43 +02:00
gradle/wrapper More work to ship libretroshare as standalone lib 2022-01-10 15:40:22 +01:00
LICENSES Improve license according to REUSE 3.0 2019-12-18 17:57:20 +01:00
misc/Android Fix G10h4ck copyright attribution treewide 2026-06-14 12:13:43 +02:00
src Merge pull request #365 from defnax/api-for-getBoardPostSummaries 2026-08-13 21:01:17 +02:00
tests Fix G10h4ck copyright attribution treewide 2026-06-14 12:13:43 +02:00
.gitattributes More work to ship libretroshare as standalone lib 2022-01-10 15:40:22 +01:00
.gitignore libretroshare: implement RsGxsWikiEvent and clean dummy code 2026-01-03 15:31:49 +00:00
.gitlab-ci.yml Fix Android build for ndk r29 on ubuntu 26.04 2026-06-14 11:44:03 +02:00
build.gradle Fix Android build for ndk r29 on ubuntu 26.04 2026-06-14 11:44:03 +02:00
CMakeLists.txt Android: use the librnp built for the sysroot instead of rebuilding it inline 2026-08-17 09:08:59 +02:00
COPYING Add COPYING 2020-04-01 16:35:22 +02:00
gradlew More work to ship libretroshare as standalone lib 2022-01-10 15:40:22 +01:00
gradlew.bat More work to ship libretroshare as standalone lib 2022-01-10 15:40:22 +01:00
README.asciidoc Fix README typo 2026-06-14 12:54:05 +02:00
settings.gradle More work to ship libretroshare as standalone lib 2022-01-10 15:40:22 +01:00

// SPDX-FileCopyrightText: 2022 Retroshare Team <contact@retroshare.cc>
// SPDX-FileCopyrightText: 2022-2026 Gioacchino Mazzurco <gio@retroshare.cc>
// SPDX-License-Identifier: CC-BY-SA-4.0

== RetroShare library

RetroShare is a decentralized, private, secure, cross-platform, communication
software.

RetroShare functionalities (file sharing, chat, messages, forums, channels...)
are implemented under the hood by libretroshare which offers a documented C++ and
JSON API.

While RetroShare is an application on its own, libretroshare is meant to be
used as part of other programs, some of them are
https://retroshare.cc[RetroShare-gui],
https://retroshare.cc[RetroShare-service],
https://gitlab.com/elRepo.io/elRepo.io-android[elRepo.io]
(let us know if there are more).


=== Continuous integration

image:https://gitlab.com/RetroShare/libretroshare/badges/master/pipeline.svg[link="https://gitlab.com/RetroShare/libretroshare/-/commits/master",title="pipeline status"]

=== Developer Documentation

All public API methods are documented with Doxygen comments, so the most updated
way to read documentation is reading those comments in `src/retroshare/`.

To use libretroshare as part of your Android application we suggest to add our
maven repository, and then specify the variant and version that fits your needs
as dependency. RetroShare is then exposed as an Android Service as you can see
at https://gitlab.com/RetroShare/libretroshare/-/blob/master/src/rs_android/org/retroshare/service/RetroShareServiceAndroid.java?ref_type=heads[RetroShareServiceAndroid.java] start it and then interact with it
via RetroShare JSON API.

.Example of adding libretroshare as dependency in Gradle
--------------------------------------------------------------------------------
repositories {
	maven {
		url "https://gitlab.com/api/v4/projects/32730908/packages/maven"
	}
}

dependencies {
	// Look at https://gitlab.com/RetroShare/libretroshare/-/packages for
	// available options.
	//                 Minimum Android platform supported goes here ⬇
	//                                            Build variant goes here ⬇
	//                                                          Version goes here ⬇
	implementation "org.retroshare.service:libretroshare-MinApiLevel21-release:72f8b7e8"
}
--------------------------------------------------------------------------------


{empty} +

image:https://deepwiki.com/badge.svg[link="https://deepwiki.com/RetroShare/libretroshare",title="Ask DeepWiki"]