public final class AndroidApplicationResolver
Resolves the appFile value used by StartApplication into something Appium can
install, transparently converting a real Android App Bundle (AAB) into a cached universal APK
first. Behavior (per STUDIO-10661):
bs://, sauce-storage:,
lt://, ...) are passed through unchanged — Katalon has no access to those bytes.http(s):// URLs are downloaded first, only to inspect the bytes. If the download
turns out not to be an AAB, the original URL is handed back unchanged — Appium (local or
remote) can download http(s):// URLs itself, and our local temp copy is discarded..apk behavior is untouched..apk path is returned. The converted
.apk only ever exists on this machine's local disk, so this class is only ever called
for a LOCAL Appium run — StartApplicationKeyword skips it entirely for a REMOTE run,
since there is no upload step to a remote Appium server's own app storage.This runs before any Appium session is attempted (called from
StartApplicationKeyword), so a corrupt/invalid AAB fails fast with a clear message
instead of surfacing as a confusing Appium/device error later.
| Type Params | Return Type | Name and description |
|---|---|---|
|
public static String |
resolve(String appFile)
|
MobileDriverFactory.startMobileDriver's throws clause,
so no signature changes ripple to existing callers. Distinguishable failure
causes (download vs. invalid-bundle vs. bundletool-conversion vs. signing) are all
preserved as the wrapped cause and in the message text.