Skip to main content
GrN.dk

Main navigation

  • Articles
  • Cases
  • Contact
  • Your Digital Project Manager
  • About Greg Nowak
  • Services
  • Portfolio
  • Container
    • Excel Freelancer
    • Kubuntu - tips and tricks
    • Linux Apache MySQL and PHP
    • News
    • Image Gallery
User account menu
  • Log in

Breadcrumb

  1. Home

Android

Diagram of the delivery pipeline in three lanes: Android to Google Play (commit on main, host gate of 44 tests, signed build, emulator smoke on a real device, Play production); iOS to TestFlight (App Store Connect subscription-approval gate, cloud macOS build, build number from Apple); and a daily device round that reseeds four subscription states and reads the screen back by OCR. Beside it, the real screenshot the pipeline pulls off the emulator on every publish.

Mit Håndværk publishes itself to two app stores — and a real phone holds the veto

Mit Håndværk — Danish marketplace app for craft, art and design (mithaandvaerk.dk); Flutter on Android and iOS, Laravel backend
Mobile delivery automation — Flutter CI/CD, on-device acceptance testing, Google Play and App Store publishing

Mit Håndværk is a Danish marketplace app for craft, art and design — a Flutter app on Android and iOS over a Laravel backend, with subscriptions, real-time chat and push. This case is not about the app's screens. It is about the machinery that puts a new version of it in front of users: a pipeline that takes a commit on main and, roughly ten minutes later, has published it to Google Play production — but only after the release has been installed and cold-started on a real Android device and survived it.

The same pipeline covers Apple from a Linux server that cannot build iOS at all: a release tag hands the build to a cloud macOS machine, which signs it and uploads it to TestFlight — and the tag itself cannot be pushed unless the app's subscriptions are actually approved and priced in App Store Connect.

Everything in the picture above is read off the running system: the counters come out of the pipeline's own log, and the phone panel is the screenshot the publish gate pulls off the emulator on every single release.

Vegan Power running in a browser tab on a phone-shaped screen: seven full hearts and the score line "Vegan Power: 1" across the top, a blue sky of cartoon clouds with two oranges and a pear falling through it, a chicken, a dog and a penguin drifting down among them, and the round yellow player waiting with its mouth open at the bottom of the play column.

A 2020 phone game rebuilt for the browser, with a global leaderboard

GrN.dk — internal build
Browser and mobile games

veganpower.grn.dk is Vegan Power, a catch-the-fruit arcade game with a rule you understand in one second: eat fruit, not friends. Fruit falls and you catch it. A chicken, a cow or a penguin falls and you dodge it — each one you hit costs one of your seven hearts. It began in 2020 as a small Flutter and Flame game for Android, released on Google Play that December. In 2026 it was taken apart and rebuilt: it now opens in any browser with no install and no account, keeps a global high-score table on its own small API, and carries a multiplayer beta where two to four players share one arena and shove each other off the fruit.

By Greg Nowak, 9 May, 2020

Android Flutter Notes

Currently running flutter in ubuntu 20.04.

Flutter cli doc: https://flutter.dev/docs/reference/flutter-cli

Flutter pub doc: https://dart.dev/tools/pub/cmd

KVM installation: sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager
Old info: sudo apt install qemu qemu-kvm virt-manager (Remember to enable VT Virtualization in the Bios) - run: sudo kvm-ok (to check)

Tags

  • Linux
  • Android
  • programming
  • mobile
By Greg Nowak, 7 December, 2017

Mobile App Development Notes

It's a jungle how to grasp it?

Android SDK

https://developer.android.com/studio/index.html#command-tools

Tags

  • Android
  • development
By Greg Nowak, 15 August, 2015

Mounting Your Android Phone In Linux

Update 2022-07-14: kill kiod or kiod5 and then do jmtpfs

Update 2021-07-10: sudo aptitude install gmtp

It can be a challenge to mount your Android phone (MTP device) in Linux if you have some strange files from your old Iphone. I needed to do it the hard way.

You need to install mtpfs and use this command: sudo mtpfs -o allow_other /media/android-device

Reference.

 

Tags

  • Linux
  • Android
  • Smartphone
  • File Transfer
Android

Review Greg on Google

Greg Nowak Google Reviews

 

Illustrated infographic summarizing: Not Every AI Job Needs an Instant Answer: Batch the Backlog
Not Every AI Job Needs an Instant Answer: Batch the Backlog
2026-07-28

Move delay-tolerant AI work into dependable batch queues to cut processing costs without compromising quality, data controls, or urgent workflows.

Illustrated infographic summarizing: A stray Set-Cookie can waste your CDN: audit the cache at the edge
A stray Set-Cookie can waste your CDN: audit the cache at the edge
2026-07-27

Cloudflare Cache Response Rules can recover wasted CDN capacity, but first you need a route-level audit of public, personal and authenticated responses.

Illustrated infographic summarizing: Shorter TLS certificates expose every renewal you never automated
Shorter TLS certificates expose every renewal you never automated
2026-07-26

Shorter TLS lifetimes leave less room for manual handoffs and faulty deploy hooks. Build a renewal path that protects service availability.

Illustrated infographic summarizing: One Timeout, Two Orders: Make AI Actions Safe to Retry
One Timeout, Two Orders: Make AI Actions Safe to Retry
2026-07-25

A timed-out AI action may already have succeeded. Stable keys, durable ledgers, queues and stored results prevent a routine retry from duplicating real work.

Illustrated infographic summarizing: Your AI Visibility Dashboard Needs a Methodology, Not More Charts
Your AI Visibility Dashboard Needs a Methodology, Not More Charts
2026-07-24

A practical framework for measuring AI-search visibility with fixed prompts, repeated tests, separate metrics, retained evidence, and honest reporting.

Illustrated infographic summarizing: AI Admin APIs Are Here—But Your Directory Is Still the Source of Truth
AI Admin APIs Are Here—But Your Directory Is Still the Source of Truth
2026-07-23

New AI admin APIs can automate access and spend controls, but reliable governance still starts with authoritative directory data and clear ownership.

Illustrated infographic summarizing: OpenAI Presence Arrived—But Is Your Workflow Ready for an Agent?
OpenAI Presence Arrived—But Is Your Workflow Ready for an Agent?
2026-07-22

Before an AI agent can take on real work, its workflow needs clear scope, permissions, handoffs, evaluation cases, and production monitoring.

Illustrated infographic summarizing: Chatbot Transcripts Quietly Became a Retention and Redaction Problem
Chatbot Transcripts Quietly Became a Retention and Redaction Problem
2026-07-21

Chatbot transcripts spread across providers, logs and support tools. Here is how to map each copy, redact sensitive data and test deletion properly.

Illustrated infographic summarizing: Cloudflare Service Keys Stop in September: Find Every Caller
Cloudflare Service Keys Stop in September: Find Every Caller
2026-07-20

Cloudflare Service Keys stop working on September 30, 2026. Here is how to find every caller, move to scoped API tokens and avoid a late outage.

Illustrated infographic summarizing: Your AI Workflow Needs an Acceptance Test Before It Meets Customers
Your AI Workflow Needs an Acceptance Test Before It Meets Customers
2026-07-19

A practical way to test AI workflows using realistic scenarios, tool checks, human rubrics, regression suites, and clear release gates.

More articles
RSS feed

GrN.dk web platforms, web optimization, data analysis, data handling and logistics.