|
Photo from the Keramikos ancient cemetery, Athens, Greece |
This new post describes my findings while developing a small android
sightseeing application of about 4 MB in size, targeting English
speaking tourists already visiting, or planning to travel to Athens,
Attica, Greece using android version 4.3 devices, or newer.
On the dark side the development environment is so rapidly changing,
that after less than six months, half the code of the book I was reading
was already deprecated!
Moreover one has to daily download hundreds of MB, to update,
which can be sometimes distracting. The IDE is also too CPU demanding
and memory hungry, 8 GB or even more are recommended, when simulators are needed.
Editing the gradle settings for the specific project might save you from overheating
your CPU. Please read your console output and edit accordingly, here is only an instance:
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users
:# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m
-XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html
#sec:decoupled_projects
# org.gradle.parallel=true
Furthermore, one has to test each device screen size and android version separately at a time,
having all handheld devices available is rather impossible, which may make development
cumbersome and expensive. For one cannot upgrade the mobile or tablet OS to a newer version,
unless one pays the higher (almost double) price of a Nexus device!
On the bright side, the libraries and online services provided are extensive
and effectively help the programmer to integrate mapping and calculating the distance,
or route between two places. The documentation offers a basic skeleton of code samples
to build upon, and naturally one has to search how to fit all pieces of the puzzle together.
All in all, the initial target of java seems not to be met, the doctrine write once run
everywhere, is now not valid, since as far as I know, one cannot run the app on a traditional
linux java virtual machine, such as Web OS of a LG smart tv,
which I find rather disturbing.
Such proprietary solutions are successful and bring up to now certainly big corporate
profits, but I wonder whether and for how much longer in the future will the consumers
and international organizations tolerate it.