Reproduced on a physical device (Android 11): app installed via bare 'adb install' of a built APK, then 'mix mob.deploy --device ' (no --native) pushed BEAM files, printed 'Deployed to 1 device(s) / Apps restarted', and the app crash-dumped at boot with {'cannot get bootfile', .../otp/releases/29/start_clean.boot} — the OTP runtime was never installed for that app on that device; only 'mob.deploy --native' pushes it. Third sighting of this failure family (see app-ii3 for the sim variant). Suggest: non-native deploy should detect the missing per-app OTP runtime on each target (cheap adb ls) and either push it or fail loudly naming --native — a green deploy that yields a boot-crashing app costs a full diagnosis cycle every time.
Reproduced on a physical device (Android 11): app installed via bare 'adb install' of a built APK, then 'mix mob.deploy --device ' (no --native) pushed BEAM files, printed 'Deployed to 1 device(s) / Apps restarted', and the app crash-dumped at boot with {'cannot get bootfile', .../otp/releases/29/start_clean.boot} — the OTP runtime was never installed for that app on that device; only 'mob.deploy --native' pushes it. Third sighting of this failure family (see app-ii3 for the sim variant). Suggest: non-native deploy should detect the missing per-app OTP runtime on each target (cheap adb ls) and either push it or fail loudly naming --native — a green deploy that yields a boot-crashing app costs a full diagnosis cycle every time.