From 84094c60a6dc34c6cac71e50cc3899db91805bb7 Mon Sep 17 00:00:00 2001 From: fsb4000 Date: Sun, 18 Jan 2015 02:06:52 +0600 Subject: [PATCH] Android guide --- ...lding novacoin-qt for android under Windows.txt | 259 ++++++++++++++++++++ 1 files changed, 259 insertions(+), 0 deletions(-) create mode 100644 doc/building novacoin-qt for android under Windows.txt diff --git a/doc/building novacoin-qt for android under Windows.txt b/doc/building novacoin-qt for android under Windows.txt new file mode 100644 index 0000000..049f573 --- /dev/null +++ b/doc/building novacoin-qt for android under Windows.txt @@ -0,0 +1,259 @@ +1.1 Установка архиватора 7z: http://www.7-zip.org/ +(при написании инструкции использовался 7-Zip 9.20 64 bit X64, но скорее всего подойдёт любая версия) + +1.2 Установка msys shell: +-Скачайте http://sourceforge.net/projects/mingw/files/Installer/mingw-get-setup.exe/download +-нажмите Install +-директория для установки C:\MinGW +-поставить галочку напротив "...also install support for the graphical user interface." +-убрать галочки напротив "..in the start menu, and/or .." "... on the desktop" +-нажмите continue +-нажмите continue +-нажмите All Packages, затем MSYS +-поставте галочки напротив: +msys-autoconf-bin +msys-automake-bin +msys-base-bin +msys-libtool-bin +-нажмите Installation, Apply Changes, Apply. После завершения установки нажмите Close и закройте MinGW Installation Manager. + +1.3 Установка qt-5.4.0 для Android +-Скачайте http://master.qt.io/archive/qt/5.4/5.4.0/qt-opensource-windows-x86-android-5.4.0.exe +-Запустите установщик +-Укажите каталог для установки(я при написании инструкции устанавливал в папку C:\Qt\Qt5.4.0) +-Выберите среди компонентов MinGW 4.9.1, остальные компоненты оставьте по умолчанию +(У меня окошко выглядит так: https://yadi.sk/i/e9W_pXTge43u5 ) +(можно так же выбрать Android X86, и Android armv5 если собираетесь собирать под эти CPU) + +1.4 Установка JAVA JDK +-Зайдите на сайт http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html +-Скачайте и установите JDK(при написании инструкции использовалась jdk-8u25-windows-i586.exe ) + +1.5 Установка Android SDK +-Скачайте http://dl.google.com/android/installer_r24.0.2-windows.exe +-Установите в папку C:\Android\sdk +-Запустите SDK Manager.exe +-Установите Android SDK Tools 24.0.2, Android SDK Platform-tools 21, Android SDK Build-tools 21.1.2, Google USB driver, +SDK Platform 21, Google API 21, ARM EABI v7a System Image + +1.6 Установка Android NDK +-На сайте https://developer.android.com/tools/sdk/ndk/index.html#Downloads +-Скачайте https://dl.google.com/android/ndk/android-ndk-r10d-windows-x86_64.exe +-Установите в папку C:\Android\android-ndk-r10d (файл android-ndk-r10d-windows-x86_64.exe это самораспоковывающийся архив, который по двойному клику распаковывается в текущую папку, поэтому лучше открыть его 7-zip и выбрать папку для распаковки самостоятельно) +-Добавьте путь C:\Android\android-ndk-r10d\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin в системную переменную PATH +Подробное описание как это сделать на Windows 8, Windows 7, Windows XP и Windows Vista +https://www.java.com/ru/download/help/path.xml +(только не нужно выполнять последний пункт из этой инструкции "Откройте заново окно командной строки и выполните код java." ) + +Проверка что вы добавили правильный путь в переменную PATH: +-откройте командную строку Windows(Нажмите кнопку Windows + R одновременно. Откроется окно "Выполнить", в поле открыть наберите cmd. Нажмите Ok). +-наберите arm-linux-androideabi-g++ -v +В командной строке выведется текст. В конце текста должно быть написано: +Thread model: posix +gcc version 4.9 20140827 (prerelease) (GCC) + +1.7 Установка Apache Ant +-Зайдите на сайт https://ant.apache.org/bindownload.cgi +-Скачайте архив с программой: http://apache-mirror.rbc.ru/pub/apache//ant/binaries/apache-ant-1.9.4-bin.zip +-Распакуйте в папку C:\Android\apache-ant-1.9.4 + +1.8 Добавьте новые системные переменные(Они нужны только для пункта 2. Построение зависимостей, после этого их можно убрать) +-Нажмите правой кнопкой мыши на "Компьютер", в открывшемся меню нажмите "Свойства", затем "Дополнительные параметры системы", потом "Переменные среды" +https://yadi.sk/i/GnG9HiGme46oi +-В "Системные переменные" нажмите "Cоздать"(ниже будет идти список "переменная и её значение") +ANDROID_DEV /c/Android/android-ndk-r10d/platforms/android-9/arch-arm/usr +AR /c/Android/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-ar +AS /c/Android/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-as +CC /c/Android/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-gcc +CFLAGS --sysroot=/c/Android/android-ndk-r10d/platforms/android-9/arch-arm/ +CPP /c/Android/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-cpp +CPPFLAGS --sysroot=/c/Android/android-ndk-r10d/platforms/android-9/arch-arm/ +CXX /c/Android/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-g++ +CXXFLAGS --sysroot=/c/Android/android-ndk-r10d/platforms/android-9/arch-arm/ -I/c/Android/android-ndk-r10d/sources/cxx-stl/gnu-libstdc++/4.9/include -I/c/Android/android-ndk-r10d/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include +LD /c/Android/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-ld +NDK_PROJECT_PATH C:\Android\android-ndk-r10d +RANLIB /c/Android/android-ndk-r10d/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-ranlib + +2. Построение зависимостей. +В инструкции все зависимости сохраняются в папку C:\Android\deps + +2.1 OpenSSL +-Скачайте http://www.openssl.org/source/openssl-1.0.1k.tar.gz +-Перейдите в папку C:\MinGW\msys\1.0 и запустите msys.bat +Из MinGw shell выполните следующий код: + +cd /c/deps/ +tar xvfz openssl-1.0.1k.tar.gz +cd openssl-1.0.1k +Configure no-shared no-dso android-armv7 +make + +2.2 Berkeley DB +-Скачайте http://download.oracle.com/berkeley-db/db-6.0.20.tar.gz +-Из MinGw shell выполните следующий код: + +cd /c/deps/ +tar xvfz db-6.0.20.tar.gz +cd db-6.0.20/build_unix +../dist/configure --host=arm-none-linux --enable-cxx --disable-shared --disable-replication +make + +2.3 Boost +-Скачайте http://sourceforge.net/projects/boost/files/boost/1.57.0/boost_1_57_0.7z/download +-Распакуйте boost_1_57_0.7z в папку C:\Android\deps +-Откройте командную строку Windows, и выполните следующий код: + +cd C:\Android\deps\boost_1_57_0 +bootstrap.bat + +Не закрывайте командную строку. Откройте файл C:\Android\deps\boost_1_57_0\project-config.jam в текстовом редакторе, удалите его содержимое, вставьте следующий текст + +import option ; + +using gcc : arm : arm-linux-androideabi-g++.exe ; + +option.set keep-going : false ; + +и сохраните файл + +Вернитесь в командную строку и введите: + +b2 --build-type=complete --with-chrono --with-filesystem --with-program_options --with-system --with-thread toolset=gcc-arm variant=release link=static threading=multi threadapi=pthread target-os=android define=BOOST_MATH_DISABLE_FLOAT128 include=C:\Android\android-ndk-r10d\sources\cxx-stl\gnu-libstdc++\4.9\include include=C:\Android\android-ndk-r10d\sources\cxx-stl\gnu-libstdc++\4.9\libs\armeabi\include include=C:\Android\android-ndk-r10d\platforms\android-9\arch-arm\usr\include + +После выполнения этой команды в папке C:\Android\deps\boost_1_57_0\stage\lib должны появиться следующие файлы: +libboost_atomic-gcc-mt-s-1_57.a +libboost_chrono-gcc-mt-s-1_57.a +libboost_filesystem-gcc-mt-s-1_57.a +libboost_program_options-gcc-mt-s-1_57.a +libboost_system-gcc-mt-s-1_57.a +libboost_thread_pthread-gcc-mt-s-1_57.a + +2.4 LevelDB +-Зайдите на сайт https://github.com/novacoin-project/novacoin +-Нажмите Download ZIP +-Распакуйте novacoin-master.zip в C:\Android +-Откройте MinGW shell (C:\MinGW\msys\1.0\msys.bat) и выполните следующий код: + +cd /c/android/novacoin-master/src/leveldb +TARGET_OS=OS_ANDROID_CROSSCOMPILE make libleveldb.a libmemenv.a + +2.5 ifaddrs +-Зайдите на сайт https://github.com/kmackay/android-ifaddrs +-Нажмите Download ZIP +-Откройте архив android-ifaddrs-master.zip , выберите файлы ifaddrs.c и ifaddrs.h и извлеките их в C:\Android\novacoin-master\src + +3. Компиляция +3.1 Собираем Novacoin QT + +Откройте файл src\compat.h +Измените #include на #include + +Откройте файл src\util.cpp +Закоментируйте строки с 59 по 61 +//#ifndef WIN32 +//#include +//#endif +Закоментируйте строки с 1062 по 1067 +//#ifndef WIN32 +// void* pszBuffer[32]; +// size_t size; +// size = backtrace(pszBuffer, 32); +// backtrace_symbols_fd(pszBuffer, size, fileno(fileout)); +//#endif + +Откройте файл src\netbase.cpp +Измените #include на #include + +Отмените вот этот коммит https://github.com/novacoin-project/novacoin/commit/a75927ea86b5456e0cb0bf68226c8e3402197ec8 +(То есть в файлах bitcoingui.cpp, rpcconsole.ui, rpcconsole.cpp, rpcconsole.h удалите зеленые строки этого коммита, и верните красные) +(С ним у меня не получалось закрыть "Окно отладки", конечно нужно искать решение лучше чем отменять коммит, но пока так...) + +Откройте файл novacoin-qt.pro +Вместо + +#BOOST_LIB_SUFFIX=-mgw49-mt-s-1_55 +#BOOST_INCLUDE_PATH=C:/deps/boost_1_55_0 +#BOOST_LIB_PATH=C:/deps/boost_1_55_0/stage/lib +#BDB_INCLUDE_PATH=C:/deps/db-6.0.20/build_unix +#BDB_LIB_PATH=C:/deps/db-6.0.20/build_unix +#OPENSSL_INCLUDE_PATH=C:/deps/openssl-1.0.1j/include +#OPENSSL_LIB_PATH=C:/deps/openssl-1.0.1j + +вставьте + +USE_UPNP=- +USE_QRCODE=0 +USE_IPV6=0 +USE_LEVELDB=1 +USE_ASM=1 + +BOOST_LIB_SUFFIX=-gcc-mt-s-1_57 +BOOST_INCLUDE_PATH=C:/Android/deps/boost_1_57_0 +BOOST_LIB_PATH=C:/Android/deps/boost_1_57_0/stage/lib +BDB_INCLUDE_PATH=C:/Android/deps/db-6.0.20/build_unix +BDB_LIB_PATH=C:/Android/deps/db-6.0.20/build_unix +OPENSSL_INCLUDE_PATH=C:/Android/deps/openssl-1.0.1k/include +OPENSSL_LIB_PATH=C:/Android/deps/openssl-1.0.1k + +Вместо + +!windows|contains(USE_BUILD_INFO, 1) { + genbuild.depends = FORCE + genbuild.commands = cd $$PWD; /bin/sh share/genbuild.sh $$OUT_PWD/build/build.h + genbuild.target = $$OUT_PWD/build/build.h + PRE_TARGETDEPS += $$OUT_PWD/build/build.h + QMAKE_EXTRA_TARGETS += genbuild + DEFINES += HAVE_BUILD_INFO +} + +вставьте + +#!windows|contains(USE_BUILD_INFO, 1) { +# genbuild.depends = FORCE +# genbuild.commands = cd $$PWD; /bin/sh share/genbuild.sh $$OUT_PWD/build/build.h +# genbuild.target = $$OUT_PWD/build/build.h +# PRE_TARGETDEPS += $$OUT_PWD/build/build.h +# QMAKE_EXTRA_TARGETS += genbuild +# DEFINES += HAVE_BUILD_INFO +#} + +После строки src/irc.h \ вставьте src/ifaddrs.h \ +(то есть чтобы стало выглядеть так: +src/irc.h \ +src/ifaddrs.h \ +src/mruset.h \ +) + +После строки src/qt/transactiontablemodel.cpp \ вставьте src/ifaddrs.c \ + +Закоментируйте строку 434 LIBS += -lrt +(то есть чтобы стало выглядеть так: +!windows:!macx { + DEFINES += LINUX +# LIBS += -lrt +} +) + +Измените строку +LIBS += -lboost_system$$BOOST_LIB_SUFFIX -lboost_filesystem$$BOOST_LIB_SUFFIX -lboost_program_options$$BOOST_LIB_SUFFIX -lboost_thread$$BOOST_THREAD_LIB_SUFFIX +на +LIBS += -lboost_system$$BOOST_LIB_SUFFIX -lboost_filesystem$$BOOST_LIB_SUFFIX -lboost_program_options$$BOOST_LIB_SUFFIX -lboost_thread_pthread$$BOOST_THREAD_LIB_SUFFIX + +-Откройте файл C:\Qt\Qt5.4.0\Tools\QtCreator\bin\qtcreator.exe +-Нажмите "Файл"->"Открыть файл или проект..." +-Найдите "novacoin-qt.pro" и нажмите "открыть" +-Поставьте галочку напротив Android для armeabi-v7a(GCC 4.9, Qt 5.4.0), остальные галочки уберите +-Нажмите "Настроить проект" +-Возьмите ваш Android телефон/планшет(версия должна быть от 2.3 и выше) +-Перейдите в "Настройки"->"Приложения". +-Поставьте галочку напротив "Неизвестные источники" +-Перейдите в "Разработка" +-Поставьте галочки напротив "Отладка по USB" +-Подключите через USB ваш телефон/планшет к компьютеру. Не выбирайте опцию в телефоне/планшете "Включить USB-накопитель" +-Должно найтись Android устройство. https://yadi.sk/i/wFWZLxtie4DrN +Если Windows не может найти драйвер для устройства, то укажите самостоятельно в папке C:\Android\sdk\extras\google\usb_driver есть файл android_winusb.inf +-В QtCreator'е нажмите на зеленого робота и выберите Сборка: Выпуск +-Нажмите зеленую стрелку(Запустить) +-Выберите свой телефон/планшет и ждите завершения компиляции. +https://yadi.sk/i/hKHKL_Phe4EFL +-После завершения компиляции Novacoin-Qt будет установлен на ваш телефон/планшет и запущен. А в папке C:\Android\build-novacoin-qt-Android_armeabi_v7a_GCC_4_9_Qt_5_4_0-Release\android-build\bin будет файл QtApp-debug.apk. Переименуйте его в Novacoin-Qt-0.5.1-debug.apk и можно распростронять :) -- 1.7.1