GuideNovember 24, 20266 min read

Config Sync for Mobile Developers (Xcode, Android Studio, Flutter)

Xcode keybindings, Android Studio settings, Flutter SDK config, CocoaPods auth, Gradle credentials, and signing certificates. Sync everything a mobile developer needs.

Mobile Dev Has the Most Complex Toolchain

Mobile developers deal with a unique configuration challenge. You are not working with one editor and one runtime. You are juggling Xcode, Android Studio (and its JetBrains-based settings system), platform SDKs, package managers for multiple platforms, signing certificates, provisioning profiles, and emulator configurations. The surface area is enormous.

Making this worse, mobile development often requires multiple machines. You might have a Mac for iOS builds, a more powerful desktop for Android compilation, and a laptop for on-the-go work. Keeping these environments consistent is a constant battle that most teams solve with lengthy onboarding documents that are always out of date.

ConfigSync simplifies this by capturing and restoring your complete mobile development setup across every machine.

Xcode Settings and Keybindings

Xcode stores its preferences in the macOS defaults system and in plist files scattered across ~/Library/. Key settings include code snippets, custom keybindings, font preferences, and debugging behaviors.

Track Xcode configuration
# Track Xcode keybindings $ configsync add config ~/Library/Developer/Xcode/UserData/KeyBindings/ # Track Xcode code snippets $ configsync add config ~/Library/Developer/Xcode/UserData/CodeSnippets/ # Track Xcode themes $ configsync add config ~/Library/Developer/Xcode/UserData/FontAndColorThemes/ # Export Xcode defaults to a restore script $ defaults read com.apple.dt.Xcode > ~/xcode-defaults.plist $ configsync add config ~/xcode-defaults.plist

Xcode keybindings are particularly important because muscle memory takes weeks to build. Losing your custom keybindings on a new machine means fighting the editor instead of writing code.

Android Studio via the JetBrains Module

Android Studio is built on IntelliJ IDEA, which means it follows the JetBrains settings structure. If you have the JetBrains module enabled, it captures Android Studio settings automatically.

Track Android Studio settings
# Enable the JetBrains module (covers Android Studio) $ configsync enable module jetbrains # This captures: # ~/Library/Application Support/Google/AndroidStudio*/ # Keymaps, code styles, inspection profiles # Live templates and file templates # Track .ideavimrc if you use IdeaVim $ configsync add config ~/.ideavimrc
The JetBrains module detects Android Studio, IntelliJ IDEA, WebStorm, and other JetBrains IDEs. It captures settings from whichever ones are installed on your machine.

Flutter SDK Configuration

Flutter has its own configuration layer that sits on top of both Xcode and Android Studio. Dart analysis options, Flutter channel preferences, and pub cache settings all affect your development workflow.

Track Flutter configuration
# Track Flutter and Dart analysis settings $ configsync add config ~/.flutter_settings $ configsync add config ~/.dart/dartdev.json # Track global analysis options $ configsync add config ~/analysis_options.yaml # Track pub credentials for private packages $ configsync add config ~/.pub-cache/credentials.json --encrypt

CocoaPods and Gradle Authentication

Private pod repos and Maven repositories require authentication that is stored locally. Losing these credentials means you cannot build your project.

Track package manager auth
# CocoaPods authentication for private repos $ configsync add config ~/.netrc --encrypt # Gradle properties (often contains signing info) $ configsync add config ~/.gradle/gradle.properties --encrypt # Maven settings for Android libraries $ configsync add config ~/.m2/settings.xml --encrypt
Package ManagerConfig FileContains Secrets
CocoaPods~/.netrc, ~/.cocoapods/Yes (repo auth)
Gradle~/.gradle/gradle.propertiesYes (signing, Maven auth)
pub (Dart)~/.pub-cache/credentials.jsonYes (private packages)
npm (React Native)~/.npmrcYes (registry tokens)

Signing Certificates and Provisioning Profiles

Code signing is the most sensitive configuration in mobile development. iOS requires provisioning profiles and certificates from Apple. Android requires keystore files for signing release builds. These are irreplaceable if lost.

Encrypt and sync signing materials
# Store Android keystore as encrypted config $ configsync add config ~/keystores/release.keystore --encrypt $ configsync secret set KEYSTORE_PASSWORD $ configsync secret set KEY_ALIAS_PASSWORD # iOS provisioning profiles $ configsync add config ~/Library/MobileDevice/Provisioning\ Profiles/ --encrypt # iOS signing certificate (exported as .p12) $ configsync add config ~/certificates/ios-distribution.p12 --encrypt $ configsync secret set P12_PASSWORD
Signing certificates and keystores are the crown jewels of your mobile setup. Always use the --encrypt flag. ConfigSync encrypts with AES-256-GCM and restores with restrictive file permissions.

The Complete Mobile Developer Push

Once everything is configured, your push captures the entire cross-platform mobile development environment:

Push your mobile dev setup
$ configsync push -m "Mobile dev environment - iOS + Android + Flutter" Scanning modules: jetbrains, shell, git, ssh, homebrew... Tracking 16 additional configs... Encrypting 9 secret files (keystores, certs, auth)... Pushed snapshot (5.2 MB) in 7s.

When you pull on a new machine, you get your Xcode keybindings, Android Studio settings, Flutter configuration, signing certificates, and package manager auth all restored in the right places. The only step left is opening Xcode and Android Studio to let them index your projects.

Ready to try ConfigSync?

Sync your entire dev environment across machines in minutes. Free forever for up to 3 devices.