Android SDK for Snabble
minSdkVersion = 21
compileSdkVersion = 29
java 8
androidx and a material 3 theme for ui components
Add the snabble and Datatrans Repository to your gradle Repositories
repositories {
maven {
url 'https://raw.githubusercontent.com/snabble/maven-repository/releases'
}
}
Then add the library to your dependencies.
dependencies {
// core library
implementation 'io.snabble.sdk:core:{currentVersion}'
// user interface library
implementation 'io.snabble.sdk:ui:{currentVersion}'
}
Because we make use of org.apache.commons.io
API desugaring with NIO is needed:
android {
// ...
compileOptions {
// Flag to enable support for API desugaring.
isCoreLibraryDesugaringEnabled = true
}
}
dependencies {
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs_nio:2.0.4")
// ...
}
The library can be installed to the local maven repository using:
./gradlew publishToMavenLocal
Make sure you add maven local to your repositories in your gradle script.
repositories {
mavenLocal()
}
Then add the library to your dependencies. (Note: The + means it always uses the latest version)
dependencies {
implementation 'io.snabble.sdk:core:+'
implementation 'io.snabble.sdk:ui:+'
}
You can initialize the SDK by specifying metadata in the AndroidManifest.xml
<meta-data
android:name="snabble_app_id"
android:value="YOUR_APP_ID" />
<meta-data
android:name="snabble_secret"
android:value="YOUR_SECRET" />
You also can initialize the SDK programmatically by specifying in the AndroidManifest.xml:
<meta-data
android:name="snabble_auto_initialization_disabled"
android:value="true" />
And then initialize the SDK via code.
val config = Config(
appId = YOUR_APP_ID,
secret = YOUR_SECRET,
)
Snabble.setup(application, config)
To observe the current initialization state of the SDK use:
Snabble.initializationState.observe(this) {
when(it) {
InitializationState.INITIALIZING -> {}
InitializationState.INITIALIZED -> {
val projects = Snabble.projects // access to projects
}
InitializationState.ERROR -> {
// error detailing why the initialization failed
val error = Snabble.error
// you can call setup again without arguments to retry the initialization
// e.g. on network failure
Snabble.setup()
}
}
}
If using a theme that is explicitly only light mode (and not a DayNight theme) you need to set
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
or else some resources may get grabbed from the "-night" folders when the device is set to night mode
snabble GmbH, Bonn