Library / SDK
android/androidify avatar
android/androidify

Androidify's setup instructions are longer than its feature list

Sample app for Androidify

1,980 stars317 forksKotlinApache-2.0

At a glance

What is it?
This is a sample application that turns a photograph into a version of the platform's mascot, and the readme spends three of its four setup steps on cloud configuration rather than on the app. That ratio is the honest shape of what the project is: a demonstration of a hosted inference pipeline, and the cloud project is half the work.
Who is it for?
Read Androidify if you are learning how to wire a hosted image model into a modern Android application, because it is a complete worked example with the cloud setup written out step by step, which is the part that is hard to get from documentation. Do not adopt it as a starting point for your own app, because there is no local inference path, the feature depends on a preview model unavailable in several regions, and the readme says the sample model is being replaced.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 10 days ago.
What is it written in?
Mainly Kotlin, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What the app does, and the honest caveat above the features

The readme opens with history and then a warning, and the warning comes first for a reason. The Android mascot is described as a beloved character, and previous versions of a bot builder were popular enough that the team decided to rebuild the bot maker from the ground up using current technology backed by a hosted model. The app is then described as open source and as a way to learn to build model-driven experiences on Android, naming four technologies it demonstrates. Then the caveat: the app is still under development, the sample app currently uses a general-purpose image model, the team has been working on a model trained specifically to produce the mascot in the style they want, and that version will be shared later. And a line that reads as a warning and is one, telling you not to be surprised by the output. That is a well-judged piece of readme writing. A sample app whose output looks wrong is usually presented as a bug; here it is presented as a known gap with a stated plan, which tells you both that the model choice is temporary and that the team considers output quality part of the deliverable. The blog post link at the end of that paragraph is where the actual architecture discussion lives, which is the usual pattern for a Google sample and means the readme is a summary rather than the article.

Four technologies, and each one is named for a specific job

The under-the-hood section lists four items and each is tied to a task rather than to a brand. The model access goes through a hosted artificial-intelligence logic layer for the underlying image and conversational models, which is a deliberate choice: the readme is teaching you to call a model through a Firebase-shaped interface rather than to embed an inference runtime on the device. The interface toolkit is the current declarative one, named for its animation support and for adapting to different screen sizes, and the phrase about delightful animations is a hint that this app is a showpiece. The navigation library is described as the latest one and specifically as building navigation graphs with the declarative toolkit, which is the recent direction for that library and is not what most existing Android code uses. And the camera and media libraries are named together for building a custom camera with custom controls including rear camera, zoom and tap-to-focus, plus playing a promotional video. So the sample demonstrates a camera you wrote, a model you called, animations you declared and a navigation model you built as a graph. That combination is a coherent demonstration of a modern Android application, and each piece is the current recommended approach rather than the compatible one.

Step two is the actual difficulty, and it is a cloud project

The one-line optional override in step four is a font name in a gradle properties file:

properties
fontName="Roboto Flex"

The setup section has four steps and only one of them is about the code. Step one is to clone. Step two is to create a cloud project for the hosted logic layer, generate a configuration file, place it in the app directory, enable a specific cloud API, and then enable the app attestation service on the project, with the readme saying why: to prevent API abuse. Step three is longer than the other three combined, and it is about remote configuration. The project uses a hosted configuration service, and the instruction is to open a defaults file in the source tree, change one flag to enable the image model, and then upload that file as a template through the cloud console, with a sub-list of the exact clicks. The flag is not an environment variable and the upload is not a build step; it is a manual action in a web console. That is the part of this sample most likely to cost an afternoon, and it is worth understanding why it exists. A client application cannot ship a switch that turns on a billable hosted model, so the switch has to live somewhere the developer controls after the build, which is what a remote configuration service is for. The readme also points out a path mismatch that suggests the repository has been reorganised recently, since the text refers to the same defaults file at two different paths. For a learner that is a small friction; for anyone automating the setup it is a bug.

Optional font override, a prebuilt test config, and a build system that expects a device farm

