Really chuffed my talk on Hardening your Android app ws accepted at Devoxx UK on 26th/27th March. Devoxx is a diverse conference for all Java technologies, so come along a say hi. Feel free to use the 10% off code  SPUK13.

DevoxxUK_SpeakerBadge_400x400

What’s in the talk:

  • Encryption and key management on Android
  • Using SSL better
  • Android Permissions made easy
  • Make it harder to pirate/repackage your app

Plus a bunch of other tips I’ve picked up along the way.

Developing  Android on Ubuntu? here’s how to define your JAVA HOME and PATH:

What you’ll need:

  • Path to your Java installation
  • Path to your Android SDK installation
  • admin password

On windows you’d edit your environment variables, on linux you edit the .bashrc file.

Run this command:
sudo gedit $HOME/.bashrc

prompted for admin password.

Add the following lines to your .bashrc. Please ensure where you installed the Java libraries and your android sdk. The below reflects default installation directories.

export JAVA_HOME=”/usr/lib/jvm/java-6-sun-1.6.0.24;”
export PATH=$PATH:$JAVA_HOME/bin
export PATH=$PATH:$HOME”/android-sdk-linux_86/platform-tools”

Save file.

Run this command to reload your .bashrc:
source ~/.bashrc

Test by typing adb version
You should get something like
Android Debug Bridge version 1.0.26

Upodate: this is now fixed in ADT r11. Kudos to ADT team.
After refactoring Activity name from MyContactDetailsPage to ContactDetailsPage I spend a age trying to figure out why I suddenly started getting ActivityNotFoundExceptions.
Manifest before:
<activity android:name=”.contacts.MyContactDetailsPage”
android:label=”@string/app_name”
android:configChanges=”locale” />
Manifest after:
<activity android:name=”contacts.ContactDetailsPage”
android:label=”@string/app_name”
android:configChanges=”locale” />
Looks the same right? or at least the activity name has renamed, yay, but however Eclispe refactor has missed the dot prefix, so Android couldn’t find the activity, hence the exception. This drove me crazy for a good half an hour, I didn’t notice the missing dot. I guess its a good reason to use fully qualified package names when defining activities.+
04-28 11:39:19.623: ERROR/AndroidRuntime(28696): FATAL EXCEPTION: main
04-28 11:39:19.623: ERROR/AndroidRuntime(28696): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.scottyab.android.proj/com.scottyab.android.proj.contacts.ContactDetailsPage}; have you declared this activity in your AndroidManifest.xml?
04-28 11:39:19.623: ERROR/AndroidRuntime(28696):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1404)
04-28 11:39:19.623: ERROR/AndroidRuntime(28696):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)
04-28 11:39:19.623: ERROR/AndroidRuntime(28696):     at android.app.Activity.startActivityForResult(Activity.java:2817)

Finally got around to creating the additional marketplace images and application signing  to publish my first android app findr.

It’s still a beta so expect a few issues.findr feature graphic mosaic

I’m working on:

  • better storage to cache downloaded data
  • allow saving to SD card
  • better compression when setting as wallpaper
  • Live wallpaper

Why not give this a whirl and resist the 1 star ratings (if you can) and instead post some feedback or feature requests below or tweet me.

Dropbox allows you to sync your files online and across computers. 2GB account is free! http://db.tt/Tk9RpcD (Shameless referral alert)