MCPcopy Index your code
hub / github.com/PurpleI2P/i2pd-android

github.com/PurpleI2P/i2pd-android @2.60.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 2.60.0 ↗ · + Follow
170 symbols 381 edges 16 files 6 documented · 4%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

GitHub release License Android CI Downloads

i2pd android

This repository contains Android application sources of i2pd

Get it on F-Droid

Bounties & Donations for this app

  • Send XMR to 89E1cHc7dkGKTcLxTMQti1W94NdYUxGokhGav5ubLP9jAmE7DmigfoYYx5b64LnTaaFcdczvpAVEsbtx4FFjPm2yJgkEvy2 ; if you want to include bounty/donation notes, create an issue at https://github.com/PurpleI2P/i2pd-android/issues or send an e-mail to hypnosis@i2pmail.org ; include the XMR amount data into your notes.

Team

  • Lead dev: Hypnosis aka nonlin-lin etc
  • Releases, merging into PurpleI2P: R4SAS
  • Sometimes, fixes & improvements: WipedLifePotato
  • Sometimes, merging into PurpleI2P: orignal

How to build

Install g++, OpenJDK 11+, gradle 5.1+

sudo apt-get install g++ openjdk-11-jdk gradle

If your system provides gradle with version < 5.1, download it from gradle homepage:

https://gradle.org/install/

Download and prepare Android SDK for building

Android SDK Available here:

https://developer.android.com/studio#downloads

Download Android SDK, unpack it to temporary directory /tmp/anrdoid-sdk and install it (in /opt/android-sdk for example) with required packages

mkdir /tmp/android-sdk
cd /tmp/android-sdk
wget https://dl.google.com/android/repository/commandlinetools-linux-8092744_latest.zip
unzip commandlinetools-linux-8092744_latest.zip
# install required tools
./cmdline-tools/bin/sdkmanager --sdk_root=/opt/android-sdk "build-tools;33.0.1" "cmake;3.22.1" "ndk;23.2.8568313"

Clone repository with submodules

git clone --recurse-submodules https://github.com/PurpleI2P/i2pd-android.git
cd i2pd-android

Compile application

# if you are not using Java 11 by default:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

export ANDROID_HOME=/opt/android-sdk
export ANDROID_NDK_HOME=$ANDROID_HOME/ndk/23.2.8568313

pushd binary/jni
./build.sh -d
popd

gradle clean assembleDebug

You will find APKs in app/build/outputs/apk

Building on Windows

For building on Windows you must use MSYS2 with mingw64 or ucrt64 shell and preinstalled gcc ( package mingw-w64-x86_64-gcc or mingw-w64-ucrt-x86_64-gcc).

Java 11 can be downloaded from jdk.java.com

Download Android SDK command line tools for Windows, unpack and install it replacing --sdk_root= path.

ANDROID_HOME variable must point to SDK using linux-way path, like /c/dev/android-sdk when SDK installed to C:\dev\android-sdk.

Gradle can be called with ./gradlew command inside project root, or you can install it using pacman and call gradle like on linux.

Release signing

Current releases signed with certificate fingerprint (SHA-256):

FC:C3:C7:34:9E:22:6A:77:B3:70:46:BB:00:FD:04:BB:A5:30:32:21:01:F8:62:F3:6D:8C:3D:B0:EB:B6:35:20

Extension points exported contracts — how you extend this code

StateUpdateListener (Interface)
(no doc) [2 implementers]
app/src/main/java/org/purplei2p/i2pd/DaemonWrapper.java

Core symbols most depended-on inside this repo

writeConfiguration
called by 30
app/src/main/java/org/purplei2p/i2pd/MainPreferenceActivity.java
setState
called by 8
app/src/main/java/org/purplei2p/i2pd/DaemonWrapper.java
isStartedOkay
called by 8
app/src/main/java/org/purplei2p/i2pd/DaemonWrapper.java
getState
called by 7
app/src/main/java/org/purplei2p/i2pd/DaemonWrapper.java
i2pdStop
called by 7
app/src/main/java/org/purplei2p/i2pd/I2PDActivity.java
copyAsset
called by 5
app/src/main/java/org/purplei2p/i2pd/DaemonWrapper.java
startMainActivity
called by 5
app/src/main/java/org/purplei2p/i2pd/I2PDPermsAskerActivity.java
getGracefulQuitTimer
called by 5
app/src/main/java/org/purplei2p/i2pd/I2PDActivity.java

Shape

Method 131
Function 22
Class 15
Enum 1
Interface 1

Languages

Java82%
C++18%

Modules by API surface

app/src/main/java/org/purplei2p/i2pd/DaemonWrapper.java33 symbols
app/src/main/java/org/purplei2p/i2pd/I2PDActivity.java31 symbols
app/src/main/java/org/purplei2p/i2pd/I2PD_JNI.java19 symbols
app/src/main/java/org/purplei2p/i2pd/ForegroundService.java17 symbols
app/jni/i2pd_android.cpp17 symbols
app/jni/DaemonAndroid.cpp12 symbols
app/src/main/java/org/purplei2p/i2pd/I2PDPermsAskerActivity.java8 symbols
app/src/main/java/org/purplei2p/i2pd/SettingsActivity.java7 symbols
app/src/main/java/org/purplei2p/i2pd/WebConsoleActivity.java6 symbols
app/src/main/java/org/purplei2p/i2pd/I2PdQSTileService.java6 symbols
app/src/main/java/org/purplei2p/i2pd/MainPreferenceActivity.java5 symbols
app/src/main/java/org/purplei2p/i2pd/I2PDPermsExplanationActivity.java4 symbols

For agents

$ claude mcp add i2pd-android \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact