Android 11 ve sonrası için tamamen çevrimdışı ilaç hatırlatma ve stok uygulaması.
- Room tabanlı ilaç, program, doz geçmişi ve stok verileri hazır.
- AlarmManager, yeniden başlatma/saat dilimi alıcıları ve kaçırılan doz WorkManager akışı hazır.
- Fotoğraf ve prospektüsler uygulamanın özel yerel dosya alanına alınıyor.
- İlaç verileri cihazdan çıkmaz; internet yalnızca GitHub tabanlı sürüm kontrolü ve kullanıcının başlattığı APK indirmesi için kullanılır.
- Kolay ve anlaşılabilir frontend.
- İlaç ekleme/düzenleme akışı erişilebilir yedi adımlı bir sihirbazdır.
- Yerel ZIP yedekleme ve geri yükleme; ilaçları, programları, geçmişi, tercihleri ve yerel medyayı kapsar.
- Kotlin 2.2.0
- Jetpack Compose + Material 3
- Room 2.8.4
- WorkManager 2.11.2
minSdk 30,compileSdk/targetSdk 36
Android Studio'nun JDK 17 veya daha yeni sürümüyle:
.\gradlew.bat :app:assembleDebugWindows'ta proje yolundaki Türkçe ı karakteri JDK birim test sınıf yolunu etkilerse projeyi geçici olarak ASCII bir sürücü harfine eşleyerek test edin.
.\gradlew.bat :app:testDebugUnitTest :app:lintDebugDoz işlemleri tek seferliktir; ilk Aldım/Atla eylemi kazanır. Aldım stoğu Room işlemi içinde atomik olarak azaltır.
Uygulama Google Play, Firebase, Supabase, VPS, özel backend, GitHub Actions veya uygulama içinde GitHub token'ı kullanmadan güncellenir. Public kaynak ve dağıtım repository'si:
- Manifest:
https://raw.githubusercontent.com/AybarsBarut/PillTrack/main/update.json - Releases:
https://github.com/AybarsBarut/PillTrack/releases - Uygulamadaki tek endpoint:
update-config.propertiesiçindekimanifestUrl
Otomatik kontrol uygulama prosesi başladığında yapılır ve başarılı kontrolden sonra altı saat önbelleğe alınır. Cihazda Android tarafından doğrulanmış internet bağlantısı yoksa ağ isteği hiç başlatılmaz. Ayarlar'daki Güncellemeleri kontrol et seçeneği önbelleği atlar; çevrimdışsa yalnızca kullanıcıyı bilgilendirir.
Güncelleme kararı yalnızca sayısal versionCode ile verilir. APK indirildikten sonra kurulumdan önce dosya boyutu, SHA-256, Android paket adı, APK versionCode değeri ve yüklü uygulamanın imza sertifikasıyla eşleşmesi doğrulanır. Başarısız dosya silinir. Kurulum FileProvider tarafından verilen geçici content:// URI ile Android paket yükleyicisine devredilir; sessiz kurulum yapılmaz.
Gerekli Android izinleri:
INTERNET: manifest ve kullanıcının başlattığı APK indirmesiACCESS_NETWORK_STATE: internetsizken kontrolü başlatmamakREQUEST_INSTALL_PACKAGES: Android'in kullanıcı onaylı paket yükleyicisini açmak
Cleartext HTTP kapalıdır (usesCleartextTraffic=false); manifest ve APK adresleri HTTPS olmak zorundadır.
AybarsBarut/PillTrackrepository'sini public tutun. Kaynak kod veupdate.jsonana branch'te, kurulabilirapp-release.apkise Releases bölümünde bulunur.- Release imza anahtarını repository dışında güvenli bir yerde oluşturun/saklayın.
keystore.properties.exampledosyasınıkeystore.propertiesadıyla kopyalayıp gerçek yolu, alias'ı ve parolaları doldurun. Bu dosya Git tarafından yok sayılır. app/build.gradle.ktsiçindekiversionCodeveversionNamedeğerlerini artırın.- Yerel release paketini hazırlayın:
.\tools\prepare-release.ps1 -Changelog "Performans iyileştirmeleri","Bildirim sistemi düzeltildi"Kökteki .\build-release.ps1 aynı script için kısa yoldur. Script GitHub'a hiçbir şey yüklemez ve gh gerektirmez. İmzayı doğruladıktan sonra şunları oluşturur:
release-output/
├── app-release.apk
├── update.json
└── release-info.txt
- GitHub'da
AybarsBarut/PillTrack→ Releases → Create a new release yolunu açın. - Tag'i
vX.Y.Zolarak oluşturun; tag, AndroidversionNameile aynı olmalıdır. release-output/app-release.apkdosyasını release asset'i olarak yükleyip release'i yayınlayın.release-output/update.jsoniçeriğini PillTrack repository'sinin ana branch'indekiupdate.jsonile değiştirip commit/push yapın.- Raw
update.jsonURL'sini tarayıcıda açıp yeniversionCode, APK URL'si, boyut ve SHA-256 değerlerini kontrol edin.
Tüm release APK'ları ilk sürümden itibaren aynı signing key ile imzalanmalıdır. .jks, .keystore, keystore.properties, parolalar ve private key repository'ye veya APK içine eklenmemelidir.
prepare-release.ps1 aşağıdaki yapıda gerçek boyut ve SHA-256 içeren JSON üretir:
{
"versionCode": 8,
"versionName": "1.3.0",
"minimumVersionCode": 1,
"forceUpdate": false,
"apkUrl": "https://github.com/AybarsBarut/PillTrack/releases/download/v1.3.0/app-release.apk",
"sha256": "AEE2973FF1354E5F5A0CF5511F33AF5E31B1C122A6D444FA6C8E7E0BF8E2C628",
"fileSize": 3344403,
"releaseDate": "2026-08-22",
"changelog": [
"Minimalist yazı boyutu seçeneği eklendi",
"Sıradaki ilaç dozunu gösteren Android ana ekran widgetı eklendi",
"Widget ilaç planı, alarm ve saat değişikliklerinde otomatik yenileniyor"
]
}forceUpdate=true veya yerel versionCode < minimumVersionCode olduğunda diyalog kapatılamaz. Normal bir güncellemede Daha sonra seçimi o versionCode için saklanır; daha yeni bir sürüm yayınlandığında bildirim yeniden gösterilir.