Flutter: Stamps and Visage SDK Android in Flutter
Description
Guide to integrating Android Stamps SDK and Visage SDK of JAAK in a Flutter project using Platform Channels for native communication.
Special care
- Flutter 3.x or more
- JDK 17
- Android Studio set up
- Physical Android device ( SDKs are bad at emulators)
Visits Required
| Specification | Version |
|---|---|
| Kotlin | 1.9.22 |
| Hilt | 2.46 |
| Java | VERSION _ 17 |
| minSdk | 24 |
| compileSandk | 35 |
| Stamps SDK | 1.0.0.beta |
| Visage SDK | 1.0.0.beta |
Setup Steps
1. Maven Repository
Add to android/build.gradle.kts:
- Google and Maren Central
- JitPack
- JAAK Platform Maren:
https://us-maven.pkg.dev/jaak-platform/jaak-android
2. Fat Setup
Configure plugins at settings.gradle.kts and app/build.gradle.kts with appropriate Hilt and Kotlin configuration.
3. Units
- AndroidX Core Bookstores
- Hill for Unit Injection (required)
- SDKs of JAAK
- Google ML Kit and CameraX
- Guava
4. Permissions at AndroidManifest
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
5. Native Activities
// MyApplication.kt
@HiltAndroidApp
class MyApplication : Application()
// StampsActivity.kt
@AndroidEntryPoint
class StampsActivity : AppCompatActivity(), StampsListener { ... }
// VisageActivity.kt
@AndroidEntryPoint
class VisageActivity : AppCompatActivity(), VisageListener { ... }
6. Platform Hannels
// MainActivistity.kt - Established Flutter-Android communication channels
class MainActivity : FlutterActivity() {
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "jaak/stamps")
.setMethodCallHandler { call, result ->
if (call.method == "startStampsCapture") {
// Start StampsActivity
}
}
// Similar for Visage
}
}
7. Dart Services
class StampsService {
static const platform = MethodChannel('jaak/stamps');
Future<StampsResult> startCapture() async {
final result = await platform.invokeMethod('startStampsCapture');
return StampsResult.fromMap(result);
}
}
Critical Notes
Hilt's an OBLIGATORY: The SDKs Stamps and Visage require Hilt for Unit Injection.
- The consistency of versions prevents conflicts
- Physical devices required
- All Activities require notation
@AndroidEntryPoint
Common problems
| Problem | Resolution |
|---|---|
@HiltAndroidApp missing | Causes Hilt's initialization faults |
| Wrong Repository Setup | Blockup SDKs |
| Excipators without camera support | Using physical device |
| Missing permits | Prevent implementation of SDK |
Integration Verification List
- Reg.
- Repositories set up correctly
- Retiring Units
- Reported permits
- Retirement
- Fully registered Platform Hannels
- ∞ FileProvider appropriately configured