eimzo_flutter 1.0.9
eimzo_flutter: ^1.0.9 copied to clipboard
Flutter plugin wrapping the official E-IMZO Mobile SDK for Uzbekistan electronic signatures. Supports PFX/QR/NFC ID-card/USB token signing and eimzo:// deep links.
1.0.9 #
- ๐งน Android:
EimzoFlutterPlugin.kttozalandi. Foydalanuvchi uchun ko'rinmas, lekin loyiha sog'lig'i uchun foydali optimizatsiya:- Keraksiz
Handler/Looperboqimda olib tashlandi โEImzoSDKcallbacklari allaqachonDispatchers.Mainda chaqiriladi, qo'shimchamainHandler.post { }qatlami foydasiz edi. requireActivity(result)helper'i ajratildi โ 4 ta handler'da takrorlanganactivity ?: result.error("NO_ACTIVITY", ...)patterni bitta funksiyaga yig'ildi.onDetachedFromEnginedaeventChannel.setStreamHandler(null)vaeventSink = nullqo'shildi โ yengil memory leak xavfini yopadi.- Kanal nomlari va deep-link sxemasi
companion objectichida konstantalar sifatida ajratildi. - Kotlin compile warning'lar: 3 โ 0.
- Keraksiz
1.0.8 #
- ๐ Android: USB ulaganda ilova endi avtomatik ochilmaydi. Avvalgi
versiyada
USB_DEVICE_ATTACHEDintent-filter qo'shilgan edi โ natijada FEITIAN token ulanishi bilan OS native UI'ni majburan ochib yuborardi. Bu noqulay edi, shuning uchun intent-filter vaeimzo_usb_device_filter.xmlolib tashlandi. USB token aniqlash hali ham ishlaydi โ faqat foydalanuvchi native UI'ga o'tganida BroadcastReceiver yoqiladi va tugma faollashadi. - Bundled native SDK bumped to
eimzo-sdk-1.2.2.
1.0.7 #
- ๐ Android: USB token avtomatik aniqlash. "USB Token orqali
imzolash" tugmasi endi faqat FEITIAN / CCID smart-card reader
telefonga ulanganda faollashadi. SDK
USB_DEVICE_ATTACHED/DETACHEDbroadcastlarini kuzatib, tugmani real vaqtda yoqadi / o'chiradi. Ulanmagan paytda tugma matni "USB tokenni ulang" ga o'zgaradi. - ๐ชช Android: device-filter + intent-filter. FEITIAN VID (0x096E)
uchun
res/xml/eimzo_usb_device_filter.xml+EImzoActivitymanifestidaUSB_DEVICE_ATTACHEDintent-filter. Token ulanganda OS ilovani avtomatik ochishni taklif qiladi va USB ruxsatini beradi. - ๐งน Android: SDK ommaviy API tozalandi. Barcha ichki klasslar
(
UsbTokenManager,NfcManager,EImzoApiClient, Room DAO/DB,LicenseGuard,QrCryptoManager, ViewModel'lar, va h.k.)internaldeb belgilandi. Endi consumer'da faqat zarur APIlar ko'rinadi. Past darajalisignUsbHashprimitiv olib tashlandi โ USB sign uchun yagona APIsignWithUsbToken(pin, deepLink, callback). - Bundled native SDK bumped to
eimzo-sdk-1.2.1.
1.0.6 #
- ๐ New
CONTRIBUTING.mdโ how to report bugs, suggest features, set up the dev environment, and submit PRs. Helps pub.dev's "package score" community signals and gives external contributors a clear on-ramp. - ๐ Opened public GitHub issues calling for help with desktop and web platform support: macOS #1, Windows #2, Linux #3, Web #4.
1.0.5 #
- ๐ Security hardening (both platforms).
- Android: saved passwords are now AES-256-GCM encrypted with an
AndroidKeyStore-bound key before being written to Room. Plain SQLite
reads on rooted devices yield ciphertext only; the key is bound to
the application UID and is invalidated on
Clear data. Bundled SDK bumped toeimzo-sdk-1.0.2. - Android: the SDK's Room DB and encrypted prefs are now excluded
from
adb backup/ Google Drive cloud backup viaandroid:fullBackupContent+android:dataExtractionRules. Your own app data is untouched โ onlyeimzo_keys.dbis filtered. - iOS:
keys.jsonwritten withNSFileProtectionCompleteUntilFirstUserAuthentication. Pre-first- unlock the file is OS-encrypted; backup / jailbreak extraction yields opaque ciphertext.
- Android: saved passwords are now AES-256-GCM encrypted with an
AndroidKeyStore-bound key before being written to Room. Plain SQLite
reads on rooted devices yield ciphertext only; the key is bound to
the application UID and is invalidated on
1.0.4 #
- ๐ Android setup section rewritten: clearer build.gradle requirements
(Java 17 + desugaring + minSdk 24), explanations of why each piece
is needed, note on
launchMode="singleTop"and Material theme pitfalls.
1.0.3 #
- ๐ README usage and API sections rewritten โ old
init/getInitialDeeplink/onNewDeeplinksnippet was missing theopenSignUicall that actually presents the SDK. New section shows the two real flows: open-from-button and open-from-external-deeplink. No code changes.
1.0.2 #
- ๐ iOS support added. The plugin now bundles the closed-source
EimzoSDK.xcframework(downloaded from the public release onpod install) and exposes the sameopenSignUi(deepLink:)API on iOS. Requires iOS 16+. - The native iOS UI mirrors the Android SDK 1:1: Home, Cards (key list), PFX/QR/NFC import, deep-link auto-sign, in-app QR scan with "Domen va hesh kod" confirmation bottom sheet.
- Example app extended with iOS platform (
example/ios/) โ same two buttons work on both platforms. - See README for iOS-specific setup: minimum deployment target, NFC
entitlement,
Info.plistpermissions,eimzo://URL scheme.
1.0.1 #
- Bundled native SDK bumped to
eimzo-sdk-1.0.1. - Fix: PFX/QR key import crashed with
JsonIOException: Abstract classes can't be instantiated! Class name: uz.eimzo.sdk.network.JsonRpcResponseafter the cert-info HTTP round-trip โ R8 was stripping the no-arg constructors of the Gson-deserialized network DTOs. Added explicit-keeprules for alluz.eimzo.sdk.network.*DTOs (JsonRpcRequest/Response,CertInfoParams/Result,SiteInfoParams/Result,SendPkcs7Params,Pkcs7Result). - Fix:
ClassNotFoundException: androidx.viewbinding.ViewBindingat runtime โ added explicitapi 'androidx.databinding:viewbinding:8.1.0'to the plugin's Gradle dependencies. - Fix:
NoClassDefFoundError: pfx2qr.Pfx2qrduring PFX import โ bundledpfx2qr.jarand thelibgojni.sonative library (all 4 ABIs) directly into the plugin so consumers don't need any extra Maven repo. - New native bridge method
openSignUi({String? deepLink})โ launches the full nativeEImzoActivity(Home + Keys + AddKey + sign flow). Optional deep-link argument jumps straight into the sign flow. - Example app simplified to two buttons: "Open E-IMZO native UI" and "Open with deep link (sign flow)".
- Verbose diagnostic logging added to
EImzoSDK.import*andEImzoApiClient.rpcCall(bakes exception class + stack into the log message string so R8 can't drop it).
1.0.0 #
BREAKING: Rewritten as a thin wrapper around the official E-IMZO Mobile SDK. The bundled eimzo-sdk-1.0.0 native SDK (classes + resources + jniLibs) owns all signing / key-management UI; this plugin just initializes it on the host activity and forwards deep links into Dart.
- New singleton entry point:
EimzoFlutter.instance(the old static API is gone). - Three-method API:
init({EimzoConfig})(runsEImzoSDK.checkLicenseAndInit),getInitialDeeplink(),onNewDeeplink(). EimzoConfigexposesisTestMode,productionApiUrl,testApiUrl.EimzoExceptionwraps platform errors.- Deep-link scheme host changed from
eimzo://opentoeimzo://sign(per new SDK). - Android: dropped
uz.yt.idcard.eimzo:flutter_debug/releasedependency and thenexus.yt.uzrepository requirement. AAR contents are merged into the plugin (classes, res, jniLibs, manifest) plus transitive deps (kotlinx-coroutines, AndroidX core/appcompat/lifecycle/room, Material, OkHttp, Gson, BouncyCastle, Lottie). Consumers don't need any extra Maven repo. - AGP
androidResources.additionalParameters '--extra-packages', 'uz.eimzo.sdk'so the bundled SDK can resolve its R class against the merged resources. - Removed the separate-Flutter-engine
EimzoFlutterActivityโ deep links are delivered to the host app's MainActivity. - Licensing: apps must register their package name at
info@yt.uz. Unregistered apps see the SDK's blocked-app screen automatically.
0.2.0 #
- Android: E-IMZO Flutter modul dependency versiyasi
1.1.3ga yangilandi (flutter_debugvaflutter_release).
0.1.8 #
- Android:
rootProject.allprojects { repositories }bloki olib tashlandi โ zamonaviy Flutter proyektlardagidependencyResolutionManagementbilan to'qnashib, build xatosiga vaMissingPluginExceptionga olib kelardi. - README: Maven repository qo'shish majburiyligi aniq belgilandi.
0.1.7 #
- README: core library desugaring sozlash bo'limi qo'shildi.
0.1.6 #
- Android:
isCoreLibraryDesugaringEnabled trueโ Groovy sintaksisiga o'tkazildi.
0.1.5 #
- Android:
isCoreLibraryDesugaringEnabled = truecompileOptionsga qo'shildi โ desugaring to'liq yoqildi.
0.1.4 #
- Android:
coreLibraryDesugaring(desugar_jdk_libs:2.1.4) to'g'ri e'lon qilindi.
0.1.3 #
- Android:
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4")dependency qo'shildi โ Java 8+ API desugaring qo'llab-quvvatlash uchun.
0.1.2 #
- Android: E-IMZO Flutter modul dependency versiyasi
1.0.0ga tuzatildi.
0.1.1 #
- Android: E-IMZO Flutter modul dependency versiyasi
1.0.0ga yangilandi (flutter_debugvaflutter_release).
0.1.0 #
- Initial release.
- Android: E-IMZO Flutter modulini
EimzoFlutterActivityorqali ishga tushirish. openEImzo({String? deeplink})โ E-IMZO imzolash ekranini ochadi.getInitialLink()โ ilovaeimzo://orqali ochilgan bo'lsa dastlabki URL ni qaytaradi.linkStreamโ ilova ochiq turganida kelganeimzo://deep linklar oqimi.