Posts

Integrating Fastlane with CI/CD Pipelines- 7

Image
  Using Jenkins to automate your Android app’s build and release process can save a lot of time and effort. By integrating Fastlane into your Jenkins pipeline, you can automate tasks like versioning, building, testing, and uploading your app to the Google Play Store. In this section, we’ll walk through the steps to integrate Fastlane into Jenkins. Step 1: Install Fastlane on Your Jenkins Server First, you need to ensure that Fastlane is installed on your Jenkins server. You can install Fastlane using the following steps: Install Ruby : Since Fastlane is built with Ruby, you’ll need to install Ruby on your Jenkins server. On a Linux-based server, you can install Ruby by running: sudo apt update sudo apt install ruby-full Install Fastlane : Once Ruby is installed, you can install Fastlane using the following command: sudo gem install fastlane -NV Alternatively, you can add Fastlane to your project’s Gemfile and install it using Bundler (recommended for managing dependenc...

Managing App Versioning and Changelogs- 6

Image
 When you release a new version of your Android app, there are a few important details that need to be updated: the version number, version code, and changelog. These are all critical for tracking releases and communicating new features or fixes to your users. Managing these elements manually can be time-consuming and error-prone, especially as your app evolves. But with Fastlane , you can automate versioning and changelog management, saving you time and avoiding mistakes. In this section, we’ll explore how to automate app versioning and changelog management using Fastlane . Step 1: Automating Versioning with increment_version_code Every time you upload a new version of your app to the Play Store, you need to increase the version code . This is required by Google Play to differentiate between different versions of your app. If you don’t increment the version code correctly, your app upload will fail. Fastlane makes this simple by automating the version code increment with the incre...

Automating Screenshot Generation with Screengrab- 5

Image
  If you’ve ever uploaded an app to the Google Play Store, you know that taking screenshots for all device types and screen sizes can be a tedious and repetitive task. Thankfully, Screengrab  — a Fastlane tool — automates this process, making it easy to capture screenshots directly from your app, without the need for manual intervention. In this section, we’ll show you how to set up Screengrab to automatically generate your app’s screenshots for the Play Store and save a lot of time in the process. Step 1: Install Screengrab Before we start, you need to install Screengrab as part of your Fastlane setup. If you’ve already installed Fastlane, then you’re good to go. If not, here’s how you can install it: fastlane add_plugin screengrab This will add Screengrab to your project and install the required dependencies. Once it’s installed, you’ll be able to use Screengrab to capture screenshots directly from your app. Step 2: Set Up Screengrab in Your Fastfile The next step is to ...

Guide to Android App Architecture: Google's Recommendation and Best Practices

Image
  Opening Note! Among numerous discussions and debates on the Internet these days about the suitable architecture to follow and adapt, Google recently published a detailed blog to follow best practices while we are articulating the Android App. App architecture defines the backbone of scalable, maintainable, and high-performance Android apps. In this article, I am trying to curate the key principles from Google’s official guide, ideal for an app architecture. The purpose of this article is to clarify architectural patterns and highlight universal best practices. Resources referenced: [Google’s Official Guide to App Architecture] [Phillipp Lackner’s YouTube Deep-dive]​ Common factors to design architecture 1. Tackle various config changes An Android App must run on a wide variety of available devices in the global market i.e., phones, tablets, foldables, and various orientations. Configuration changes like screen rotation, recreate activities. We must use ViewModels to preser...

Setting up Backup Rules in Android: Why Auto-Backup Matters - and Where It Bites

Image
  Undoubtedly, if we all strive everyday to build a robust app which support any Android Device in the world. There’s multiple aspects in Android Development lifecycle which is overlooked; i.e. Auto Backup Machenism . I’ll be talking in detail about this in this article, it has been very popular these days, since the popularity of Offline-first applications drastically increased. Precisely this is governed by android:allowBackup and backup_rules.xml configuration. Whether you’re optimizing a production release or debugging persistent reinstall issues, mastering app backups is really important skill. Highlighting the importance of android:allowBackup By default, android:allowBackup is true , which commands the application to back up the data to Google Drive , which consist of Databases , SharedPreferences , and Files . The purpose of this setting is to protect the user’s Data in case of App Uninstall or Device Migration . Anyways, we should be very cautious while playing with ...

Implement SharedViewModel in Pure Jetpack Navigation App

Image
  We all must have used SharedViewModel in Fragment based navigation using activityViewModels(). But now… what if our app is built in 100% Jetpack Compose? No fragments, No FragmentManager, No ViewModelStoreOwner. So… if we have 2 basic authentication screens LoginScreen and RegisterScreen, how can we share viewmodel/state across composables? 👇🏻 // Inside any Composable screen val parentEntry = remember(navController) { navController.getBackStackEntry( "auth_graph" ) // Your navGraph route } val viewModel: SharedViewModel = viewModel(parentEntry) Now both LoginScreen() and RegisterScreen() inside auth_graph can share the same SharedViewModel. ❤️ 💡 Why this matters If we’re building multi-step flows (Auth, Checkout, Onboarding), this keeps our architecture clean, and state scoped. Checkout the Git Repo from here… https://github.com/dev-vikas-soni/compose-shared-view-model If you enjoyed the article and would like to show your support, be sure to: 👏 Applaud for the story...

Apple 🍎WWDC 2025: What's New in Simple Words 🌟

Image
  Apple just dropped a tech bomb at WWDC 2025, and it’s packed with shiny new features, futuristic upgrades, and a whole lot of “finally!” moments. Here’s your no-fluff, all-fun roundup of what’s new: 💻 macOS Tahoe 26: Now With a Side of Phone Calls New Name, Who Dis? Say hello to macOS Tahoe 26 — because version numbers are so last decade. Phone App on Mac: Yes, you can now make actual phone calls from your MacBook. Your iPhone might get jealous. Live Activities: Your iPhone’s Live Activities now float into your Mac’s menu bar like magic. Spotlight Filters & Shortcuts: Searching just got smarter. And lazier. We love it. 🧊 Liquid Glass Interface: Apple Went Full Sci-Fi Glass Everywhere: App icons now float on a dreamy, translucent background. It’s like your screen took a spa day. Stretchy Time: You can now stretch the time on your lock screen. Because… why not? Available across iOS 26, iPadOS 26, and macOS Tahoe 26. 🎮 New Games App: One App to Rule Them A...

The Science Behind AI Chatbots and Language Models : LLM

Image
W ith the current digital era, artificial intelligence (AI) is gradually changing the manner in which we communicate with technology. From virtual assistants to bots, AI is becoming increasingly intelligent and human-like in its interactions. Behind this technology is the idea of large language models (LLMs), which effectively predict and create text. This blog post will explore the intriguing realm of AI chatbots, explaining their mechanism and the training process behind their capacity to serve users. Overview of Large Language Models Large language models are robust machines that rely on enormous quantities of data and sophisticated algorithms to make predictions about language. Large language models are trained on large text databases on the web, allowing them to produce meaningful and contextually correct responses in real-time. In order to comprehensively understand how these models work, it is necessary to look into their structure and functioning. The Mechanics of Language ...