New icon

Recently Google announced that they were adding a whole bunch of features to the Android Market which included lots of changes/improvements for app publishers.  One of those things was icons at different higher resolutions than the original which I think was 48×48 pixels or 72×72 pixels.  Soon the Android will be using higher res 512×512 pixel icons.  One can easily this is all in preparation for all the large screen devices e.g. tablets and TVs.

So over the pass weekend I’ve been working on updating my icon.  It’s not a major update but I did have to redraw the whole icon in order to do this.  And I have to say I’m quite happy with the results.  I didn’t think I would be able to do it given that I have no training at all but I’ve somehow managed to pull it off (at least I think so :) ).

So…for your viewing pleasure.

After a week of testing…

…things are going relatively good.  I’ve already found a couple of bugs (rather serious ones) in AMM by writing tests for the functionality that I thought were working.

I also found myself in the odd position of giving a short presentation about Robotium at the London Android Meetup.  It was a good experience and hopefully in the future I’ll be able to do more to contribute to the Android community.

I also started working on the 512×512 icon for AMM.  If anybody out there with some graphics skills that would like to help me with this it would be much appreciated.  I much rather been writing code than doing this mainly because I have pretty no idea what I’m doing so it’s pretty rough going.

And lastly I aim to get back on to writing more tests to cover the main functionality of AMM.  If all goes well I hope to be able to do a minor release for the bug fixes that I found before heading off for the Christmas break.

PS: With all the new assets required for the Android Market if anybody would like to help me out please contact me via email at madsquirrelapps@gmail.com or just leave a comment to this post.

Trying to find a testing framework

Over the last few days I’ve had a quick play with a couple of testing frameworks for Android.  Although not necessary they attempt to make testing for Android simpler.  The Google’s testing framework isn’t the most user friendly.

The two I’ve tried so far are Robotium and Robolectric.  The two serve different purposes and fundamentally work differently too.

  • Robotium
    • With the tag line “It’s like Selenium, but for Android” this is a black box test framework.
    • Simple to use with user friendly method calls to simulate user actions e.g. clickOnButton(buttonName)
    • Don’t need source code to work.  You can use Robotium to test an apk directly rather than having to compile your tests with your source code.
    • Because it is a black box UI test it runs relatively slowly compared to unit tests.
    • I found that the tests didn’t work properly when I ran them on my Nexus One.  This could be a problem because the emulator doesn’t have root access so I can’t test a lot of things properly if I can’t run the tests on my phone.
  • Robolectric
    • Robolectric lets you build unit tests for your Android UI.  It basically let’s you create tests that can run in a headless mode.
    • Tests run in the JVM rather than in the emulator so they run much faster.
    • The complete Android framework hasn’t been filled out for Robolectric so you may not be able to tests all types of Android functionality e.g. I found that ActivityManager hadn’t been implemented.
    • Open source, so if I wanted to I could implement the bits that were missing although this can be a bit involved and to do it properly you would require a detailed understanding of what you are testing.
    • Doesn’t work with custom controls.  Again you would need to build your own simulation of your custom view in order to do the test.
    • Because the JVM doesn’t have access to executables in the emulator e.g. su I am unable to test the main functionality of AMM.
Because of Robolectric’s limitations I am going to try to use Robotium for now even though it is much slower to run the tests.  Hopefully when Robolectric becomes more mature I’ll be able to use it.
I think it is important to point out that both these frameworks are relatively young but have good support from the developers.  When I posted questions on the their respective Google Groups I got response within 24 hours.  I think if I wasn’t testing an app that needed root access and only stuck to using the Android API both these frameworks would work quite well (for most of the time).  But I think at rate they are advancing we will soon have very good frameworks to work with.

Whoa! My code is bad!

