Jenkins as CI for Android application installed on Ubuntu

I won't be going deep with some functions, but try to focus on simple steps allowing to run builds of android application on Jenkins server. What I'll be needing for this is just ISO file for netboot Ubuntu image, some computer (in my case it will be some nettop fanless computer with Intel Atom CPU and 1Gb of RAM), and of course some code repository (in my case - project on BitBucket). So - let's start... I won't be going through …

Java icon in dock during unit testing

Almost every dev using unit tests on his/her Mac spotted popping java icon on dock during running test. It can be totally annoying, especially when you have Android Studio/IntelliJ IDEA open in full screen. There are two simple ways to handle this. First: To your .bash_profile file add line: export JAVA_TOOL_OPTIONS="-Dapple.awt.UIElement=true" Add above argument to VM execution command on Android Studio/IntelliJ IDEA like on picture above on Configuration screen. Simple...

MacOS must-have applications

It's been a year since my last post, so I'm getting back, but with lighter content - here's the list of my must-have applications for Mac OS X. Android Studio (free) This is my working environment, so without this I would have no work ;) Genymotion (free/paid) This is easy to use Android emulator alternative, very fast, with different features, allowing fully control Android device. AirMail (paid) The best alternative IMO for Mail.app - very intuitive, simple, but powerful mail …

Media scanning

So far, after recording on downloading new media file in order to make system see this file developer had to fire broadcast: sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + context.getExternalFilesDir(null)))); But now, instead of scan proccess, one can get java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.MEDIA_MOUNTED The simplest solution to get rig of this exception is to use MediaScanner: public static void scanFile(Context context, String path) { MediaScannerConnection.scanFile( context.getApplicationContext(), new String[]{ path }, null, new MediaScannerConnection.OnScanCompletedListener() { @Override public void onScanCompleted(String path, …

Google Play services divided into small parts - AT LAST (UPDATE - 7.0)

So far, Google didn't allow developers to use a small parts of Google Play Services library - if you want to use just Google Signup - you had to pull whole big library, which end finally in 65K DEX method limit, or use some strange Gradle modification, which slow down building process. At last Google have listened to developers, and split Google Play Services into small libraries along with version 6.5.87 (current is 7.0.0).   For this version, you can …

Nowe możliwości nowego Gradle

Nowa wersja wtyczki Gradle została wydana 31 października, wraz z wersja 0.9 programu Android Studio, wprowadzając parę nowości. Gradle może od teraz automatycznie usuwać nieużywane zasoby. Dla deweloperów to przydatna opcja, gdyż do tej pory trzeba było do tego uzywać dodatkowych narzędzi. Dodatkowo kolejnym zyskiem jest to, że Gradle usuwa niewykorzystane zasoby nie tylko z naszego kodu, ale co ważniejsze z bibliotek, których używamy. Funkcja runProguard została zastąpiona przez minifyEnabled, gdzie dodatkowo jeszcze mamy shrinkResources. Kolejną fajną rzeczą, którą niedawno …

Genymotion, ADB i problemy

Po jednej z ostatnich aktualizacji zauważyłem ,że bardzo często występuje błąd: adb server is out of date. killing... cannot bind 'tcp:5037' ADB server didn't ACK * failed to start daemon * Po researchu okazało się, że Genymotion używa swojego własnego ADB, które nie do końca jest kompatybilne z najnowszym ADB z Android SDK. Ale na szczęście można to zmienić - w ustawieniach Genymotion jest zakładka ADB, gdzie można zdefiniować ściężkę do Android SDK, i od tej pory Genymotion będzie korzystała …

Generowanie zasobów graficznych w GIMPie

Znalazłem ostatnio w sieci świetny i prosty Script-Fu dla GIMPa do generowania Androidowych resource'ów. Oprócz standardowych ikon launchera, generuje także konfigurowalne grafiki - wystarczy ustawić wartości dla gęstości mdpi, resztę sam przeliczy i wygeneruje. Instalacja jest banalna - pobieramy plik (załączony w tym wpisie), rozpakowujemy go z prawami roota do /usr/share/gimp/2.0/scripts/ lub C:\Program Files\GIMP-2.0\share\gimp\2.0\scripts i restartujemy GIMPa. Skrypt można znaleźć w Script-Fu -> Android -> Save Android Icons.  W pozycji Android icons type można znaleźć następujące typy generowanych zasobów: Launcher Icons …

Nowe Google Analytics API v4 dla Androida

Od wersji 4.0 API Google Analytics dla Androida zostało przeniesione do Google Play Services (hura??!!). Używana wcześniej klasa EasyTracker została usunięta, ale nie oznacza to, że w prosty sposób nie można zaimplementować śledzenia. Do rzeczy... Oczywiście podstawowym krokiem implementacji nowego API jest posiadanie biblioteki Google Play Services. Dla korzystających z Gradle sprawa jest prosta: compile 'com.google.android.gms:play-services:+' Google Analytics API v4 posiada szereg klas pomocniczych i opcji konfiguracyjnych, ale całość wydaje się trochę niejasno opisana. Pierwszym krokiem jest utworzenie plików konfiguracyjnych. …

Zmiany w statystykach platformy Android

W ostatnich dniach coraz częściej się słyszy, że Google zabiera się za fragmentację Androida i producentów, i będzie wymuszać aktualizację systemu do najnowszych wersji. I stwierdzam, że to bardzo dobra tendencja. Ale na rynku ta tendencja też jest bardzo dobrze widoczna, widać to choćby po statystykach wykorzystania poszczególnych API Android.  Jak widać na powyższym wykazie, nadal istnieje pozytywny trend, co odzwierciedla się we wzroście udziału Androida 4.4.x KitKat o 60% w stosunku do poprzedniego miesiąca, z 13,6% aktywnych instalacji. Co do …