All blogs / Mobile / iOS / Android
CommonsWare
Android app development books
- Posts
- 974 from 27 Apr 2010 to 28 Oct 2026
- Posting
- weekly (66 in the last year)
- Kind
- personal blog
- Feed
- https://commonsware.com/blog/atom.xml
2026 57
- 28 October 2026 Artifact Wave
- 21 October 2026 Artifact Wave
- over 500 new artifact versions
- Older Posts
- 14 October 2026 Artifact Wave
- my Pedal Assist Coding newsletter
- 7 October 2026 Artifact Wave
- over 400 new artifact versions
- 23 September 2026 Artifact Wave
- over 150 other artifact updates
- 16 September 2026 Artifact Wave
- 800+ artifact updates
- Documentation… In an AI World
- 9 September 2026 Artifact Wave
- 26 August 2026 Artifact Wave
- SDKs… In an AI World
- 12 August 2026 Artifact Wave
- From Wear to Pebble
- 29 July 2026 Artifact Wave
- Goodbye, cw-json! Hello, kPointer!
- 22 July 2026 Artifact Wave
- 15 July 2026 Artifact Wave
- 8 July 2026 Artifact Wave
- 1 July 2026 Artifact Wave
- 24 June 2026 Artifact Wave
- Malware-Laden GitHub Follow-up
- Is Maven Central *Too* Central?
- 17 June 2026 Artifact Wave
- cw-json 0.4.0
- 3 June 2026 Artifact Wave
- 20 May 2026 Artifact Wave
- 13 May 2026 Artifact Wave
- Why Codeberg?
- 5 May 2026 Artifact Wave
- cw-json 0.3.0
- cw-json 0.2.0
- 22 April 2026 Artifact Wave
- #OpenToWork
- Announcing: "Pedal Assist Coding" Newsletter
- 8 April 2026 Artifact Wave
- Announcing cw-json
- 1 April 2026 Artifact Wave
- Random Musings on the Android 17 Beta 3
- 25 March 2026 Artifact Wave
- 18 March 2026 Artifact Wave
- Coding Agents and Developer Security
- 11 March 2026 Artifact Wave
- What If... AI Compute Costs Soar?
- Random Musings on the Android 17 Beta 2
- 25 February 2026 Artifact Wave
- Random Musings on the Android 17 Beta 1
- 11 February 2026 Artifact Wave
- Write for Your Readers... Even If They Are Agents
- 29 January 2026 Artifact Wave
- 28 January 2026 Artifact Wave
- My AI 'Bright Lines'
- 14 January 2026 Artifact Wave
2025 48
- 24 December 2025 Artifact Wave
- 17 December 2025 Artifact Wave
- Compose GitHub Repositories as Malware Vectors
- 10 December 2025 Artifact Wave
- 3 December 2025 Artifact Wave
- RemoteCompose: Cute or Crucial?
- 26 November 2025 Artifact Wave
- 19 November 2025 Artifact Wave
- 5 November 2025 Artifact Wave
- 22 October 2025 Artifact Wave
- Again, Be Wary of Random Gradle Projects
- 8 October 2025 Artifact Wave
- Busting drawWithCache() in Compose
- 24 September 2025 Artifact Wave
- 17 September Lifecycle/SavedState Mini-Wave
- 10 September Artifact Wave
- 27 August Artifact Wave
- Uncomfortable Questions About Android Developer Verification
- Random Musings on the Android 16 QPR2 Beta 1
- 20 August Artifact Wave
- 29 July 2025 Artifact Wave, Part Two
- 29 July 2025 Artifact Wave, Part One
- 16 July 2025 Artifact Wave
- 9 July 2025 Artifact Wave
- 2 July 2025 Artifact Wave
- 18 June 2025 Artifact Wave
- 4 June 2025 Artifact Wave
- Once Again, Uri Access Lifetime Is Shorter Than You Might Think
- 28 May 2025 Artifact Wave
- Google I|O 2025 Artifact Wave
- New Jetpack Artifacts: 7 May 2025
- New Jetpack Artifacts: 30 April 2025
- New Jetpack Artifacts: 23 April 2025
- New Jetpack Artifacts: 16 April 2025
- Spotify's Android SDK, the Redirect URI, and Valid Schemes
- New Jetpack Artifacts: 9 April 2025
- New Jetpack Artifacts: 2 April 2025
- New Jetpack Artifacts: 26 March 2025
- New Jetpack Artifacts: 19 March 2025
- New Jetpack Artifacts: 12 March 2025
- New Jetpack Artifacts: 26 February 2025
- Random Musings on the Android 16 Beta 2
- New Jetpack Artifacts: 12 February 2025
- New Jetpack Artifacts: 5 February 2025
- New Jetpack Artifacts: 30 Jan 2025
- Random Musings on the Android 16 Beta 1
- New Jetpack Artifacts: 15 Jan 2025
- Compose Design Systems: Have a Plan
2024 20
- New Jetpack Artifacts: 26 Dec 2024
- Random Musings on the Android 16 Developer Preview 2
- New Jetpack Artifacts: 12 Dec 2024
- New Jetpack Artifacts: 11 Dec 2024
- New Jetpack Artifacts: 27 Nov 2024
- App Functions and the Android 16 DP1 Musings
- New Jetpack Artifacts: 20 Nov 2024
- Random Musings on the Android 16 Developer Preview 1
- New Jetpack Artifacts: 13 Nov 2024
- How androidx.tech Worked
- New Jetpack Artifacts: 1 Nov 2024
- Hey, Where Did My Artifacts Go?
- android.tech Shutdown
- How to Ripple Outside of Compose Material
- When remember() Does Not Remember, Consider if()
- Requiem for a Ranch
- Random Musings on the Android 15 Beta 2
- Random Musings on the Android 15 Beta 1
- Random Musings on the Android 15 Developer Preview 2
- Random Musings on the Android 15 Developer Preview 1
2023 18
- Security and Third-Party Transports
- TV: Now What?
- Testing the Limits of Anti-Competition
- The Omega and the Alpha
- Movin' On Up
- The Summer of Silence
- Android or iPhone?
- Dynamic Books
- Settling on a Business Model
- Waiting for a Chasm-Crosser
- Text Will Not Always Scale
- Random Musings on the Android 14 Developer Beta 2
- Random Musings on the Android 14 Developer Beta 1
- Random Musings on the Android 14 Developer Preview 2
- Random Musings on the Android 14 Developer Preview 1
- Applying distributionSha256Sum to Gradle and Android Studio
- Gradle Wrapper Supply Chain Attack
- ActivityPub and Android
2022 8
- When It Comes to Twitter, Have a Plan
- Issue Trackers and the "Can't Deliver Broadcast" Bug
- Random Musings on the Android 13 Developer Beta 1
- Random Musings on the Android 13 Developer Preview 2
- Random Musings on the Android 13 Developer Preview 1
- Navigating in Compose: Criteria
- Compose for Wear: CurvedRow() and CurvedText()
- Tiramusu Thoughts
2021 38
- Final Books, Free for Everyone
- "Elements of Android Room" Version 0.9 Released
- About the Environment Undeprecations
- Android 12 Wallpaper Changes Recreate Your Activities
- Wallpaper Changes = Configuration Changes?
- Random Musings on the Android 12L Developer Preview
- "Elements of Android Jetpack" Version 2.2 Released
- Turning the Page
- "Exploring Android" Version 2.2 Released
- "Elements of Android Room" Version 0.6 Released
- Inside Code Transparency: The Verification Process
- Random Musings on the Android 12 Beta 3
- "Elements of Android Jetpack" Version 2.1 Released
- Inside Code Transparency: The JWT File
- Initial Thoughts on Code Transparency
- Windows 11, Amazon, and Uncomfortable Questions
- Random Musings on the Android 12 Beta 2
- "Exploring Android" Version 2.1 Released
- Random Musings on the Android 12 Beta 1
- Google I|O 2021 and Uncomfortable Questions
- Random Musings on the Android 12 Developer Preview 3
- "Elements of Kotlin" Version 1.0 Released
- "Elements of Kotlin" Version 0.9 Released
- Checking for Poisoned Projects, Again
- Random Musings on the Android 12 Developer Preview 2
- "Elements of Android Room" Version 0.5 Released
- "Elements of Kotlin Coroutines" Version 0.3 Released
- Don't Put All Your Eggs in One Basket
- Random Musings on the Android 12 Developer Preview 1
- Using Repository Artifact Safelists in Gradle
- Notes on the Jetpack Compose alpha11 to alpha12 Upgrade Process
- Quieting the SQL Syntax Warnings
- Data Over Sound
- "Elements of Android Room" Version 0.4 Released
- Checking for Poisoned Projects
- "Elements of Kotlin" Version 0.4 Released
- ACTION_SEND, the Chooser, and ClipData
- "Elements of Android Jetpack" Version 2.0 Released
2020 64
- "Exploring Android" Version 2.0 Released
- "Elements of Android Jetpack" Version 1.9 Released
- Seeing If Your App Has the Play Core Vulnerability
- Initial Responses to Uncomfortable Questions
- "Elements of Android R" FINAL Version Released
- A Poor Default (Or: Why Your Button Does Not Work)
- Where Compose Could Go
- "Exploring Android" Version 1.9 Released
- "Elements of Android R" Version 0.4 Released
- youtube-dl, and Avoiding Pointless Copyright Problems
- Android Studio 4.1, Library Modules, and VERSION_CODE
- Android Summit Presentation Materials
- "Elements of Kotlin" Version 0.3 Released
- More on Android Summit 2020!
- Uncomfortable Questions About App Signing
- App Security at Android Summit 2020!
- Android R One-Time Permission Problem Really an Android Studio Problem
- Getting Android Studio 4.2 Canary To Run Again
- Android R One-Time Permission Expiration Sometimes Kills Alarms, Jobs, More
- "Exploring Android" Version 1.3 Released
- "Elements of Android R" Version 0.3 Released
- ACTION_IMAGE_CAPTURE and Android R
- "Elements of Android Jetpack" Version 1.1 Released
- Uri Access Lifetime: Still Shorter Than You Might Think
- Upgrading to dev15 of Jetpack Compose
- With <intent-filter>, Only Advertise What You Can Fulfill
- "Exploring Android" Version 1.2 Released
- Multipart Uploads with OkHttp... and a Uri
- "Elements of Android Jetpack" Version 1.0 Released
- "Elements of Kotlin Coroutines" Version 0.2 Released
- Count Your SAF Uri Persisted Permissions!
- Random Musings on Android 11 Beta 1
- @Preview Annotation Properties
- Reflection and Composables
- Upcoming Presentation on Jetpack Compose
- "Elements of Android Jetpack" Version 0.9 Released
- R Raw Paths, DP4 Style
- Vet Your Manifest, Again
- "Exploring Android" Version 1.1 Released
- Random Musings on the R Developer Preview 4
- "Elements of Android R" Version 0.2 Released
- Jetpack Compose... on the Desktop
- Random Musings on the R Developer Preview 3
- SurfaceControlViewHost Input in Android R
- Android R, Package Visibility, and Some Holes
- Scoped Storage Stories: MediaStore Metadata Madness
- Introducing jetc.dev!
- "Elements of Android R" Version 0.1 Released
- A Peek at SurfaceControlViewHost in Android R
- R Raw Paths and All Files Access
- More Random Musings on R DP2!
- Random Musings on the R Developer Preview 2
- Android R: A Rough Start
- Scoped Storage Stories: More on RecoverableSecurityException
- "Elements of Android Jetpack" Version 0.8 Released
- Random Musings on the R Developer Preview 1
- Scoped Storage Stories: The Undocumented Documents
- "Elements of Android Room" Version 0.2 Released
- GDSA for App Distribution: Promising, Yet Problems
- Start Before You Finish
- "Elements of Android Jetpack" Version 0.7 Released
- "Elements of Android Room" Version 0.1 Released
- Scoped Storage Stories: The Diabolical Details of Downloads
- Scoped Storage Stories: Modifying the Content of Other Apps
2019 81
- Scoped Storage Stories: Reading via MediaStore
- Scoped Storage Stories: Storing via MediaStore
- "Exploring Android" Version 1.0 Released
- Scoped Storage Stories: listFiles() Woe
- "Elements of Android Jetpack" Version 0.6 Released
- Securing Jetpack Compose
- More on the Missing SAF
- Scoped Storage Stories: Problems with SAF
- Scoped Storage Stories: DocumentsContract
- Final "Elements of Android Q" Released
- Scoped Storage Stories: Trees
- "Exploring Android" Version 0.9 Released
- Scoped Storage Stories: DocumentFile
- Scoped Storage Stories: Durable Access
- Scoped Storage Stories: SAF Basics
- The Storage Situation: Removable Storage
- Spoiler Alert!
- The Storage Situation: External Storage
- The Storage Situation: Internal Storage
- View Binding and Android Studio Versions
- "Elements of Android Jetpack" Version 0.5 Released
- Introducing AndroidX Tech
- Android Studio 3.5 Upgrade XML Reformatting Problems
- "Elements of Kotlin Coroutines Version 0.1 Released
- Enabling Type Hints in Android Studio
- Harmony and Compatibility
- Room and Flow!
- ACTION_OPEN_DOCUMENT: May Not Be Read-Write
- "Elements of Kotlin Version 0.2 Released
- "Elements of Android Q" Version 0.5 Released
- Presenters, Please Use Bigger Fonts!
- Android Summit 2019!
- Need a Magic Constant? Choose Something Obscure
- Leaky APIs are Leaky
- Android Q, uiMode, and Configuration Changes
- "Elements of Android Q" Version 0.4 Released
- DevFest DC Update!
- "Elements of Android Jetpack" Version 0.4 Released
- The Death of External Storage: The End of the Saga(?)
- Random Musings on Q Beta 4
- The Storage Access Framework: Counterpoints
- Jetpack Compose: Optimism and Opportunity
- "Exploring Android" Version 0.7 Released
- A Huawei Update
- DevFest DC!
- Huawei, the Trade Ban, and Developers
- "Elements of Android Q" Version 0.3 Released
- The Death of External Storage: App Installer Bugs
- The Death of External Storage: The Beta 3 Status
- Random Musings on Q Beta 3
- "Exploring Android" Version 0.6 Released
- The Death of External Storage: Correcting a Mistake
- The Death of External Storage: Serenity Now
- The Death of External Storage: More of the Story
- "Elements of Android Q" Version 0.2 Released
- About Share Targets and Magic Names
- "Exploring Android" Version 0.5 Released
- Random Musings on Q Beta 2
- "Elements of Android Q" Version 0.1 Released
- The Death of External Storage: Where's Google?
- The Death of External Storage: But Why?
- The Death of External Storage: How Can I Stay Away From Files?
- The Death of External Storage: I Can Haz File?
- The Death of External Storage: What? And What Now?
- Random Musings on the Q Developer Preview 1
- Ethical Analytics, Please
- "Elements of Android Jetpack" Version 0.3 Released
- The March of the API Versions Continues
- The Lessons from Android Things
- "Exploring Android" Version 0.4 Released... Again
- "Exploring Android" Version 0.4 Released
- Full-Text Searching the CommonsWare Books
- The Busy Coder's Guide to Android Development Final Version Released
- A Fuchsia Future? Part Four: What Now?
- A Fuchsia Future? Part Three: A Tale of Two Languages
- A Fuchsia Future? Part Two: Is It Soup Yet?
- A Fuchsia Future? Part One: Build One (or Two) to Throw Away
- GraphQL and Android Final Version Released
- Android's Architecture Components Final Version Released
- WorkManager Side Effects: A Follow-Up
- "Elements of Android Jetpack" Version 0.2 Released
2018 48
- The SQLite Magellan Bug, And Your App
- How You Can Help!
- Where Things Go From Here
- Read Online!
- "Elements of Android Jetpack" Version 0.1 Released
- "Elements of Kotlin" Version 0.1 Released
- WorkManager, App Widgets, and the Cost of Side Effects
- Reference Platforms, Please!
- Foldables and Developers
- New Warescription Site
- Android Summit 2018, Again
- Android's Architecture Components Version 0.11 Released
- Android Summit 2018 Materials
- The Busy Coder's Guide to Android Development Version 8.13 Released
- Fortnite, Security, and Monopoly
- Android Studio and distributionSha256Sum
- Android Summit 2018!
- Slices From Afar
- Android's Architecture Components Version 0.10 Released
- SQLCipher for Android, WAL, and Parallel I/O
- StrictMode for API Greylist Monitoring
- Random Musings on the P Developer Preview 3
- The Busy Coder's Guide to Android Development Version 8.12 Released
- At Last... HtmlCompat
- "Exploring Android" Version 0.3 Released
- Official Chrome OS Emulator for Android Studio
- Android's Architecture Components Version 0.9 Released
- Jetpack, AndroidX, and the Books
- Random Musings on the P Developer Preview 2
- Removing the Android Things Chapter, Again
- scrcpy for Projecting Your Android Screen
- Manifest Merger, maxSdkVersion, and a Missing Permission
- "Exploring Android" Version 0.2 Released
- Chrome OS Tablets, And Your App
- The Busy Coder's Guide to Android Development Version 8.11 Released
- About the Potential Android P App Ban
- REQUEST_DELETE_PACKAGES, For Realz Now
- Random Musings on the P Developer Preview 1
- Upcoming Device Admin Deprecations?
- The @hide Penny Drops
- Help Your Users to Not Get Pwned
- The Busy Coder's Guide to Android Development Version 8.10 Released
- Android's Architecture Components Version 0.8 Released
- Vet Your Manifest
- "Exploring Android" Version 0.1 Released
- Think Hard About @hide
- Android's Architecture Components Version 0.7 Released
- The Android Version Ratchet
2017 62
- Storage Access Framework, Missing in Action
- The Busy Coder's Guide to Android Development Version 8.9 Released
- Android Studio 3.0: What "Injecting Monitoring Logic" Means
- Android's Architecture Components Version 0.6 Released
- AccessibilityServices, Play Store Bans, and API Design
- The Storage Situation: Removable Storage
- The Storage Situation: External Storage
- The Storage Situation: Internal Storage
- The Busy Coder's Guide to Android Development Version 8.8 Released
- Android Things, Terms of Service, and a Pulled Chapter
- Android Studio 3.0 and FLAG_TEST_ONLY
- The Curious Case of the Missing google()
- Random Musings on the Android 8.1 Developer Preview 1
- The Support Library POMs Are Broken Again... Though You May Not Notice
- Android's Architecture Components Version 0.5 Released
- GraphQL in Copenhagen
- An Emulator Networking Workaround
- Oreo, Services, and Libraries
- Android's Architecture Components Version 0.4 Released
- Autofill Services and Security: Update
- Making Sense of the Architecture Components Versions
- Android's Architecture Components Version 0.3 Released
- GraphQL and Android Version 0.3 Released
- Platform Resource Aliases
- Android's Architecture Components Version 0.2 Released
- Upcoming Presentations
- Autofill Services and Security
- The Busy Coder's Guide to Android Development Version 8.7 Released
- New Subscriber Benefit: Discussion Group
- GraphQL and Android Version 0.2 Released
- Introducing CWAC-SafeRoom
- Android's Architecture Components Version 0.1 Released
- Samba and a Uri
- FileProvider and Libraries
- GraphQL and Android Version 0.1 Released
- Android Seminars, In Your City
- Securing Apps From Android 8.0 Autofill
- ACTION_BOOT_COMPLETED, IntentService, and Android 8.0
- Random Musings on the O Developer Preview 3
- JobScheduler, Job IDs, and Libraries
- The Busy Coder's Guide to Android Development Version 8.6 Released
- Android O Background Limitations: Not Just for targetSdkVersion 'O'
- Random Musings on the O Developer Preview 2
- The Trouble with Treble
- RecoverableSecurityException, RIP
- SYSTEM_ALERT_WINDOW, Android O, and Disappointment
- FLAG_SECURE and Android O Autofill
- A Fix for the Google Play Books EPUB Issue
- The Busy Coder's Guide to Android Development Version 8.5 Released
- Android O and the Implicit Broadcast Ban
- Random Musings on the O Developer Preview 1
- The Busy Coder's Guide to Android Development Version 8.4 Released
- Google Play Books and My EPUBs
- Qualcomm, Trepn, and EULA Nonsense
- The Busy Coder's Guide to Android Development Version 8.3 Released
- Analytics Privacy Survey
- Android Studio and the Case of the Rogue Parentheses
- Network Security Configuration Presentation
- Replacing addJavascriptInterface() with HTML Message Channels
- Droidception
- The Busy Coder's Guide to Android Development Version 8.2 Released
- Options for Viewing PDFs
2016 85
- PSA: v25.1.0 Support Fragments Behavior Change
- About the Support ExifInterface
- Security Things About Android Things
- FYI: sdkmanager for Command-Line SDK Installs
- Certificate Pinning and Failing Open
- Random Musings on the 7.1 Developer Preview 2
- Consuming Content? Be Flexible!
- Be Careful with Scoped Directory Access
- The Busy Coder's Guide to Android Development Version 8.1 Released
- Freeform Windows, the 7.0 CDD, and You
- Random Musings on the 7.1 Developer Preview 1
- Freeform Multi-Window, Like It or Not
- The Busy Coder's Guide to Android Development Version 8.0 Released
- In Split-Screen, Your Orientation Flips
- In Split-Screen, Not All HOMEs Are Created Equal
- Android on Chrome OS: Shipping to Release Channel
- Internal Storage Metadata Leaks
- Multi-Window, Like It or Not, Again
- Reminder: Check Your Projects Before Importing Them
- Multi-Window and Permission Revocation
- Still Be Careful of Drag-and-Drop on Android 7.0
- Multi-Window, and Multi-Instance, Like It or Not
- Dealing with the ExifInterface Security Flaw
- Notifications, Sounds, Android 7.0, and Aggravation
- Virtual Files FAQ (Sorta)
- Granting Permissions on a Uri in an Intent Extra
- Breaking Up (an Artifact) Is (Not That) Hard To Do
- PSA: Drag-and-Drop Behavior Change in Android 7.0
- The Busy Coder's Guide to Android Development Version 7.6 Released
- The Magical OpenJDK Migration
- APPLICATION_PREFERENCES and Security
- Warescription Pricing: Now $20/Six Months
- Upcoming Presentations
- Uri Access Lifetime: Shorter Than You Might Think
- Instant Run and Serializable
- Be Careful Where You Use Custom Parcelables
- The Busy Coder's Guide to Android Development Version 7.5 Released
- Android on Chrome OS: Updated Information
- Backporting Android N Network Security Configuration
- Android on Chrome OS: adb Access
- Upcoming NYC Presentations
- Android on Chrome OS: AlarmManager/JobScheduler Broken
- Android on Chrome OS: Pondering adb
- Android on Chrome OS: Getting (Side-) Loaded
- Android on Chrome OS: Getting Started
- PSA: Upgrade SQLCipher for Android Soon
- Link to the Android Studio That You Are Teaching
- Opting Out of Multi-Window is Hard
- Random Musings on the N Developer Preview 4
- The Busy Coder's Guide to Android Development Version 7.4 Released
- isInMultiWindowMode() Race Condition
- PSA: FLAG_SECURE Window Leaks
- Skate to Where the Puck is Going
- Be Careful of Drag-and-Drop on Android N
- A Tale of Two ExifInterfaces
- Getting Ready for ChromeOS
- Random Musings on the N Developer Preview 3
- SAFFAQ: The Storage Access Framework FAQ
- The Busy Coder's Guide to Android Development Version 7.3 Released
- Your App May Be Getting on the ARC
- Exported Activities and Freeform Multi-Window Mode
- Random Musings on the N Developer Preview 2
- AndGlobe: Yet Another Call For More Sites
- Why Can't I Edit My Manifest In Android Studio?
- PSA: Validate Your ACTION_SEND Inputs
- Beware the Bezel Swipe
- Upcoming Android Presentations
- Watch Out For OpenJDK Differences on Android N
- SYSTEM_ALERT_WINDOW: Now More Hidden Than Ever
- Oops! Re-Download Version 7.2 APK/EPUB/MOBI
- New Subscriber Benefit: Appinars!
- The Busy Coder's Guide to Android Development Version 7.2 Released
- Reminder: adb install Needs -g To Auto-Grant Permissions
- Backwards Compatibility with the N Developer Preview
- How to Publish Files Via a content Uri
- How to Consume Content From a Uri
- PSA: file: Scheme Ban in N Developer Preview
- Random Musings on the N Developer Preview
- About Those X509TrustManager Emails
- Seeking Subscribers for Beta Testing
- Changes in DownloadManager Behavior
- The Busy Coder's Guide to Android Development Version 7.1 Released
- Lessons from Parse
- Libraries and Dangerous Permissions
- Musings on Android and the OpenJDK
2015 69
- -nodpi, -anydpi, and WTF?
- Book Excerpt: Crash Reporting with ACRA
- The Busy Coder's Guide to Android Development Version 7.0 Released
- Book Excerpt: Full-Text Indexing and Searching (Part 5)
- Book Excerpt: Full-Text Indexing and Searching (Part 4)
- Book Excerpt: Full-Text Indexing and Searching (Part 3)
- Book Excerpt: Full-Text Indexing and Searching (Part 2)
- Book Excerpt: Full-Text Indexing and Searching (Part 1)
- SecurityExceptions, Runtime Permissions, and "Reset app preferences"
- Why The Play Store Thinks Your App Has Ads... When It Doesn't
- Another Doze Edge Case: Foreground vs. Foreground
- Be Careful of Deserialization
- Google's (Anti)Trust Issues
- Subscribe using Alipay!
- You Cannot Hold Non-Existent Permissions
- Android on the Desktop
- Book Excerpt: ACTION_PROCESS_TEXT Security
- PSA: Android 6.0 Theme.NoDisplay Regression
- Validate Your File Inputs, Please
- Version 6.9 APK Re-Released
- The Busy Coder's Guide to Android Development Version 6.9 Released
- LinkageError and Your Android Code
- Runtime Permissions, ACTION_PICK, and Contacts
- Runtime Permissions, Files, and ACTION_SEND
- Book Excerpt: Public Key Validation
- Developer Trust, Revisited
- Welcoming @CommonsWare
- Book Excerpt: Floating Action Mode and ACTION_PROCESS_TEXT
- Saturday Office Hours
- DevFest DC
- Hey, Where Did My Permission Go?
- The Busy Coder's Guide to Android Development Version 6.8 Released
- Android 6.0 Runtime Permissions Code Labs
- Random Musings on the Android 6.0 SDK
- Favoring Snackbars Over Security
- Linux Emulator Woe? Try No Audio!
- The Stagefright Bug, and Your App
- The Limits of ContentProvider Security
- Returning to Presenting
- Hey, Where Did These Permissions Come From?
- Safely Unzipping ZIP Archives
- Live from New York! It's Advanced Android Training!
- The Busy Coder's Guide to Android Development Version 6.7 Released
- PSA: Another (Small) AlarmManager Regression
- PSA: WebView URL-Handling Regression
- The End of the Webinars
- The ACTION_IMAGE_CAPTURE Fallacy
- Supporting the M Developer Preview... And Previous Versions
- Random Musings on the M Developer Preview: the Ugly (Part Two)
- Random Musings on the M Developer Preview: the Ugly (Part One)
- Random Musings on the M Developer Preview: the Bad
- Random Musings on the M Developer Preview: The Good
- AndGlobe: Another Call For More Sites
- The Busy Coder's Guide to Android Development Version 6.6 Released
- Getting on the ARC
- RecyclerView Webinars
- Maps Sans Play Services
- AlarmManager Regression in Android 5.1
- Developer Trust, and the XCode Hack
- Random Musings on the Android 5.1 SDK
- The Busy Coder's Guide to Android Development Version 6.5 Released
- Webinars Woster
- Ripples from a Touch Point
- Webinars for Meetups
- The Busy Coder's Guide to Android Development Version 6.4 Released
- Getting a JAR into Android Studio
- Library Authors: You Can't Always Get What You Want
- Moar Webinars!
- Warescription Site Revamp
2014 68
- Warescription Site Downtime
- The Busy Coder's Guide to Android Development Version 6.3 Released
- Manufacturers, Keep Your Hands Off My Zygote
- A Presentation Sabbatical
- Dealing with the Bulk-Closed Android Issues
- My Mistakes with CWAC-Camera
- Material Design: Strategic Considerations
- Android 5.0 Deprecation: splitActionBarWhenNarrow
- The Busy Coder's Guide to Android Development Version 6.2 Released
- Samsung/droidcon UK Presentations
- Random Musings on the Lollipop SDK
- The Busy Coder's Guide to Android Development Version 6.1 Released
- Predictions of Play Store Fallout
- Upcoming Conference Presentations: Samsung Developer Conference
- The Busy Coder's Guide to Android Development Version 6.0 Released
- Defending Against "Camera Peeking" Attacks
- Defending Against Activityjack Attacks
- The Return of "Gradle for Android... and You!"
- Want to Review a Beta Book?
- Intel's Android Developer Field Guide... And You!
- Better Presentations From a Service
- Upcoming Conference Presentations: droidcon UK and AnDevCon
- Custom Permission Vulnerability and the 'L' Developer Preview
- The Role of Services
- Gradle for Android Online Course
- Webinars: Memory and Security
- A Uri Is Not (Necessarily) a File
- Consuming AARs from Eclipse
- The Busy Coder's Guide to Android Development Version 5.9 Released
- Dealing with L Deprecations: bindService()
- And Now, Your 'L' API Change WTFs
- Android Wear and Play Services
- Developer Preview Rules of the Road
- The ART of Garbage Collection
- Presentations From a Service
- MediaRouter Webinars
- If Your Activity Has an <intent-filter>, Export It
- The Busy Coder's Guide to Android Development Version 5.8 Released
- The Android Dual-Screen Landscape Free Webinar
- Gradle for Android... And You! Free Webinar Seats Still Available
- More on Android and Revoked SSL Certificates
- PSA: WebView, Chrome Accept Revoked SSL Certificates
- Really Blank Activity (Or, Why AppCompat Is Shoved Down Your Throat)
- The Storage Situation: Where Developers Go Astray
- The Storage Situation: Where Google Went Astray
- The Storage Situation: Removable Storage
- The Storage Situation: External Storage
- The Storage Situation: Internal Storage
- CWAC-LoaderEx and Failed Abstractions
- About the "Pileup" Vulnerabilities
- The Busy Coder's Guide to Android Development Version 5.7 Released
- Gradle for Android... And You! Free Webinar
- Dual Screen App Challenge
- Webinars: Jank Busting and Device Administration APIs
- App Widgets as Wearable UIs
- The Busy Coder's Guide to Android Development Version 5.6 Released
- Webinars: NFC Basics
- Vulnerabilities with Custom Permissions
- Fighting Closed with Open
- Webinars: Streaming Providers and Advanced Maps V2
- Upcoming Presentations: WIPJam, Wearables, and 'Week!
- AndGlobe: Call For More Sites
- Webinars: Maps V2 and Permissions
- The Busy Coder's Guide to Android Development Version 5.5 Released
- Android Micro-Consulting
- More Android Development Webinars
- Referral Program Out of Beta
- New Subscriber Benefit: StackOverflow Bump
2013 90
- Sanitize All The Extras!
- Webinar Wednesday: Two More Betas
- Tell Your Ad Network: "SSL, Please"
- The MENU Key Is Dead. Again.
- Webinar Wednesday: First Beta
- The Busy Coder's Guide to Android Development Version 5.4 Released
- App Ops Developer FAQ Updated
- Warescription Referral Program Beta
- libhoudini: What It Means for Developers
- Have API, Won't Travel
- The Busy Coder's Guide to Android Development Version 5.3 Released
- Introducing CWAC-MasterDetail
- The Troubling Tale of android:priority
- Android 4.4 Permission Regressions
- New Meta-Data Tag for Maps V2
- Quick Musings on Android 4.4
- Secondary Display Support: Presentation and Errata
- Linkify and autoLink Need a Custom URLSpan
- ACTION_GET_CONTENT? Support EXTRA_ALLOW_MULTIPLE, Please
- The Busy Coder's Guide to Android Development Version 5.2 Released
- SMS Apps: I Warned You...
- Dropping the OUYA Chapter
- Make Passwords Expensive
- Secured Broadcasts and SMS Clients
- Site Downtime Tomorrow
- Converting Animated GIFs to AnimationDrawables
- My Brain Has Moved, And Other Whirled Tour Updates
- Android Exported Service MITM Attacks
- ROM Modding as Consumer Protection
- Musings on Cyanogen Inc.
- More Whirled Tour Updates
- Whirled Tour Addition: Pushing the UI Envelope
- Beware Accidental APIs: Avoid Intents as Extras
- PSA: Think About Stronger App Signing Keys
- Raising My Game on Security
- The CommonsGuy 2013 Whirled Tour
- The Busy Coder's Guide to Android Development Version 5.1 Released
- App Ops Activity Out of AOSP
- Developer PSA: Please Fix Your Clipboard Handling
- For Android APIs, Think Streams, Not Files
- Notifications, Foreground Services, and Android 4.3
- App Ops Developer FAQ
- There's Compatibility, and Then There's Compatibility
- Musings on Android 4.3
- Full Text Searching, The Book, and You!
- The Busy Coder's Guide to Android Development Version 5.0 Released
- Warescription Site Revamp
- Warescription Site Downtime
- Calling for More Android Developer Support Sites
- The Busy Coder's Guide to Android Development Version 4.9 Released
- Don't Forget Ethernet
- Don't Forget x86
- Don't Manually Modify Your Eclipse Build Path... Except Now for R22
- Remember, Google Play Services is Proprietary
- Uncanny App Valley: Is It Really a Cliff?
- Android Studio Early Access Preview... and You
- Android Studio... and the Book
- Fun With Density Resource Set Qualifiers
- The Busy Coder's Guide to Android Development Version 4.8 Released
- Interesting Tidbits from the Latest Device Dashboards
- License Or It Doesn't Exist
- CWAC EndlessAdapter Users: Upgrade, Please
- Disabled Notifications: Setting Survives Uninstall
- Android 4.2 + HDMI != Presentation Support
- Don't Have an Accidental API
- Developer Support Teams: Monitor a StackOverflow Tag
- Jeff Gilfelt's Android SDK Samples Search
- Java Serialization? SRSLY?
- Games: Handlheld, to Presentation, to OUYA
- DC Droids Presentation Tomorrow
- The Busy Coder's Guide to Android Development Version 4.7 Released
- ...And This Is Why I Work This Way
- My Lessons from Facebook
- More on Xperia and AlarmManager
- Warning: Sony Xperia Z, STAMINA, and AlarmManager
- SSL on Android: OnionKit
- SSL on Android: Memorizing and Pinning
- SSL on Android: About That Man in the Middle
- SSL on Android: The Basics
- PSA: Get Your Maps V1 Keys Now!
- Android 4.2 for Kiosk Apps
- The Busy Coder's Guide to Android Development Version 4.6 Released
- WebView, addJavascriptInterface(), and Android 4.2 Change
- App Quality Alliance's Resources for Android Developers
- Maps V2 May Need ACCESS_NETWORK_STATE Permission
- What Not To Put In Your Repo
- No, Android Does *Not* Have a Crop Intent
- Letting the Device Sleep, Intelligently
- Toasts: Should Not Be Important, May Be Blocked
- The Busy Coder's Guide to Android Development Version 4.5 Released
2012 76
- Disable Unusable Activities
- Warning: Do Not Use android.hardware.camera.any Yet
- Maps V1 Keys: Going, Going, ...
- Think About Font Scale
- Allow Overrides of Your Overrides
- The Busy Coder's Guide to Android Development Version 4.4 Released
- Miscellaneous Android 4.2 Regressions
- Busting a Mobile App Dev Patent
- Think About android:allowBackup
- Fixing the "Fixing the First Impression"
- Minimize Open Files on External Storage, Please
- Announcing AndGlobe
- The Busy Coder's Guide to Android Development Version 4.3 Released
- I Shall Return. Eventually.
- No Unnecessary Accounts, Please
- 4.1.2, Locations, Google Apps, and a UX WTF? Moment
- The DMCA, the Play Store, and You
- Conditional Preference Headers
- Seeking Global Android Developer Support Sites
- USB Debugging May Be Hazardous To Your Health
- Be Careful What You Wish For
- The Busy Coder's Guide to Android Development Version 4.2 Released
- Trust and the Mobile OS
- Knowledge Transfer vs. Support
- Android's Lessons for New Mobile Operating Systems: Community
- Android's Lessons for New Mobile Operating Systems: App Distribution
- Android's Lessons for New Mobile Operating Systems: Security
- Android's Lessons for New Mobile Operating Systems: Audience
- The Busy Coder's Guide to Android Development Version 4.1 Released
- Multiple-View ViewPager Options
- About Those @Override Errors
- Plan Your Production Keystore Strategy
- The Busy Coder's Guide to Android Development Version 4.0 Released
- Learning From the Kies Incident
- External Storage Moved. Again.
- Beware the 1% Solution
- Think About READ_EXTERNAL_STORAGE Now
- The Linkify Problem: The Detection and the Mitigation
- The Linkify Problem: The Patent and the Behavior
- Accentuate the Positive (Navigation)
- READ_LOGS Regression
- Don't Advertise Intent Filters That Are Not Yours
- The Busy Coder's Guide to Android Development Version 3.8 Released
- Who Will Become Android's Red Hat?
- Jelly Bean, Renderscript, and Deprecation
- ADT R20 and My Book Schedule
- I, For One, Welcome Our New 1080p Tablet Overlords
- Omnibus v0.8 Released
- Removing Rogue Menus (Or, Why Targeting 14 Might Be Necessary)
- Omnibus v0.7 Released
- A Community-Driven Compatibility Library
- Long-Running Services and User Acceptance
- Omnibus v0.6 Released
- It's the User's Data, Dammit
- How I Isolated the Adobe Reader Activity Issue
- Omnibus v0.5 Released
- AsyncTask Threading Regression Confirmed
- Omnibus v0.4 Released
- Making BACK Way Too Complicated
- Omnibus v0.3 Released
- UX Strategy Vs. UX Tactics
- The Busy Coder's Guide to Advanced Android Development Version 2.6 Released
- AsyncTask: Beware of Curves Ahead
- Omnibus v0.2 Released
- One Fewer Google I|O 2012 Attendee
- The Omnibus Begins
- The Two Sides of Piracy
- The Busy Coder's Guide to Advanced Android Development Version 2.5 Released
- Tapjacking, Defunct?
- Think About Principles
- The Busy Coder's Guide to Advanced Android Development Version 2.4 Released
- Think Enterprise (No, Not Starships or Rental Cars...)
- Be Careful With Static Stuff on AsyncTask
- Secure Against Screenshots
- A Proof Is Worth a Thousand Posts
- The Busy Coder's Guide to Advanced Android Development Version 2.3 Released
2011 68
- The Big Book Reboot: The Trails
- The Busy Coder's Guide to Advanced Android Development Version 2.2 Released
- Agency in the World of CarrierIQ
- The Big Book Reboot: Why
- The Busy Coder's Guide to Android Development Version 3.7 Released
- CWAC-AndDown: Markdown for Android (and a plea for help)
- Manufacturers: Keep VM Namespaces Clean, M'kay?
- AnDevCon II Presentations
- Android Market Data: Empowering the Bad Guys
- Android Programming Tutorials Version 4.1 Released
- Tuning Android Applications Version 0.4 Available
- Ice Cream Sandwich SDK Curiosities
- Updates on Updates
- The Busy Coder's Guide to Advanced Android Development Version 2.1 Released
- Recent Conference Presentations
- Market in Every Touchpoint
- Activities are Not Destroyed to Free Up Heap Space
- Servers Are Risky. Mobile Servers Are Riskier
- Kindle Fire: Preliminary Thoughts
- b.android.com: It's Full of Stars
- Android's Advances: Review and Preview
- Android Programming Tutorials Version 4.0 Released
- Tuning Android Applications Version 0.3 Available
- Pondering the Amazon Tablet
- Google TV Emulator: Seemingly Pointless
- MTP, External Storage, and Your App
- Beginning Android: Keep Going?
- Tuning Android Applications Version 0.2 Available
- Musings on Motorola Mobility
- Android Programming Tutorials Version 3.9 Released
- Gmail Gone, and the Risk of Undocumented APIs
- BACK Means Back
- Touchqode: How Not to Write a License
- Broadcast Regression Confirmed
- Tuning Android Applications Version 0.1 Available
- The Busy Coder's Guide to Advanced Android Development Version 2.0 Released
- BOOT_COMPLETED Regression
- About Binder Caching
- Warning: Activity Intent Extras Can Be Public
- Share Where the User Wants
- Android Developer Chats
- Android Programming Tutorials Version 3.5 Released
- The Busy Coder's Guide to Advanced Android Development Version 1.9.9 Released
- Please Ignore the HOME Button
- Advice for Niche Android Hardware Manufacturers
- Google Apps For Somebody Other Than Me
- Android Programming Tutorials Version 3.3 Released
- Android Programming Tutorials Version 3.4 Released
- The Busy Coder's Guide to Advanced Android Development Version 1.9.3 Released
- Suppressing Android Permissions
- The Busy Coder's Guide to Android Development Version 3.6 Released
- An Open Letter to Qualcomm on the MDP
- The Busy Coder's Guide to Advanced Android Development Version 1.9.2 Released
- Android Programming Tutorials Version 3.2 Released
- Spam, or How Not to Promote Your Product or Service
- Correcting an AnDevCon Presentation
- The Busy Coder's Guide to Android Development Version 3.5 Released
- XOOM, Permissions, and the Android Market
- Nested PreferenceScreens + Honeycomb = Ugly
- When To Tablet-ify Your App
- The Principle of Least Profanity
- The Nature of the Activity
- Microsoft, Nokia, and the Importance of Open
- Honeycomb (Or, Why I Haven't Blogged Much Recently)
- FAQ: Mobipocket Files on the Kindle for Android App
- CWAC-LocationPoller v0.1 Released
- Android Programming Tutorials Version 3.1 Released
- The Busy Coder's Guide to Android Development Version 3.4 Released
2010 74
- Adding Headings to a CursorAdapter
- WakefulIntentService Updated, Welcomes Its New Donut Overlord
- EndlessAdapter Updated (Now With More Endlessness!)
- Preliminary Thoughts on the Android 2.3 SDK
- Composition Over Inheritance
- The Busy Coder's Guide to Android Development Version 3.3 Released
- With a Feed, What Could We Deliver?
- Markets as Silos
- The Busy Coder's Guide to Android Development Version 3.2 Released
- Mac App Store: Here We Go Again
- Thinking 'Bout Google TV Apps
- New Warescription Site
- Calendar Changes Coming
- Connected TV and the Tank
- Free Android Books for University Courses
- Another Use for getApplicationContext(): Binding and Rotation
- Android Devices and the Warescription
- Amazon and Android
- A Real Use for getApplicationContext()!
- AsyncTask and Screen Rotation
- Android Beyond Java 0.5 Released
- ViewSwiper: Turn Pages with Gestures
- Decoupled Activities
- Advanced Android Update, and Parcel Reboot
- Android Programming Tutorials Version 3.0.1 Released
- What is Dalvik?
- Evernote, and Why You Need to Think About Permissions
- Activity or Notification via Ordered Broadcast
- Android Programming Tutorials Version 3.0 Released
- Java: The Good Parts Version
- Symbian DevCo...and Android
- Android Parcel Project Update
- TV Out Is...Incredible
- The Busy Coder's Guide to Advanced Android Development Version 1.9 Released
- Android Programming Tutorials Version 2.9 Released
- BackupManager: Unsafe At Any Speed
- Sensors: Working, But How?
- Curation As Problem, Not Solution
- Why Android Developers Need a Business Model
- Android Programming Tutorials Version 2.8 Released
- I'm Not Dead Yet
- Android Programming Tutorials Version 2.1 Released
- Twitter Examples: Going, Going, ...
- WakefulIntentService v0.2.0 Released
- The Busy Coder's Guide to Advanced Android Development Version 1.6 Released
- ColorMixer 0.3.3 Released
- Google I|O 2010 Android Videos Posted
- The Busy Coder's Guide to Android Development Version 3.1 Released
- Identifying an Emulator in Android 2.2
- HTML Tags Supported By TextView
- TouchListView 0.1 Released
- Android Beyond Java Version 0.3 Released
- AIR on Android: An Open Letter to Adobe CEO Shantanu Narayen
- How Not To Sell Android Apps
- Application Concept: resqr
- Parcel Developer Guide, Specifications Published
- Multiple-Choice List Check Events
- Developer Assistance at Google I/O
- Nexus One Web Store, We Hardly Knew Ye
- Nexus One: Success or Failure?
- Two New Presentations on Slideshare
- Announcing the Android Parcel Project
- Sequential Animations
- Android APIs: A Spectrum of Openness
- Android and the CafePress Model
- Another Four-to-Free Guarantee Update
- FroYo, Public Preview vs. General Release
- Snaptic Contest
- Android in 2013
- Android Beyond Java 0.2 Released
- HTC Incredible and External Storage
- Palm and Android, Friends?
- Android Developer Blog, Back From the Dead?
- First Post!