Packages
mob_dev
0.6.11
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/mob_dev/release/android_precheck.ex
defmodule MobDev.Release.AndroidPrecheck do
@moduledoc false
# Shared precondition checks for Android release builds. Both the OTP
# cross-compile and the OpenSSL/crypto NIF cross-compile need to verify
# that an NDK install exists at the expected path before running any
# of their own logic. This module factors that out so the two recipes
# don't drift.
alias MobDev.NdkVersion
alias MobDev.Release.Errors
@doc """
Verify the Android NDK is installed at the path implied by
`opts[:ndk_root]` (or the default location). Returns :ok or raises
via Errors.precondition/1.
Takes a `shell` module so callers can pass in a fake during tests.
"""
@spec verify_ndk(module(), keyword()) :: :ok | no_return()
def verify_ndk(shell, opts) do
ndk_root = opts[:ndk_root] || default_ndk_root(opts[:ndk_version])
if shell.dir?(ndk_root) do
:ok
else
Errors.precondition(
"Android NDK not at #{ndk_root} — install NDK #{NdkVersion.effective()}"
)
end
end
@doc """
Canonical NDK install path: `~/Library/Android/sdk/ndk/<version>`.
Falls back to `NdkVersion.effective/0` when no version is supplied.
"""
@spec default_ndk_root(String.t() | nil) :: String.t()
def default_ndk_root(version \\ nil) do
Path.join([System.user_home!(), "Library/Android/sdk/ndk", version || NdkVersion.effective()])
end
end