Step four is the only genuinely optional part of setup, and it is a font specification placed in a gradle properties file, with an example value naming a variable-width font family. That is a one-line configuration, which is a good contrast with step three. Two other details in the file listing tell you how this project is built. There is a test configuration file committed at the root, named for the same cloud configuration file the setup instructions ask you to generate, which is the standard trick to let a fork build without real credentials. And there is a directory for a build plugin, plus gradle build files written in the current scripting language rather than the older one, which tells you the project has been modernised rather than maintained in place. The build scripts are the more interesting part, and there are four of them at the root: two for presubmit checks and two for releases, split by form factor. There is a mobile presubmit script, a wear presubmit script, a mobile release script and a wear release script, and the repository has separate directories for the main app, a watchface, and a wear target. So the sample ships a watch experience alongside the phone app, which the readme does not mention at all, and the build matrix is designed for a hosted device farm that runs both. A configuration directory at the root plus a continuous integration directory named after a particular vendor's internal system suggests a large-company build pipeline transplanted into a public repository.

Regional availability, an upgrading dependency, and a maintenance cadence you can date

The availability section is the most practically important paragraph after setup. Because the background feature uses a named preview model of the hosted API, the app is not supported in a number of countries across three regions, and the readme links the model documentation for more information. Preview models are by definition not generally available, so this is expected, and a sample app that depends on one has a shelf life tied to the preview rather than to the code. The readme also says the model will change, so the two facts compound: the region list and the model may both differ from what you read. The maintenance picture is healthier than the app's own status line suggests. There are three releases in the recent list, two of them within about a week of each other in September of last year, and a commit two days before the date this was written. A sample application inside a platform organisation's own repository gets maintained on the platform's cadence rather than the sample's, which is why the last commit is recent while the last release is a year old. The version string in the licence line is also different again, which is a small inconsistency worth noting if you are pinning anything. The licence itself is permissive and applies to the version-two rewrite, which the readme specifies because the previous bot builder was a separate thing.

Editorial conclusion

Read Androidify if you are learning how to wire a hosted image model into a modern Android application, because it is a complete worked example with the cloud setup written out step by step, which is the part that is hard to get from documentation. Do not adopt it as a starting point for your own app, because there is no local inference path, the feature depends on a preview model unavailable in several regions, and the readme says the sample model is being replaced. Four things to verify. Regional availability, since the readme names the model and the regions where it does not work, and that is a hard blocker rather than a quality difference. Whether the sample model is the one you will get, because the readme says a purpose-trained version is coming and the current output is described as surprising. What the app check and remote configuration are for, since both are called out as abuse prevention and both are things a sample app teaches you to configure that a real app needs to configure properly. And how the two app targets relate, because the repository carries a mobile app and a watchface directory with separate presubmit and release scripts, so you are looking at more than one product. The licence is Apache-2.0, version 1.3.0 was released on 2025-09-26, and the last push was on 2026-09-20.

Frequently asked questions

What does the Androidify sample app do?

It is an open source app for learning how to build model-driven experiences on Android, using the current declarative interface toolkit, a hosted generative model through a cloud logic layer, a camera library with custom controls, and the latest navigation library for graph-based navigation. The readme describes it as a rebuild of an earlier popular bot builder.

How do I set up Androidify?

Four steps. Clone the repository. Create a cloud project for the hosted logic layer, generate a configuration file, place it in the app directory, enable the required API and the app attestation service to prevent API abuse. Then edit a defaults file in the source tree to enable the image model and upload it through the cloud console as a remote configuration template. Optionally set a font in a gradle properties file.

Is the Androidify app available everywhere?

No. The readme says the background feature uses a named preview model of the hosted API, so the app is not currently supported in a number of countries in Europe, the Middle East and Africa, and links the model documentation for details. The readme also warns the sample currently uses a general-purpose image model rather than the purpose-trained one being worked on.

What does Androidify ship besides the phone app?

The repository has separate directories for a watchface and a wear target alongside the main app, and four root build scripts split into presubmit and release for the two form factors. A continuous integration directory named after a large vendor's internal build system is also present, suggesting a hosted device farm runs both targets.

What licence is Androidify released under?

Apache License 2.0, and the readme specifies it applies to the version-two rewrite. Recent releases include 1.3.0 from 2025-09-26 and two earlier versions the same month, and the last commit was on 2026-09-20.

Official sources

  1. android/androidify on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/android-androidify.svg)](https://hysenlabs.com/projects/android-androidify)