CommonsWare
commonsware.com · Personal blog · on HN since 2008
Mark Murphy of CommonsWare writes about Android development, app signing, storage changes, and platform previews, and sells the Busy Coder's Guide books.
What HN saysCommenters recommend his Busy Coder's Guide to Android Development for its continuous updates and call him one of the most knowledgeable Android app developers.
43HN people shared it
24linked it in comments
52stories submitted
1.5Kstory points
9 months agolast shared
2008people per year2026
Most-shared posts
- 1Uncomfortable Questions About App Signing8 people · 105 points · first shared 2020 · 37 comments on HN
- 2The Busy Coder's Guide to Android Development6 people · 6 points · first shared 2009 · 1 comments on HN
- 3Homepage4 people · first shared 2010
- 4Initial Thoughts on Android Code Transparency3 people · 5 points · first shared 2021 · discussion on HN
- 5Windows 11, Amazon, and Uncomfortable Questions2 people · 467 points · first shared 2021 · 243 comments on HN
- 6The Death of External Storage in Android2 people · 3 points · first shared 2019 · 1 comments on HN
- 7YouTube-Dl, and Avoiding Pointless Copyright Problems2 people · 2 points · first shared 2020 · discussion on HN
- 8Random Musings on the M Developer Preview: The Ugly (Part One) [June 2015]2 people · 2 points · first shared 2015 · discussion on HN
- 9Libhoudini what it means for developers2 people · first shared 2016
- 10Blog2 people · first shared 2012
- 11Uncomfortable Questions About Android Developer Verification1 people · 400 points · first shared 2025 · 307 comments on HN
- 12Google I/O 2021 and Uncomfortable Questions1 people · 224 points · first shared 2021 · 145 comments on HN
- 13The Death of External Storage: Where's Google?1 people · 194 points · first shared 2019 · 254 comments on HN
- 14Harmony OS and Compatibility1 people · 38 points · first shared 2019 · 33 comments on HN
- 15TV: Now What?1 people · 14 points · first shared 2023 · 8 comments on HN
What HN people wrote when they linked it
Dove · 2012-12-08
Do you have any good pointers or references for Android dev in these kinds of environments?
No, not really. I haven't really done much of it myself, just seen a lot of chatter about it. The specs I see, compared to the average smartphone app, have a lot more in the way of very specific UI specs and binary protocols, and less in the way of reposting tagged pictures to Facebook. So it's a different part of the system to study.
I can recommend http://commonsware.com/ for coming up to speed on the system in general. One of the best references out there, and it stays up to speed with a rapidly-evolving ecosystem.
acj · 2010-05-14
What books do you recommend?
I've depended entirely on the web for learning Android development, but I've heard good things about the Android books from http://commonsware.com/. He has some helpful (free) tutorials available as well.
What is the best part about working with Android?
For me: flexibility and transparency. I like to get my hands dirty and gain a deeper understanding of the system, and it's quite helpful having (1) access to the source code for almost the entire system and (2) root access on the device. Those things likely won't matter when you're writing your first Android app, but it will matter when you're doing something uncommon or complex.
Are there are any CoreData like persistence frameworks?
I haven't needed any for my own apps, but the framework has integrated data storage engines. I imagine that someone has built a CoreData-like layer that uses them. This link might be helpful: http://stackoverflow.com/questions/371538/any-good-orm-tools-for-andro…
Is three weeks, give or take a few days, too aggressive a deadline for doing a port from iPhone to Android?
Can you give us any more details? Your time commitment will vary significantly depending on the complexity of the app. If it's a 3D game, then three weeks might not cut it. If it's a reasonably straight-forward app that doesn't have a ton of features, then three weeks will be ample time given your prior experience.
A few other thoughts: don't be afraid of Android UI…
yareally · 2014-01-17
Only Android Book I would get is "The Busy Coder's Guide to Android Development[1]" as it comes with continuous updates. It's also by one of the most knowledgeable app developers in the Android Community. It's worth it alone for how much he cares about backporting within the book and not just supporting the latest versions of Android.
Android development has not drastically changed since ICS, but there's enough that changes still that I would be reluctant to waste money on a book that does not update regularly.
[1] http://commonsware.com/Android/
swanson · 2014-01-17
There is a method `onCreateThumbnail()`[1] that is supposed to allow you to do this, but it doesn't appear to work (reported bugs in 4.0-4.2). The best you can get at the moment is to blank out the thumbnail[2] (for security reasons) or opt out of being shown in the list [3].
[1]: http://developer.android.com/reference/android/app/Activity.html#onCre…
[2]: http://commonsware.com/blog/2012/01/16/secure-against-screenshots.html
[3]: Use android:excludeFromRecents="true"
nextparadigms · 2011-07-30
There are several good Android books out there, you can Google for top 5 Android books. A lot recommend a subscription to this site where you also get these 3 books in that price:
http://commonsware.com/books
And you can try these sites for code snippets on anything:
http://www.anddev.org/
http://www.androidsnippets.com/
danest · 2011-05-27
I have used this book and it has helped a lot http://www.amazon.com/Professional-Android-Application-Development-Pro…
I heard good things about this http://commonsware.com/ so you might want to check it out.
m0nastic · 2011-04-21
These are good (and updated frequently online): http://commonsware.com/
petedoyle · 2025-06-08
> The absolute nightmare is about giving Google the root signing key of your application
I wish more people talked about this. At Amazon, I helped with the early threat modeling around adoption of "App Signing by Google Play", which requires sending your app's root signing key to Google (and is now required, with no publicly-available opt-out for new apps.) It would have added some nice things for Android devs: app bundles, smaller downloads, instant apps, etc.
That said, we imagined the following scenario, and were unable to find a reasonable mitigation at the time:
It seems plausible the US government could send a NSL (or similar) to Google and force them to distribute modified APKs for apps like Signal (ex: to exfiltrate keys). This would be nearly impossible to detect, especially if the modified APK were distributed to only an individual user, or a small group. A few people raised concerns [1], but I don't recall Google ever giving a reasonable response.
[1] https://commonsware.com/blog/2020/09/23/uncomfortable-questions-app-si…
Edit: clarify no opt out applies to new apps
mcintyre1994 · 2021-05-02
The article linked from this one is worth a read: https://commonsware.com/blog/2020/09/23/uncomfortable-questions-app-si…
They claim that because Google strips the developer signature and signs it themselves, they can modify the app and re-sign it. They suggest that an authoritarian regime could coerce Google into serving modified versions of eg. E2E encrypted messaging apps to people of that regime’s choice as a condition of doing business there.
Does anyone know if the iOS App Store has the same vulnerability? I know that they do clever things like universal apps and App Clips, but I’m not sure if they achieve it by stripping developer signatures and re-signing. Alternatively, since all signing certificates must be issued by Apple could they technically re-sign any app anyway if they’re coerced into holding onto the private keys they issue? I’ve never written an app in their ecosystem so I’m not sure exactly how it works or if they have an opportunity to do that.
jnbiche · 2015-08-21
If you know some C# and C++, my recommendation is to dive straight into the respective native SDKs (Android and iOS) and not let yourself waste time or get distracted by frameworks like Cordova or Titanium (or whatever they call it now). Cordova can be a good strategic choice for certain types of companies making certain types of apps, but if you want to learn mobile development, my opinion is that they'll just be a distraction (and I say this as someone who tried and floundered using this approach until I committed myself 100% to native SDKs).
For Android, an excellent resource are the example apps found at the CommonsWare website, who also have an accompanying book. Download these examples and start playing around with them, or use whatever approach you used to learn webdev [1].
Otherwise, Google's docs are pretty high quality.
Finally, even if you're a Vim/emacs kind of guy (like I am), I recommend using Android Studio for Android development, at least at first. It has some excellent resources for learners (like a very good autocomplete).
1. http://commonsware.com/Android/
wallflower · 2011-08-08
With all due respect to the developer who wrote this post, standalone apps are relatively easy - you start jumping into the rabbit hole when you start getting into server API integration and doing processing off the main thread (AsyncTask, IntentService, Service, unit tests lions tigers oh my), layouts that don't suck, and custom animations... Making an Android app look sexy/good is an art in itself that I am still trying to learn.
At a certain point of app complexity, writing an Android app becomes less about writing an Android app and more about writing a well-structured, async/decoupled and performant app in Java.
Why is iPhone development relatively easy? Well, for one thing, the territory is well trodden. And it is based on the beautiful foundational framework of Cocoa, which has its roots in NeXTSTEP. Cocoa masters have been able to switch to iOS and tell people/show people how to code properly. Cocoa has been around for a while; the Android SDK is a WIP (but it has come a long, long way since Cupcake). Also, Java lacks compiler-level support for/doesn't have blocks and categories (two of the things that make Objective-C a joy). And, love it or hate it, you will start to miss CoreData when you don't have anything near equivalent on Android.
Some of my favorite resources for learning Android:
The best book for the money (frequently updated, author has huge SO reputation)
http://commonsware.com/Android/
Reto Meier's blog
http://blog.radioactiveyak.com/
Styling…
captn3m0 · 2025-03-30
The ACTION_MAIN loophole has been written about before: https://commonsware.com/blog/2020/04/05/android-r-package-visibility-h…
Google refuses to patch this. I wonder what would happen if you submit it to the Android VDP as a permission bypass.
There’s also this SO question by the author about the bypass: https://stackoverflow.com/q/79527331
lovelearning · 2022-07-13
Some time ago, youtube-dl, a downloader tool for YT, faced legal troubles from RIAA simply for showing a copyrighted video URL in a demo. Something about anti-circumvention. [1]
Given that this project is an alternative to Adobe's features, the latter may feel tempted to claim this is a tool intended for copyright circumvention.
[1]: https://commonsware.com/blog/2020/10/24/youtube-dl-avoiding-pointless-…
iggldiggl · 2021-10-05
Something is mentioned here: https://commonsware.com/blog/2021/04/23/random-musings-android-12-deve… – I think it was something stupid like ACTION_VIEW only offering your default browser plus any apps explicitly whitelisted by the respective domain owner, so any third-party apps are out and need to be manually launched. (Maybe you could set a helper app as your default browser to work around this, but if I really remember the above correctly, it's still rather grrrrr...)
0xcde4c3db · 2020-01-12
I'm not sure how mainstream of an opinion this is, but I'd suggest skipping Google's own tutorials. It would be reasonable to suppose that a multi-billion-dollar corporation that massively benefits from a thriving developer community would put out first-rate documentation, but I was quite disappointed by how much of an inconsistent and incomplete mess those tutorials are.
While I've only briefly skimmed it myself, I've heard a lot of good things about The Busy Coder's Guide to Android Development. Newer editions require a $20 "subscription", but older ones are available for free [1].
[1] https://commonsware.com/Android/4-2-free
yla92 · 2017-01-30
For Android dev related, I follow
Jake Wharton : https://github.com/jakewharton , https://twitter.com/JakeWharton - He is well known in Android community. He has authored a lot of great libraries personally and under Square.
Mark Murphy - https://commonsware.com/blog/
Chris Banes - https://chris.banes.me/
Cyril Mottier - https://cyrilmottier.com , https://twitter.com/cyrilmottier
Dan Lew - http://blog.danlew.net/
Donn Felker - http://www.donnfelker.com
Mark Allison - https://blog.stylingandroid.com
Jesse Wilson - https://publicobject.com/
Roman Nurik - https://twitter.com/romannurik
versteegen · 2016-07-27
Machine code translation is exactly how Intel Atom Android phones support apps containing native ARM code. Intel has a translator from ARM to x86 or x86_64 called Houdini. (I never managed to find any detailed information about it, it's propriety). Even if you're developing an app for Android using the NDK you may not realise that your phone doesn't have an ARM processor. Few people bother to ship x86 binaries, and the fact that works so well is why they still don't even as x86 devices become more common (they're mostly tablets). Compatibility is around 80% of apps [0], and the performance hit is somewhat substantial (e.g. 2x) but doesn't matter for most apps.
[0] https://regmedia.co.uk/2014/04/30/watt_compatibility_large.jpg
[1] https://commonsware.com/blog/2013/11/21/libhoudini-what-it-means-for-d…
christop · 2014-11-17
On that topic, this is a much better talk:
http://commonsware.com/presos/8469_Murphy.pdf
kefs · 2013-07-26
More info for devs from Mark Murphy/Commonsware:
http://commonsware.com/blog/2013/07/26/app-ops-developer-faq.html
yawn · 2008-06-21
There's this book too:
http://commonsware.com/Android/index.html
webmobdev · 2021-06-27
we don’t modify and distribute your application code without your knowledge and approval º
Notably, this person used “don’t” and “will not”… as opposed to “can’t” and “cannot” º
So the next stage in the plan for the tech giants is to now take control over all our software applications and really lock them down too?
With locked iDevices and smartphones that don't allow you to install the system software you want, that can be crippled and made unusable by the manufacturers, and have nearly unrepairable hardware (with lobbying opposing right-to-repair legislations), the tech giants have ensured that we have already lost control over our hardware devices. Today we only "own" them in name.
The article highlights a real worry - It is not at all far fetched to believe that by wrapping apps with their own proprietary codes, the tech giants can control and steal our app data (a very likely goal of all the tech giants) and even modify the apps to cripple them or convert it to a malware (at the behest of over-reaching governments).
This just adds to my worry, and ire, at App Stores, and provides a new perspective of them I had never considered before.
º https://commonsware.com/blog/2020/09/23/uncomfortable-questions-app-si… .
anderspitman · 2020-06-16
syncthing is an incredible piece of software.
It should be noted that:
* "Security" changes in recent versions of Android seem designed to kill use cases like syncthing. See links below.
* There is no iOS version, as near as I can tell because iOS is already where Android is headed.
The crux of the problem is syncthing is a single golang binary, but the only way to manage filesystem permissions on iOS (and now Android) is through tightly controlled OS dialogs, and there is no way to do this from golang. There aren't even NDK APIs for it. The closest thing Android is providing to an escape hatch is "all files access" [5], for which your app has to go through an approval process in order to be put on the play store. If you watch [2], GOOG makes it very clear that they want to minimize the number of apps that obtain this permission. It's unclear to me whether apps installed through FDroid or side-loaded will be able to use that permission at all, or if the APKs must be signed.
I'm all for improved security, but never at the cost of controlling what I am ABLE to do with my computer.
It's sad that our operating systems are turning into gatekeepers between developers/users and the hardware they "own".
[0]: https://github.com/syncthing/syncthing-android/issues/29
[1]: https://www.xda-developers.com/android-q-storage-access-framework-scop…
[2]: https://www.youtube.com/watch?v=UnJ3amzJM94&
[3]: https://news.ycombinator.com/item?id=19506544
[4]:…
m45t3r · 2020-01-06
> Google Play already does binary translations from ARM into x86.
It is not libhoudini [1]? AFAIK, libhoudini is not something that Google Play embeds on binary for distribution, it is a library that ships on Android x86 devices (and another AFAIK, it is proprietary from Intel so they only ships on Intel devices).
So while Google could have a similar approach if they want to ship another kernel for Android, the work is not as trivial as you seem to think.
> Also the whole point of ISO C, ISO C++, OpenGL, Vulkan, OpenSL is to be OS independent.
Yeah, it doesn't mean you don't need to recompile your software. You can't take an game written for Windows in OpenGL and run in Linux without recompile. This is my point.
> Game studios are not a charity, they develop games for profitable markets, not for large userbases that don't pay for games.
Well, Android seems to be pretty profitable? It is not the most profitable platform sure, however it sure makes enough money because almost everyone ends up creating games for both iOS and Android.
You seem to imply that making games to Android is not profitable, however it sure seems to be. Or Epic Games, EA, ActionVision, and many other big names in game studio are a charity.
[1]: https://commonsware.com/blog/2013/11/21/libhoudini-what-it-means-for-d…
gte910h · 2010-05-14
Three weeks is pitifully small when coming online with android. The tools are much much less good than iPhone.
You're not really programming java per se, as a java like language missing half the API's you're used to. If you PM me a link to the iPhone app, I'll tell you my guess at a timeframe.
Secondly, the G1 (which runs 1.6) is not the lowest common denominator at the time. While it does have some of the wimpiest specs, other phones, such as the Moto Cliq, are still stuck on 1.5.
Additionally, I suggest you check out http://commonsware.com/Android/ which had a nice section on scripting on the phone, which was invaluable for testing out UI design alternatives.
Not seeing your iPhone app, I honestly suggest telling them "This could take between 2 and 10 weeks, and will likely take more like 5 or 6".
While you're probably keen on eclipse, also check out how to develop without it, so you can use the debugger without eclipse getting in the way. It is a tad bit unreliable at times.