Attack of the Clones – Encountering an Android Market Plagiarist

On Thursday evening I received a message on Twitter drawing my attention to a new app on Android Market that bore an uncanny resemblance to Rectangular Software’s own Appmonger app for tracking app sales on Android Market. And by “uncanny resemblance” I mean “almost entirely identical”. So much so that both myself and other Appmonger users who looked at it were convinced that the distributor of this app had downloaded the Appmonger .apk, removed the licensing protection, made a few cosmetic changes and republished it under their own name. The feature set and UI structure were identical, the on-screen labels matched word-for-word and the charts were in most cases visually so close as to be almost indistinguishable. The final insult was that the app was made available as a free download whereas Appmonger sells for £2.49 / $3.99.

Appmonger vs. CrapmongerThe motivation for cracking a niche paid app and giving it away for free is not at all clear. It would have required a fair bit of effort since the Appmonger code is obfuscated. The person responsible had not added any adverts so they did not stand to derive any direct financial benefit from their actions. Perhaps they had added some malware to the app?

A visit to the website linked from Android Market revealed that the perpetrator is a woman in Texas. As well as promoting the app, the website included a support page that was remarkably similar to the Appmonger FAQ on the Rectangular Software website (question titles were identical but the answers had been reworded slightly).

On her blog she claimed to have spent $4,152.11 on developing “her” new app (seemingly the first and so far only app that she has released). On the surface this was an odd claim for an apparently pirated app. I could at least confirm that she had spent $3.99 because a search in Google Checkout revealed that the same person had legitimately purchased a copy of Appmonger on October 21st 2011.

The Plot Thickens

When I later had time to analyse the suspect app more closely, I discovered that things weren’t quite as they had originally seemed. Playing around with the app on an old phone (I didn’t trust it on my phone), I noticed that the whole experience had more rough edges than Appmonger. If this was modified Rectangular Software code then the modifications had been done clumsily and introduced issues that weren’t there previously. Digging around in the .apk, the structure of the app was not as familiar as I expected it to be. If this was modified Rectangular Software code then they had gone to some lengths to try to disguise that fact. Furthermore, I discovered that this app uses achartengine to generate at least some of its charts whereas Appmonger uses custom chart classes that I wrote myself. That at least explains why the line charts look different between the two apps.

There are enough differences for me to entertain the possibility that the person distributing this app did actually pay somebody to build it from scratch and what we’re looking at is a very uninspired clone rather than a pirated and modified version of the original Appmonger. Though why on earth anybody would spend thousands of dollars going to such lengths and not at least try to make something a bit different is beyond me.

On the other hand, there are also certain similarities that would be unlikely to occur without reverse engineering of the original app, particularly in regards to the back end services and the database (all table, column and index names are identical between the two apps except for a few extra columns in the clone).

Anybody is free to create an alternative Google Checkout reporting app and give it away for free if they so choose. As a competitor I might not like it but I’d have little cause for complaint. However, regardless of whether or not it includes any Rectangular Software code, this app takes the sincerest form of flattery to ludicrous extremes.


Android Market’s Unexplained Order Cancellations

In recent weeks we’ve been seeing higher incidences of cancelled orders on Android Market than usual. It seems to be due to a change in payment processing that Google has yet to explain to developers.

One way that Google has always differentiated Android Market from Apple’s App Store is by offering refunds to users. Initially there was a very generous 24-hour refund window that was subsequently reduced to a barely useful 15 minutes. When a user requests a refund, that order is assigned the CANCELLED status (it shows up in Appmonger‘s list view as red/pink) and the Google Checkout order history will show the message “Cancellation requested from phone” (or some non-English translation thereof) as below:

A Refunded Android Order

The other scenario in which orders could become cancelled was when the customer’s payment card was declined. Google gives the customer 7 days to provide alternative payment and then automatically cancels the order if payment is still outstanding. In this case the order is assigned the CANCELLED_BY_GOOGLE status (it shows up in Appmonger as orange) and the Google Checkout order history contains the text “The customer did not provide valid credit card information in repsonse to the email Google sent. This order was automatically cancelled”:

A Payment Declined Order

In the last couple of weeks we’ve been seeing a third kind of cancelled order. These are also assigned the status CANCELLED and therefore, like refunds, show in Appmonger as red/pink. But these cancellations are not due to customers requesting refunds. These cancellations occur several hours after the orders are made, well outside of the refund window. Nor are they a result of declined credit cards since Google Checkout shows that the authorisation succeeded. The salient text in the order history is “We could not complete your order in a timely fashion. Your order has been cancelled automatically. Please retry your purchase”:

An Untimely Order

Trying to get an explanation out of Google is like trying to get any other information out of Google – i.e. not a very rewarding exercise. There are some suggestions that these cancellations are related to the recently-introduced carrier billing but I don’t think that’s the case. The most benign theory is that Google is simply cancelling orders where the user fails to download the app. However, the wording of the e-mail sent to the customer implies that there is a payment processing problem on Google’s side. If that’s true then developers are losing money from lost sales.

Whatever the real reason for the cancellations, Google could easily clear up the confusion by communicating better with Android merchants.

Appmonger 1.6 – Foreign Currency Reconciliation & More

Appmonger 1.6 is now available from the Android Market. The major new feature in this release is “Order Reconciliation”. Basically, this is a mechanism for Appmonger to take advantage of the recently introduced monthly Android Market Sales Reports to make its figures more accurate. This is described in more detail below.

