Intro
If you want to test KStars Lite without building then download the pre-built .apk file here (API 14, armeabi-v7a). Please, give me the feedback about it if possible (did you manage to run it, was the performance good enough, etc.)
Required dependencies
- Qt for Android - You can download it here. Later we will point CMake to the folder with Qt libraries compiled for Android.
- Setup Android environment:
- Follow the instructions provided here to setup the environment
- Most probably you will find ant in you distros repositories.
- I had problems with ant when using OpenJDK but no problems with the latest Oracle JDK (version 8)
- KF5 for Android - You have to build it yourself using following instructions (you can also find instructions here):
Now open the kdesrc-buildrc file in any text editor and change the following lines:cd /opt/android git clone git://anongit.kde.org/scratch/cordlandwehr/kdesrc-conf-android.git mkdir -p extragear/kdesrc-build git clone git://anongit.kde.org/kdesrc-build extragear/kdesrc-build ln -s extragear/kdesrc-build/kdesrc-build kdesrc-build ln -s kdesrc-conf-android/kdesrc-buildrc kdesrc-buildrc
- line 15: -DCMAKE_PREFIX_PATH= "path to Qt5 Android libraries. Example: /home/polaris/dev/Qt5.6.0/5.6/android_armv7"
- Line 42 "use-modules..." : If you want to save some time then comment it with # and add after it "use-modules kconfig ki18n kplotting". Thus only modules needed by KStars Lite will be built.
Now set environment variables and run the script:export ANDROID_NDK="Your path to Android NDK folder"
export ANDROID_SDK_ROOT=
"Your path to Android SDK folder"
export Qt5_android="path to Qt5 Android libraries. Example: /home/polaris/dev/Qt5.6.0/5.6/android_armv7"
export PATH=$
ANDROID_SDK_ROOT
/platform-tools/:$PATHexport ANT="path to your ant installation (/usr/bin/ant on Ubuntu)"
export JAVA_HOME="path to your JDK (choose from the folders at /usr/lib/jvm/ on Ubuntu)
./kdesrc-build libintl-lite extra-cmake-modules frameworks-android
Note: It is important to have libintl-lite as a first parameter. I spent some time on figuring out that it is not built if I don't specify it explicitly. It is a dependency of KI18n without which it won't be built!
Note 2: All the environment variables set here will be used for compiling KStars Lite so please make sure that they are set before proceeding further.
Building instructions
- Go to your KStars source folder and set the path to source directory:
export kstars_DIR=`pwd`
- Create in a desired location 2 folders - build for final build and export for files that will be included in apk along with the code (textures, data, icons etc.). After that set env. variable for export
cd export
export kstars_PRODUCT_DIR=`pwd`
- Now run CMake to configure make files:
I use ccmake to see which parameters are missing
/opt/android is a location where you downloaded and built KF5 for Androidccmake "${kstars_DIR}"
-DCMAKE_TOOLCHAIN_FILE=/opt/android/kde/install/share/ECM/toolchain/Android.cmake
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_PREFIX_PATH="${
Qt5_android}"
-DCMAKE_INSTALL_PREFIX="${kstars_PRODUCT_DIR}"
-DQTANDROID_EXPORTED_TARGET=kstars
-DANDROID_APK_DIR="${kstars_DIR}"/apk
-DBUILD_KSTARS_LITE=ON
-DKF5Config_DIR=/opt/android/kde/install/lib/cmake/KF5Config/
-DKF5Plotting_DIR=/opt/android/kde/install/lib/cmake/KF5Plotting/
Now this is important as you wont' be able to compile config file if you set this wrong. Use the path to KF5ConfigConfig.cmake on your system. This is needed to use host system kconfig_compiler rather than the Android version.-DKF5I18n_DIR=/opt/android/kde/install/lib/cmake/KF5I18n
Optional: Set Android API. By default is 14. Set if your want to compile for specific Android version (e.g. API level 9 for devices >= 2.3.1)-DKF5_HOST_TOOLING="Path to KF5Config cmake files e.g.
/usr/lib/x86_64-linux-gnu/cmake/"
Obviously cmake has to be executed in one line with all the parameters but without comments-DANDROID_API_LEVEL=14
- Compile KStars Lite by executing:
make
- You think we are done? Not yet :) Now we have to create apk file and bundle all resources in it.
Allow inclusion of all extra files in apkmake install/strip
make create-apk-kstars
- Your apk is in "build/kstars_build_apk/bin/" with the name "QtApp-debug.apk"
- If you want to install it to your device from your PC do the following:
- Check that your device has USB debugging switched on and connect it via USB to your machine.
- Make sure that adb is installed (or use one from android-sdk-linux/platform-tools/adb) and run:
adb install -d kstars_build_apk/bin/QtApp-debug.apk
- Well, that's it! You now should have KStars Lite apk file. If you want to compile KStars Lite for desktops just pass -DBUILD_KSTARS_LITE=ON to cmake and enjoy it :)
Hi! Good to se that it's working for you!
ReplyDeleteFWIW, I'd like to remind you that there's a kde-android@kde.org mailing list for whatever you might need:
https://mail.kde.org/mailman/listinfo/kde-android
Also note we also have a wiki, it would be good that you make sure that what is explained there matches your experience and if anything is missing feel free to extend it: https://community.kde.org/Android
Keep up the good work and happy hacking!
Thank you! I've already subscribed for this list.
DeleteI also added a discussion to the wiki page about libintl-lite and KI18n (nothing serious just "would be nice to have" idea)
Excellent work Artem! Really excited to see KStars final on Android. Will try to build it soon myeslf!
ReplyDeleteThank you Jasem! Would be nice if you test it on your device.
DeleteHi, you have done a brilliant job. Can you import the project in QtCreator?
ReplyDeleteI have been trying to import an Android project using cmake but its not happening.
Are you using QT creaator or some other ide for coding?
Thanks
Hi Ayush.
DeleteThank you for the kind words! Unfortunately there is no way now to compile CMake project for Android under QtCreator (at least I don't know any). You need cmake generator for Android like one that you use for compiling cmake project for your pc.
You might find this links interesting:
http://forum.qt.io/topic/35776/cmake-generator-for-ios-android-projects/12
https://github.com/LaurentGomila/qt-android-cmake
I use Qt Creator for working on project but have to compile Android build without it.
Regards,
Artem
Hi Artem,
DeleteI didn't find that links very useful as it increases my work. Yeah even I thought so as I couldn't find any cmake generators for Android.
Just to be clear when you say you use Qt Creator to work on project, you don't put any cmake arguments while importing the project in Qtcreator.
Also any external library will be included since you have already linked them in CmakeLists right?
Thanks,
Ayush Shah
Hi Ayush,
DeleteSorry for late reply.
I configure cmake project using Unix Generator with all arguments I need.
If you link to your lib in CmakeLists and the corresponding to this library .cmake file is found then it will be linked. I don't think that in this case there is any difference between running cmake in terminal or in Qt Creator.
Hope this helps.
Regards, Artem
This comment has been removed by the author.
ReplyDeleteHi Artem!
ReplyDelete"KStars Lite (22.05.16) API 14, armeabi-v7a" doesn't want to install.
Hi OMI.
DeleteThank you for interesting in KStars Lite! What device do you have? What is exactly the problem?
Regards, Artem
В начале установки, программа НЕ проходит верификацию: ошибка во время анализа пакета.
ReplyDeleteПланшет Acer B1-730HD, версия Android 4.4.2
Прошу прощения за то, что долго не отвечал. Как я понял, ваш планшет работает на x86 процессоре. Я пересоберу проект под x86 сегодня и загружу apk файл.
DeleteНе проблема :)
DeleteСпасибо!
Получается, что нужно учитывать тип процессора планшетов для будущих сборок KStars Lite.
Да, минус использования C++ на Android заключается в том, что для каждой архитектуры своя сборка. Я добавил небольшой виджет с ссылками на apk файлы для различных архитектур в верхнюю часть сайта. Вот для х86 https://drive.google.com/open?id=0B4b1uXgK0wdQZFZMM29GYzJnMVk
DeleteПожалуйста, напишите о результатах установки :) на устройствах с ARM процессором KStars Lite работает сейчас медленно т.к. очень много ресурсов съедает конвертация координат объектов. Эту проблему я начну решать чуть позже, но возможно на вашем девайсе все будет работать быстрее из-за х86-го процессора.
Установил и запустил.
ReplyDeleteВижу координатную сетку, границы созвездий, названия созвездий, планеты.
Нет отображения звёзд и дипскаев :(
Не работают кнопки на верхней панели меню.
Не работает меню в боковых панелях.
Так и должно быть) меню и кнопки сверху сейчас просто для демонстрации, а над звездами и дипскаями я начинаю работать.
DeleteНе сильно ли тормозит все, когда начинаете вращать звездную карту?
Какова текущая точность координат небесных объектов?
ReplyDeleteХочу сказать, что скорость реагирования главного окошка програмы весьма высокая, т.е. не жалуюсь на подтормаживание.
Было бы очень хорошо, если бы KStars Lite поддерживала связь с INDI сервером...
ReplyDeleteINDI будет, мы планируем скоро начать работать над этим.
DeleteТочность точно такая же, как и в KStars десктопном. Какие-то проблемы? Таймер пока не был портирован и т.к. установщика настроек пока еще нет используются мои координаты (широта 49.233333333333334, долгота 7)
Проблема в том, что чем выше точность отображения /пересчёта координат, тем больше требуется вычислительных ресурсов.
ReplyDeleteПоэтому я предлагаю внести в настройки пункт изменения точности координат.
Касательно координат места наблюдения, то их также можно снимать с GPS модуля планшета/смартфона.
ReplyDeleteОпределение координат по GPS модулю это одна из фишек, которую будет поддерживать KStars Lite :)
DeleteЗа идею с точностью спасибо, но пока не знаю, как это можно реализовать. Большая часть нагрузки приходится на функции sin() cos() и я не знаю, будут ли корректными вообще координаты если чем-то пожертвовать.
Пока я хочу сделать так, чтобы пересчитывались только координаты тех небесных тел, которые находятся в поле зрения небесной карты т.к. на данный момент координаты некоторых тел пересчитываются только для того, чтобы определить, что они не будут отображаться.
Пусть программа всегда считает экваториальные координаты центра карты, а во время движения карты пусть вообще отключает все объекты.
ReplyDeleteКакие объекты отключать во время движения можно будет настроить в программе. На данный момент по-дефолту во время движения отключены границы созвездий.
DeleteСчитать координаты центра а потом смотреть, что входит в поле зрения? Это имеете в виду?
Типа того.
ReplyDeleteНа самом деле подобные вещи уже делаются в KStars, просто в некоторых местах нужно немного доработать, чтобы все заработало еще быстрее.
DeleteБольшое спасибо за ваши советы и тестирование программы!
Жду следующую сборку для теста.
ReplyDeleteP.S. Живу в западном полушарии :)
В следующей сборке уже будут звезды и дипскаи.
DeleteА я сам из Казахстана но данный момент учусь в Германии :)
На максимальном поле зрения достаточно отображения 50-80 небесных объектов.
ReplyDeleteОк, приму к сведению. Скорее всего, сделаю настройку очень гибкой, чтобы каждый мог подобрать оптимальное соотношение производительность/качество.
DeleteДа, потому как мощность планшетов весьма разная.
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteЗдравствуйте. Смогли ли вы запустить KStars Lite?
DeleteДа, я запустил Latest update 22.06.2016 API 14, x86 на своём планшете Acer B1-730HD (версия Android 4.4.2).
DeleteОк, все работает стабильно?
DeleteКак бы да :)
Delete