The CommonsBlog

Latest articles

Don’t Put All Your Eggs in One Basket

I am glad that the fight between Google and the developers of Terraria appears to have been resolved. However, the effects of the ban on Terraria’s primary developer remind me that not all solo developers realize the potential impacts of distributing apps through the Play Store. If you are an ordinary person doing ordinary things, it is highly...

Random Musings on the Android 12 Developer Preview 1

Each time Google releases a new developer preview, I rummage through the API differences report the high-level overviews, and even the release blog post, to see if there are things that warrant more attention from developers. I try to emphasize mainstream features that any developer might reasonably use, along with things that may not get quite...

Using Repository Artifact Safelists in Gradle

With JCenter going away, we are going to be peeking more at our repositories and artifacts. After all, we need to make sure that we will continue to get the libraries that we need from their new homes, for any that were published purely to JCenter. The timing is interesting, as “supply-chain” attacks are on the rise. It is far too easy for somebody...

Notes on the Jetpack Compose alpha11 to alpha12 Upgrade Process

Upgrading an app from Compose alpha11 to alpha12 was more troublesome than normal. I took some notes along the way and wanted to pass them along. Note: all of the Gradle samples show the classic Groovy approach — you will need to tweak those for build.gradle.kts if you are going that route. The obvious change is moving your Compose Gradle...

Quieting the SQL Syntax Warnings

val db: SQLiteDatabase = TODO("open a database") val st = db.compileStatement("ATTACH DATABASE ? AS plaintext KEY ''") By default, Android Studio does not like this SQL statement. It puts a red undersquiggle below KEY, complaining that it is expecting a ; instead. According to SQLite, Android Studio is correct. This error is coming from...

Data Over Sound

Bootstrapping communications between two devices can be a challenge. While your long-term communications might be over WiFi, for example, you may have an initial step of getting a device onto that WiFi network. This is reasonably common in IoT scenarios, where you have some device that has limited input options and you need to teach it a WiFi network...

“Elements of Android Room” Version 0.4 Released

Subscribers now have access to Version 0.4 of Elements of Android Room, in PDF, EPUB, and MOBI/Kindle formats. Just log into your Warescription page to download it, or set up an account and subscribe! This update adds three more chapters, covering: SQLite clients for inspecting your Room databases The basics of using...

Checking for Poisoned Projects

Yesterday, Google wrote about a campaign to hack the machines of security researchers. One means of doing that was via malware embedded in a Visual Studio project: After establishing initial communications, the actors would ask the targeted researcher if they wanted to collaborate on vulnerability research together, and then provide the researcher...

“Elements of Kotlin” Version 0.4 Released

Subscribers now have access to Version 0.4 of Elements of Kotlin, in PDF, EPUB, and MOBI/Kindle formats. Just log into your Warescription page to download it, or set up an account and subscribe! There are a few new “Kotlin, WTF?” short chapters, on: Covariance and contravariance in generics Local functions ...

ACTION_SEND, the Chooser, and ClipData

Roderick Gadellaa pointed out an interesting problem with the “share sheet”. In Android 10+, the share sheet can show a preview of your content. In particular, it can show a preview of an image that you are sharing. The catch is that the share sheet needs to know what image that is… and whether it does depends on how you are sharing it. Sharing...

Discover, share and read the best on the web

Subscribe to RSS Feeds, Blogs, Podcasts, Twitter searches, Facebook pages, even Email Newsletters! Get unfiltered news feeds or filter them to your liking.

Get Inoreader
Inoreader - Subscribe to RSS Feeds, Blogs, Podcasts, Twitter searches, Facebook pages, even Email Newsletters!