Machine Migration Checklist
This page records the path-sensitive and machine-sensitive checks required to move Android and iOS development or release work to another machine.
Files and settings to verify
local.properties
Android Studio or Gradle usually regenerates this file per machine. The important value is:
sdk.dir=/absolute/path/to/Android/sdk
Check these locations:
apps/mobile/android/local.propertiesapps/pos-terminal/android/local.properties
Do not commit machine-specific SDK paths unless the team intentionally wants them tracked.
Shell environment
Verify these environment variables when Gradle cannot find Java or the Android SDK:
JAVA_HOMEANDROID_HOMEANDROID_SDK_ROOT
Hardcoded path assumptions
Repository scripts should prefer relative paths. The current apps/mobile/package.json APK install script is relative and should be safe to move across machines.
Still check machine-local path assumptions in:
- shell aliases
- CI/CD scripts
- Android Studio local settings
- untracked helper scripts on a developer machine
Migration steps
- Clone the repo to the new machine.
- Install Node, Yarn, Java, Android SDK, the required NDK, Xcode, CocoaPods, and CMake.
- Run
yarn installfrom the monorepo root. - Open Android Studio once so SDK components and
local.propertiescan be created or refreshed. - Verify
JAVA_HOME,ANDROID_HOME, andANDROID_SDK_ROOT. - Verify release keystore location and signing properties.
- Run
yarn mobile:androidfor a dev build. - Run
yarn mobile:apkoryarn mobile:aabfor release packaging.
iOS setup checks
For mobile iOS work, start from:
cd apps/mobile/ios
pod install
Before running pod install or xcodebuild on a new machine, verify:
- Xcode has completed first launch and required components are installed.
- Simulator runtime is installed from Xcode Settings.
cmake --versionworks.- The machine can reach GitHub, because some pods are downloaded from GitHub.
yarn installwas run at the repo root so rootpostinstallpatches are applied.
If xcodebuild reports first-launch or missing plugin issues, run:
xcodebuild -runFirstLaunch
The mobile iOS Podfile contains repo-specific recovery fixes:
- It recreates
gRPC-Core.modulemapsymlinks underPods/Headers/Private/grpcandPods/Headers/Public/grpc. - It removes
-weak_framework "FirebaseFirestoreInternal"from generated app xcconfigs to avoid link failures.
The root postinstall script runs scripts/patch-react-native-view-shot-ios.js, which patches react-native-view-shot for React Native new architecture by using RCTScrollViewComponentView when required.
Simulator smoke test:
cd apps/mobile/ios
xcodebuild -workspace BsrPosPlus.xcworkspace -scheme BsrPosPlus -configuration Debug -sdk iphonesimulator CODE_SIGNING_ALLOWED=NO build
Known repo-specific notes
- Mobile release packaging is already wired through workspace scripts at the repo root.
- Terminal app currently has
androidandiosrun scripts, but no root-levelterminal:apkorterminal:aabscripts yet. apps/pos-terminal/android/app/build.gradlehas additionalafterEvaluatedependencies forreact-native-workletsandreact-native-reanimated, so CMake or prefab issues on a new machine are likely to show up there first.apps/mobile/android/app/google-services.jsonandapps/pos-terminal/android/app/google-services.jsonexist in the repo, so Firebase config is not purely machine-local.apps/mobile/ios/Podfileincludes iOS pod recovery hooks for gRPC and FirebaseFirestoreInternal link issues.- Root
package.jsonhas apostinstallscript that patchesreact-native-view-shotafter dependency install.
First checks when a build fails
JAVA_HOMEpoints to a real JDK.sdk.dirpoints to the installed Android SDK.- The required SDK platform, build-tools, and NDK are installed.
- The release keystore path exists and signing secrets are loaded.
- Any absolute path in machine-local scripts or aliases still matches the new machine.
- For iOS, Xcode first launch is complete, simulator runtime is installed, CMake exists, GitHub is reachable,
pod installhas completed, and rootyarn installhas run the postinstall patch.