Сборка для Android

Есть 2 версии: с QT и без QT.

Подготовка

Вам нужно установить Android SDK и NDK. Для QT версии Вам также нужен QT с поддержкой android.

  • SDK (выберите инструменты для командной строки, и убедитесь что вы установили "Android SDK Build-Tools")
  • NDK
  • QT(для QT). Выберете программы для своей платформы. Для примера QT 5.6 под Linux будет этим файлом

Вам также нужен Java JDK (рекомендуется Oracle Java 8), Ant и помледняя версия Gradle (минимальная версия 3.4).

QT-Creator (для QT)

Откройте QT-creator который должен был установиться вместе с QT. Перейдите в Settings/Android и укажите пути до SDK и NDK. Усли все настроено правильно Вы увидите 2 возможных варианта: Android armeabi-v7a (gcc, qt) и Android x86 (gcc, qt).

Зависимости

Скачайте эти скомпилированные бинарники из PurpleI2P репозиториев.

git clone https://github.com/PurpleI2P/Boost-for-Android-Prebuilt.git -b boost-1_72_0
git clone https://github.com/PurpleI2P/OpenSSL-for-Android-Prebuilt.git
git clone https://github.com/PurpleI2P/MiniUPnP-for-Android-Prebuilt.git
git clone https://github.com/PurpleI2P/android-ifaddrs.git

Подготовьте Android SDK и установите зависимости

mkdir android-sdk
cd android-sdk
wget -t0 <link to latest SDK from Android site>
unzip commandlinetools-XXXXXX-XXXXXX.zip -d cmdline-tools
./cmdline-tools/tools/bin/sdkmanager "build-tools;25.0.3" "platforms;android-14" "platforms;android-25" "platform-tools"

Сборка с QT

  • Откройте qt/i2pd_qt/i2pd_qt.pro в QT-creator
  • Измените MAIN_PATH = /path/to/libraries на путь до папки с зависимотями
  • Выберете нужный проект (обычно armeabi-v7a) и соберите
  • Вы найдете .apk файл в android-build/bin папке

Сборка без QT

  • Измените I2PD_LIBS_PATH в android/jni/Application.mk на путь до папки с зависимотями
  • Создайте (иди отредактируйте) 'local.properties', поместите туда 'sdk.dir=<путь до SDK>' и 'ndk.dir=<путь до NDK>'
  • Запустите gradle clean cleanBuildCache assembleDebug из android папки
  • Вы найдете .apk файл в android/build/outputs/apk папке

Сборка релизного .apk

Для создания релизного .apk Вы должны создать Java keystore файл(.jks) и подписать .apk этим файлом. Вы можете создать его используя keytool, или используя существующие сертификаты. Для примера, i2pd apk подписан этим сертификатом.

Измените 'build.gradle':

--- a/android/build.gradle
+++ b/android/build.gradle
@@ -46,11 +46,17 @@ android {
             keyAlias "i2pdapk"
             keyPassword "android"
         }
+        release {
+            storeFile file("путь до .jks")
+            storePassword "пароль хранилища"
+            keyAlias "alias"
+            keyPassword "пароль ключа"
+        }
     }
     buildTypes {
         release {
             minifyEnabled true
-            signingConfig signingConfigs.orignal
+            signingConfig signingConfigs.release

Запустите gradle clean cleanBuildCache assembleRelease

Сборка запускаемого android binary

  • Измените I2PD_LIBS_PATH в android_binary_only/jni/Application.mk на путь до папки с зависимотями
  • Запустите ndk-build -j <threads> из android_binary_only папки
  • Вы найдете файл i2pd в android_binary_only/libs/armeabi-v7a папке