So I’ve finally finished my exams and after a couple of weeks of relaxing and catching up on movies, tv shows, games etc. I’m trying to get back into coding mode.  So I’ve just loaded the AMM source and boy oh boy, my code is a freaking nightmare.  SO…I’ve set myself some goals.

  1. Write tests for AMM.  When I started writing AMM I didn’t know anything about unit testing apart from the general idea of the terminalogy.  Quite sad considering I’m actually a software tester by trade.  Anyway, in the last few releases of AMM it’s been increasingly hard to keep make sure that all the functionality is still working after each update.  So hopefully the tests will help increase the quality of my releases.
  2. Refactor my code.  Depending on how I go with this there may be significant rewrite of the code that may improve performance.  I will also look into simplifying the app.  At the moment I think it’s quite confusing.
  3. Release the source.  Once I’ve tidied things up a bit I plan on release the source for AMM.  I hope there will be some people interested in contributing some code.  I also hope to write a few posts about some of the code and my learning experience.  As a novice developer I had a lot to learn and I think there will probably a lot of people out there like me who may benefit from my experience.
Anyway, watch this space cause I’m back! :)

What’s up Mad Squirrel

Hi everyone.  It’s been while since I’ve posted.  I’ve been very busy with a new job and also studying for exams.  So AMM developing has had to take a back seat for a while.  However I am still happy to answer any questions that people may have.

I am also working on a list of things to do once I start working on AMM.  I’ve gotten some common request for new functionality so I’m going to work on that.  There is also an outstanding but about empty values:

java.lang.NumberFormatException: unable to parse '' as integer

So rest assured that I haven’t abandoned AMM and still plan on making it better.  There is definitely a lot of work left to do.  So thanks for your support and hopefully I’ll be able to put out a new release in the near-ish future.

The Motorola problem

Recently there were a couple of people Auto Clean Up mode and complaining that their phone calls were getting killed.  This confused me…a lot since they already had their phone apps in the whitelist.  Lucky for me there was a very helpful person out there that sent me some logs and did some proactive investigation.  Without which I would have never been able to work this one out.

It turns out Motorola phones have a process called com.motorola.hiddenmenu that shows some stats if you enter a secret code.  It seems killing it has some side effects.  So anybody using a Motorola phone with AMM then you should add com.motorola.hiddenmenu to the whitelist.

Here are a couple of links that the Googles provided that mention what this mysterious process does.

http://www.droidforums.net/forum/tech-issues-bug-reports-suggestions/2843-hidden-menu.html

http://androidforums.com/motorola-droid/19294-motorola-hiddenmenu-contacts-issue.html

Bug fix release (AMM 2.1.6)

As mentioned in the previous post there was a few bugs in AMM 2.1.5.1.  I’ve fixed them and the latest release can be had on the Market.

Known issues with AMM 2.1.5.1

Hi guys. It seems that the 2.1.5 1 release is having a few issues. I’ll try to fix them this weekend and put out a release. The issues are:

  1. MobClix error.  This is a rather annoying error with the MobClix ad provider.  I will be switching back to AdMob which is much more stable.
  2. Error with displaying a memory usage of a app.
  3. Ads are still displaying even with the Premium key installed.

Apologies for the inconvenience.  Unfortunately I’m busy with some personal stuff so I can’t fix this any earlier.

AMM 2.1.5.1 released

I’m just uploaded AMM 2.1.5.1 to the Market.  Here are the changes that I’ve made.

  • Added Mem Usage for each app in List view.  This is the memory footprint of the app so you won’t see the same amount of memory freed up if you kill apps.  In fact if it’s an empty application then you will actually see no change in available memory.  But it will give you an idea of how much memory the app could take up if it was running.
  • In List view there is the option to Sort by Name and Sort by Mem Usage.  Name is sorted by ascending order and Mem Usage is sorted by descending order.
  • Hide Whitelist from menu if Auto Clean Up is not selected.
  • Tidied up some rogue pop up messages.
  • Updated ad network.  Nobody likes ads but it is a necessary evil and it helps provide me with some real world benefits.  And I appreciate every click.

For the next release I am planning on splitting the Auto Clean Up mode from the oom killer functionality.  This means that users with rooted phones won’t have access to the Auto Clean Up mode anymore.  I think from all the complaints that I get this is something nobody will miss.  I might completely split it out into a separate app but that really depends on how much free time I have and also if I have any idea on how to make a better task manager.

AMM 2.1.5.1 Beta 3

This will be the last beta.  And I plan to release the final version tomorrow.  You get the update here.  As usual check the changelog for the updates.