Go to Settings/Anndroid and specify correct paths to SDK and NDK.
If everything is correct you will see two set avaiable:
Go to Settings/Android and specify correct paths to SDK and NDK.
If everything is correct you will see two set available:
Android for armeabi-v7a (gcc, qt) and Android for x86 (gcc, qt).
Dependencies
@ -37,25 +37,25 @@ Building the app with QT
@@ -37,25 +37,25 @@ Building the app with QT
------------------------
- Open `qt/i2pd_qt/i2pd_qt.pro` in the QT-creator
- Change line `MAIN_PATH = /path/to/libraries` to an actual path where you put the dependancies to
- Change line `MAIN_PATH = /path/to/libraries` to an actual path where you put the dependencies to
- Select appropriate project (usually armeabi-v7a) and build
- You will find an .apk file in `android-build/bin` folder
Building the app without QT
---------------------------
- Change line `I2PD_LIBS_PATH` in `android/jni/Application.mk` to an actual path where you put the dependancies to
- Run `ndk-build -j4` from andorid folder
- Change line `I2PD_LIBS_PATH` in `android/jni/Application.mk` to an actual path where you put the dependencies to
- Run `ndk-build -j4` from android folder
- Create or edit file 'local.properties'. Place 'sdk.dir=<pathtoSDK>' and 'ndk.dir=<pathtoNDK>'
- Run `ant clean debug`
Creating release .apk
----------------------
In order to create release .apk you must obtain a Java keystore file(.jks). Either you have in already, or you can generate it yourself using keytool, or from one of you existing well-know ceritificates.
In order to create release .apk you must obtain a Java keystore file(.jks). Either you have in already, or you can generate it yourself using keytool, or from one of you existing well-know certificates.
For example, i2pd release are signed with this [certificate](https://github.com/PurpleI2P/i2pd/blob/openssl/contrib/certificates/router/orignal_at_mail.i2p.crt).
@ -14,11 +14,11 @@ This guide assumes:
@@ -14,11 +14,11 @@ This guide assumes:
Notes on multithreading
* every compontent runs in its own thread
* every component runs in its own thread
* each component (usually) has a public function `GetService()` which can be used to obtain the `boost::asio::io_service` that it uses.
* when talking between components/threads, **always** use `GetService().post()` and be mindfull of stack allocated memory.
* when talking between components/threads, **always** use `GetService().post()` and be mindful of stack allocated memory.
### NetDb
@ -83,7 +83,7 @@ If you use streaming please consider running all code within the destination thr
@@ -83,7 +83,7 @@ If you use streaming please consider running all code within the destination thr
@ -10,7 +10,7 @@ I2PD has a unique feature that allows it to bootstrap off of any i2p router that
@@ -10,7 +10,7 @@ I2PD has a unique feature that allows it to bootstrap off of any i2p router that
* obtain a `router.info` file of a floodfill router out of band, save to `/tmp/floodfill.router.info` or some other path
* run `i2pd --reseed.floodfill=/tmp/floodfill.router.info` and if that router is online you'll be able to bootstrap into the network from just that routers
## Caviets
## Caveats
* The floodfill *must* be trustworthy, it could give you all colluding peers if it's a baddie.
* *DO NOT* use a random floodfill unless you don't care about high security and just want to test out this feature.
@ -37,4 +37,4 @@ If you wish to run your own website in Invisible Internet, follow those steps:
@@ -37,4 +37,4 @@ If you wish to run your own website in Invisible Internet, follow those steps:
Website is now available in Invisible Internet by visiting this address.
5) (Optional) Register short and rememberable .i2p domain on [inr.i2p](http://inr.i2p).
5) (Optional) Register short and memorable .i2p domain on [inr.i2p](http://inr.i2p).
@ -44,7 +44,7 @@ I2P router to discover and fix that issue.
@@ -44,7 +44,7 @@ I2P router to discover and fix that issue.
First of all, synchronize system clock on your machine with Internet.
If that does not help, on Linux machines, check the number of open file descriptors
allowed to a proccess. Run:
allowed to a process. Run:
ulimit -n
@ -91,7 +91,7 @@ I2P and Tor has some similarities, but they are completely different in every wa
@@ -91,7 +91,7 @@ I2P and Tor has some similarities, but they are completely different in every wa
Tor is designed to act as anonymous proxy for the regular Internet, I2P is
designed to create anonymous network layer with its own private resources.
Tor Project was started by US military and has a long history of recieving funds
Tor Project was started by US military and has a long history of receiving funds
from the government, while I2P was started by community of independent civilians.
Tor is highly centralized by design, while I2P is decentralized and distributed.
@ -20,8 +20,8 @@ Specify <your family name>.family.i2p.net for CN (Common Name) when requested.
@@ -20,8 +20,8 @@ Specify <your family name>.family.i2p.net for CN (Common Name) when requested.
Once you are done with it place <your-family-name>.key and <your-family-name>.crt to <ip2ddata>/family folder (for exmple ~/.i2pd/family).
You should provide these two files to other members joining your family.
If you want to register you family and let I2P network recorgnize it, create pull request for you .crt file into contrib/certificate/family.
It will appear in i2pd and I2P next releases packages. Dont place .key file, it must be shared between you family members only.
If you want to register you family and let I2P network recognize it, create pull request for you .crt file into contrib/certificate/family.
It will appear in i2pd and I2P next releases packages. Don't place .key file, it must be shared between you family members only.