Packages
mob_dev
0.2.2
0.6.23
0.6.22
0.6.21
0.6.20
0.6.19
0.6.18
0.6.17
0.6.16
0.6.15
0.6.14
0.6.13
0.6.12
0.6.11
0.6.10
0.6.9
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.17
0.5.16
0.5.15
0.5.14
0.5.13
0.5.12
0.5.11
0.5.10
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.0
0.3.37
0.3.35
0.3.34
0.3.33
0.3.28
0.3.26
0.3.23
0.3.21
0.3.19
0.3.18
0.3.17
0.3.16
0.3.15
0.3.14
0.3.13
0.3.12
0.3.11
0.3.10
0.3.9
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.18
0.2.17
0.2.15
0.2.14
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.0
Development tooling for the Mob mobile framework
Current section
Files
Jump to
Current section
Files
lib/mix/tasks/mob.devices.ex
defmodule Mix.Tasks.Mob.Devices do
use Mix.Task
@shortdoc "List all connected Android and iOS devices"
@moduledoc """
Scans for connected Android devices (via adb) and iOS simulators
(via xcrun simctl) and prints their status.
mix mob.devices
Useful for diagnosing connection issues before running mix mob.connect.
"""
alias MobDev.Discovery.{Android, IOS}
alias MobDev.Device
@impl Mix.Task
def run(_args) do
Mix.Task.run("app.config")
android = Android.list_devices()
ios = IOS.list_devices()
IO.puts("\n#{IO.ANSI.cyan()}Android#{IO.ANSI.reset()}")
if android == [] do
IO.puts(" (none — is adb installed? Any devices connected?)")
else
Enum.each(android, fn d ->
IO.puts(" " <> Device.summary(d))
print_android_hints(d)
end)
end
IO.puts("\n#{IO.ANSI.cyan()}iOS#{IO.ANSI.reset()}")
if ios == [] do
IO.puts(" (none — is a simulator running?)")
else
Enum.each(ios, fn d ->
IO.puts(" " <> Device.summary(d))
end)
end
IO.puts("")
end
defp print_android_hints(%{status: :unauthorized}) do
IO.puts(" #{IO.ANSI.yellow()}→ Check device for 'Allow USB debugging?' prompt#{IO.ANSI.reset()}")
end
defp print_android_hints(%{platform: :android, serial: serial}) do
case Android.developer_mode(serial) do
:disabled ->
IO.puts(" #{IO.ANSI.yellow()}→ Enable Developer Mode: Settings → About → tap Build Number 7×#{IO.ANSI.reset()}")
_ -> :ok
end
end
defp print_android_hints(_), do: :ok
end