Android native app integration
Integrating Appfigurate Library into Android native apps
Android native apps can be developed in both Kotlin and Java.
For Flutter apps, jump to Flutter integration. For React Native apps, jump to React Native integration.
Prerequisites
You must have the following:
Android Studio or IntelliJ.
Android SDKs and associated Emulators.
AppfigurateSE macOS or Windows app.
Appfigurate Emulator app installed into one or more Android Emulators (use the AppfigurateSE macOS or Windows app for easy 1 click installation).
Your app must have a minimum API level 26 (Android 8.0 Oreo) in order to link Appfigurate Library.
Modify build.gradle
In your app's build.gradle add the following to the dependency section:
implementation 'nz.co.electricbolt:appfiguratelibrary:3.1.0'Add new app into Appfigurate Emulator
Run Appfigurate in the Android Emulator.
Tap ≡ Add app.
Select app type Android.
Enter a URL scheme that will be used by Appfigurate to launch your app in order to read or apply configuration. The URL scheme must be 4-64 ASCII characters in length and must be unique to your app. e.g. YOUR-APP-URLSCHEME
Tap Add app.
Output source code snippets
In Appfigurate Emulator app, under the KOTLIN/ANDROID LIBRARY INTEGRATION or JAVA/ANDROID LIBRARY INTEGRATION section:
Tap Output implementation then tap Console.
The output will be displayed in Android Studio, under the Logcat tab. Filter the output to application nz.co.electricbolt.appfigurate
Create nz.co.electricbolt.appfiguratelibrary.Configuration subclass
In your app, add a Kotlin class called Configuration.kt
Paste the Kotlin implementation file output to the Console in the section Output source code snippets above.
Kotlin Configuration example
package com.yourcompany.yourapp
import nz.co.electricbolt.appfiguratelibrary.annotations.*
public class Configuration extends nz.co.electricbolt.appfiguratelibrary.Configuration {
companion object {
fun CONFIGURATION(): ExampleConfiguration {
return sharedConfiguration() as ExampleConfiguration
}
}
@BooleanProperty(description = "Log debug output to console", restart = false)
var debugLogging = false
@StringPropertyListEdit(regularExpression = "https://[\\w\\.-]+\\.yourappserver.com/.*",
description = "Application server url", restart = false, keys = {"Dev", "Prod"},
values = {"https://dev.yourappserver.com/api", "https://www.yourappserver.com/api"})
var String? serverURL = null
override fun allowInvalidSignatures(): Boolean {
return BuildConfig.DEBUG
}
override fun publicKey(): String {
// 41 36 87 71 0D 05
return """-----BEGIN PUBLIC KEY-----\n
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4TZnKfGeXttN7Rr3eiAZ\n
...
ywIDAQAB\n
-----END PUBLIC KEY-----\n
""".trimIndent()
}
override fun reset() {
debugLogging = true
serverURL = "https://www.yourappserver.com/api"
}
}In your app, add a Java class called Configuration.java
Paste the Java implementation file output to the Console in the section Output source code snippets above.
Java Configuration example
package com.yourcompany.yourapp;
import nz.co.electricbolt.appfiguratelibrary.annotations.BooleanProperty;
import nz.co.electricbolt.appfiguratelibrary.annotations.StringPropertyListEdit;
public class Configuration extends nz.co.electricbolt.appfiguratelibrary.Configuration {
public static Configuration CONFIGURATION() {
return (Configuration) Configuration.sharedConfiguration();
}
@BooleanProperty(description = "Log debug output to console", restart = false)
boolean debugLogging;
@StringPropertyListEdit(regularExpression = "https://[\\w\\.-]+\\.yourappserver.com/.*",
description = "Application server url", restart = false, keys = {"Dev", "Prod"},
values = {"https://dev.yourappserver.com/api", "https://www.yourappserver.com/api"})
String serverURL;
@Override
public boolean allowInvalidSignatures() {
return BuildConfig.DEBUG;
}
@Override
public String publicKey() {
// 41 36 87 71 0D 05
return "-----BEGIN PUBLIC KEY-----\n"
+ "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4TZnKfGeXttN7Rr3eiAZ\n"
...
+ "ywIDAQAB\n"
+ "-----END PUBLIC KEY-----\n";
}
@Override
public void reset() {
debugLogging = true;
serverURL = "https://www.yourappserver.com/api";
}
}Edit AndroidManifest.xml
In your apps AndroidManifest.xml file include the following meta-data and provider sections inside your application section. Replace the text YOUR-APP-URLSCHEME with your own app's URL Scheme - the same value you added in the section Add new app into Appfigurate Emulator above.
AndroidManifest.xmlexample
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" package="com.yourcompany.yourapp">
<application
...
<meta-data
android:name="APLConfigurationSubclass"
android:value=".Configuration"/>
<provider
android:authorities="YOUR-APP-URLSCHEME"
android:name="nz.co.electricbolt.appfiguratelibrary.CommandContentProvider"
android:exported="true">
</provider>
... Test your Android app
To test that you've successfully updated your app to use Appfigurate:
Compile and run your app to the Emulator instance.
Launch the Appfigurate Emulator app.
Tap your applications row. The app's configuration will be read in the background.
Appfigurate's Configure app screen will now be displayed. You can now change the
debugLoggingandserverURLproperties. TapApply⌄to apply the configuration to your watchOS app.
Now jump to Supported property types.
Last updated