વેચાણ મશીન માટે સતત ચલાવવાની Flutter ડેમો એપ્લિકેશન, જે GitHub Releases પરથી ઓટોમેટિક OTA અપડેટ્સ હેન્ડલ કરે છે. સંપૂર્ણ-સ્ક્રીન ફરજિયાત ડાયલોગ, પૃષ્ઠભૂમિ ચેક, રિટ્રાય લોજિક અને Gujarati મેસેજિંગ સાથે કિયોસ્ક પ્રસંગોમાં સલામત છે.
- પેકેજ નામ:
com.example.vending_updaterઅને એપ નામ "Vending Updater Demo". - અપડેટ ચેક: સ્ટાર્ટઅપ પર તરત, પછી દરેક 2 કલાકે Flutter Background Service મારફતે.
- GitHub Releases API જેટલેટ્સ (
/repos/YOUR_GITHUB_USERNAME/vending-machine-app/releases/latest). - ફરજિયાત પૂર્ણ-સ્ક્રીન UI
lib/screens/update_screen.dartમાં Gujarati CTA સાથે. lib/services/update_service.dartOTA વર્કફ્લો, ડાઉનલોડ, ઇન્સ્ટોલ, લોગિંગ, idle-state કંટ્રોલ અને ટેસ્ટ હૂક્સ પ્રદાન કરે છે.update_logs.txt(app documents dir) માં પ્રત્યેક સ્ટેપનું ટાઈમસ્ટેમ્પ્ડ લોગ સંગ્રહિત થાય છે, જે હિડન એડમિન પેનલમાં વાંચી શકાય છે.
- Flutter SDK: 3.8+ (Dart 3.8) પસંદ કરો અને
flutter doctorસાફ કરો. - Dependencies: પ્રોજેક્ટ રૂટ પરથી
flutter pub getચલાવો. - GitHub Auth: public repo હોય તો પૂરતું, private હોવા પર GitHub ટોકનથી API કૉલ proxied કરો અથવા રિલીઝ URL ને signed URL થી બદલો.
- Update Config:
lib/config/update_config.dartમાંgithubUsernameને તમારા GitHub યુઝરનેમથી બદલો. જરૂર પડે તોrepoName, intervals, retry વગેરે ફાઇન-ટ્યુન કરો. - Android Permissions:
android/app/src/main/AndroidManifest.xmlપહેલેથી INERNET, REQUEST_INSTALL_PACKAGES, FOREGROUND_SERVICE, WAKE_LOCK, ACCESS_NETWORK_STATE ઉમેરાયું છે. અન્ય OEM માટે બેટરી ઑપ્ટિમાઈઝેશન exempt કરવાની જરૂર હોય તો ડોક્યુમેન્ટ કરો. - Run:
flutter run --releaseકિયોસ્ક ડિવાઈસ પર ચલાવો. એપ સ્ટાર્ટ થતાની સાથે જ update check અને perms માંગશે.
flutter build apk --target-platform android-arm64ચલાવો.- GitHub repo
vending-machine-appમાંvX.Y.Zટૅગ સાથે નવી રિલીઝ બનાવો. - Release body માં Gujarati/English ચેન્જલોગ મૂકો (UI માં દર્શાય છે).
- Generated
app-release.apkને release asset તરીકે અપલોડ કરો. ખાતરી કરો કે નામ અને સાઇઝ ચોક્કસ છે (size GitHub API દ્વારાsizeફિલ્ડમાં આવે છે). - જ્યારે ડિવાઈસ એપ GitHub API હિટ કરશે ત્યારે નવું વર્ઝન ઓળખશે અને dialogs ટ્રિગર કરશે.
- Startup check: એપ kill કરીને ફરી ચાલુ કરો. ઇન્ટરનેટ ઉપલબ્ધ હોય તો API હિટ થશે; નેટવર્ક ન હોય તો "ઇન્ટરનેટ કનેક્શન તપાસો" મેસેજ દેખાશે અને 30 સેકંડે રિટ્રાય થશે.
- Admin Panel: હોમ સ્ક્રીનની આવૃત્તિ લખાણ પર 5 વાર લૉંગ-પ્રેસ કરો. પેનલમાં:
- Manual update check
- Simulate Update / Test Dialog buttons
- Machine idle toggle ( busy હોય ત્યારે અપડેટ deferred )
- Manual version override / downgrade ટેસ્ટિંગ
- Update logs રીડઆઉટ
- Battery optimization settings શોર્ટકટ
- Silent background checks: 2 કલાક ઈન્ટરવલ સુધી રાહ જુઓ અથવા "Force background check" બટન દબાવો (
BackgroundUpdateService.triggerImmediateCheck()). Idle થાય ત્યારે જ dialog દેખાશે. - Download/Retry: નેટવર્ક કાપો અથવા ખરાબ URL આપી simulate કરો. Error Gujarati માં દેખાશે અને retry બટન ઉપલબ્ધ રહેશે.
- Install path: APK ડાઉનલોડ થયા પછી "અપડેટ ઇન્સ્ટોલ કરો" દબાવો. Android install prompt ઓપન થાય છે, સફળતાએ પછી એપ રીસ્ટાર્ટ પર નવી version દેખાય છે.
| Issue | Gujarati UI Message | Resolution |
|---|---|---|
| No internet | "ઇન્ટરનેટ કનેક્શન તપાસો" | કનેક્ટિવિટી સુધારો; એપ 30 સેકંડે auto retry કરે છે. |
| GitHub API throttled/failed | "અપડેટ તપાસ નિષ્ફળ ગઈ" | GitHub status તપાસો, tokens ઉમેરો, update_config.dart માં interval વધારવો. |
| Download failed / mismatch | "ડાઉનલોડ નિષ્ફળ રહ્યું" | Release assetનું URL અથવા સાઇઝ તપાસો; ફરી પ્રયત્ન કરો બટનથી auto retry થાય છે. |
| Install permission denied | "ઇન્સ્ટોલ પરવાનગી જરૂરી છે" | Settings -> Install unknown apps માંથી મંજૂરી આપો (admin panel battery settings બટન મદદરૂપ). |
| Machine busy | અપડેટ deferred થાય છે | Admin panel માં Machine Idle ટૉગલ true કરો અથવા ટ્રાન્ઝેક્શન પૂરું કરો; idle થયા પછી dialog auto દેખાશે. |
update_logs.txtએપ ડોક્યુમેન્ટ ડિરેક્ટરીમાં છે (Android:/data/data/com.example.vending_updater/app_flutter/update_logs.txt).- દરેક event
[timestamp] Event - detailsફૉર્મેટમાં append થાય છે. - Admin panel માં ટોચની 100 લોગ લાઈનો રિવર્સ ઓર્ડરમાં દર્શાય છે.
- સેટઅપ ટ્યુટોરીયલ (placeholder): https://example.com/vending-updater-video
આ README સાથે કિયોસ્ક ઇન્ટિગ્રેશન, GitHub રિલીઝ publish અને non-stop vending deployment માટે જરૂરી માહિતી ઉપલબ્ધ છે.