Class Sdk

java.lang.Object
org.robolectric.pluginapi.Sdk
All Implemented Interfaces:
Comparable<Sdk>
Direct Known Subclasses:
DefaultSdkProvider.DefaultSdk

public abstract class Sdk extends Object implements Comparable<Sdk>
Represents a unique build of the Android SDK.
  • Constructor Details

    • Sdk

      protected Sdk(int apiLevel)
  • Method Details

    • getApiLevel

      public final int getApiLevel()
      Returns the Android API level for this SDK.

      It must match the version reported by android.os.Build.VERSION.SDK_INT provided within.

      See Also:
    • getAndroidVersion

      public abstract String getAndroidVersion()
      Returns the Android Version for this SDK.

      It should match the version reported by android.os.Build.VERSION.RELEASE provided within.

      If this is an expensive operation, the implementation should cache the return value.

      See Also:
    • getAndroidCodeName

      public abstract String getAndroidCodeName()
      Returns the Android codename for this SDK.

      It should match the version reported by android.os.Build.VERSION.CODENAME provided within.

      If this is an expensive operation, the implementation should cache the return value.

    • getJarPath

      public abstract Path getJarPath()
      Returns the path to jar for this SDK.
    • isSupported

      public abstract boolean isSupported()
      Determines if this SDK is supported in the running Robolectric environment. An SDK might be unsupported if e.g. it requires a newer version of the JVM than is currently running. Unsupported SDKs should throw some explanatory exception when getJarPath() is invoked. If this is an expensive operation, the implementation should cache the return value.
    • getUnsupportedMessage

      public abstract String getUnsupportedMessage()
      Returns a human-readable message explaining why this SDK isn't supported. If this is an expensive operation, the implementation should cache the return value.
    • isKnown

      public boolean isKnown()
      Determines if this SDK is known by its provider. Unknown SDKs can serve as placeholder objects; they should throw some explanatory exception when getJarPath() is invoked.
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • compareTo

      public int compareTo(@Nonnull Sdk o)
      Instances of Sdk are ordered by the API level they implement.
      Specified by:
      compareTo in interface Comparable<Sdk>
    • verifySupportedSdk

      public abstract void verifySupportedSdk(String testClassName)
      Verify that the SDK is supported.

      Implementations should throw an exception if SDK is unsupported. They can choose to either throw org.junit.AssumptionViolatedException to just skip execution of tests on the SDK, with a warning, or throw a RuntimeException to fail the test.