Another new feature is the option to exclude orders that haven’t been charged yet from your figures. Effectively this allows you to toggle between glass-half-full and glass-half-empty reports. In addition, there are several other minor improvements and fixes that make this a recommend update for users of previous versions.

Order Reconciliation

Back in February, Android Market added support for buyer’s currency transactions. To support this change, Google Checkout’s order report data changed to report values in the buyer’s currency rather than the seller’s currency. This change broke Appmonger 1.4.

Unfortunately, the data provided by Google Checkout now includes only the buyer’s currency value; it does not convert it into the seller’s currency nor does it provide any indication of the exchange rate used. To resolve this problem we introduced third-party currency conversions in Appmonger 1.5. While this addressed the immediate problem of the figures being completely incorrect in Appmonger 1.4, without access to the exact exchange rates used by Google, it could only ever be an approximation.

Appmonger Order ReconciliationSince then, Google has introduced Android Market Sales Reports and these do include the converted amounts and exchange rates. These reports are only updated once a month so they cannot completely replace the Google Checkout reports that Appmonger uses to provide timely sales information. What they have enabled us to do in Appmonger 1.6 however is to periodically replace the provisional currency conversions with the exact values according to Google.

Performing the reconciliation process once a month (when a new sales report becomes available) will maintain the accuracy of your reports by eliminating the drift caused by exchange rate differences. You can reconcile the order reports by selecting “Reconcile” from the application menu. You will need the username and password for your Android Market publisher account.

Appmonger vs Android Market Merchant Sales Reports

A new post over at the Android Developers Blog today introduces the Android Market’s new merchant sales reports. These monthly CSV reports are similar to those that you can already get from Google Checkout (the same reports that are used by Appmonger to generate its statistics) but seem to be a bit more informative. Among other information such as the device type, these new reports also include accurate conversions for buyer’s currency transactions. Currently Appmonger performs a best efforts conversion using third-party exchange rates because this information has not been available from Google until now.

At present, the only report available for developers to download from the Android Market is for March 2011 but the blog article indicates that previous reports back to January 2010 will be made available in due course and subsequent reports will be available every month. In isolation these reports are not sufficient to deliver Appmonger’s functionality as, unlike the Google Checkout reports, they are not available in near real-time (orders will not show up in a report for up to 40 days). However, there may be scope for Appmonger to use these reports in addition to the Google Checkout data to provide more accurate figures, perhaps by performing a monthly reconciliation of orders by updating the converted amounts as the exact data is made available. We’ll look into this possibility and keep you posted. Keep your eye on this blog.

Android Market Needs Promotional Codes

Google has unveiled several incremental improvements to the Android Market in recent weeks and months. These welcome changes include availability in more countries, support for additional screenshots, longer descriptions, changelogs, related app suggestions, local currency conversion for prices, and carrier billing. All good stuff, but there is still more that needs to be done to make the Android Market truly fit for purpose. Support for even more countries is one thing. The long-awaited web interface is another. These proposed enhancements have many vocal proponents but there are other areas that need to be addressed that haven’t received as much attention.

Android developers currently find it difficult to give away free copies of paid apps, something which is necessary for providing review copies or simply for running promotional give-aways. The obvious approach of e-mailing the .apk file to the lucky recipient is sub-optimal. It’s more work for the user and apps that don’t use the licensing service are susceptible to piracy, while those that do won’t work because the licensing service will not authorise copies that were not acquired via the Android Market. Furthermore, the recipient will not be able to download updates from the Market.

The solution to this dilemma is to allow the developer to generate unique promotional codes that can each be redeemed for a free or discounted licensed copy of the application. Apple’s App Store provides this functionality for iOS developers. For each release of an app the developer can create up to 50 promotional codes. This is a somewhat arbitrary limit but it is certainly better than zero.

Adding this feature to the Android Market has obvious advantages for developers and for users who will have the opportunity to download free or discounted apps. If it leads to developers selling more apps there will also be financial rewards for Google as they will be taking their 30% slice from a bigger pie.

Appmonger – Google Checkout Reporting App for Android Merchants

If, like us, you sell apps on the Android Market, you may be interested in our latest Android application. Appmonger is a tool for analysing sales data from Google Checkout. It downloads order reports and shows up-to-date sales figures and various graphs on your phone. You can filter data by time period, product and country. So if you want to know which of your apps made the most money in Italy last week, the information is literally at your fingertips. In version 1.0 there are six different charts allowing you to track such information as daily revenue, refund rates for each app, and which hour of the day generates the most revenue. We’ve also included a widget that displays today’s sales figures on your phone’s home screen so that you can see how you are doing at a glance. See our Appmonger page for full details.

We intend to extend the functionality in future versions and welcome any feedback and suggestions that you have.  For version 1.0 we have set an introductory price of £1.99. Head to the Android Market to buy.

Android Market Set to Expand to 48 Countries

Rectangular Software’s Android apps will soon be available in several new countries thanks to Google’s recently announced expansion of the Android Market. A few days ago Google e-mailed Android merchants to give them the heads-up on this forthcoming change but did not mention which countries would be included. We now know, provisionally, where paid-for apps will be arriving in the coming weeks.

One of the biggest criticisms of Android, compared to Apple’s iOS devices, has been the relatively few countries in which users can purchase paid apps. Google has clearly been working hard on rectifying this situation because the upcoming expansion is no token gesture. The number of supported countries jumps from 13 to 48 and now includes 25 of the 27 EU countries (all except Malta and Cyprus) and the big markets of India, Brazil and Mexico.