commit f69ffd79c2e60bb71e4a9eddeff382ab35881b42 Author: tanexc Date: Fri Jun 12 23:49:11 2026 +0300 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..85362a3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,21 @@ +*.iml +.kotlin +.gradle +**/build/ +xcuserdata +!src/**/build/ +local.properties +.idea +.DS_Store +captures +.externalNativeBuild +.cxx +*.xcodeproj/* +!*.xcodeproj/project.pbxproj +!*.xcodeproj/xcshareddata/ +!*.xcodeproj/project.xcworkspace/ +!*.xcworkspace/contents.xcworkspacedata +**/xcshareddata/WorkspaceSettings.xcsettings +node_modules/ +Pods/ +**/Pods/ diff --git a/androidApp/.gitignore b/androidApp/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/androidApp/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/androidApp/build.gradle.kts b/androidApp/build.gradle.kts new file mode 100644 index 0000000..427d929 --- /dev/null +++ b/androidApp/build.gradle.kts @@ -0,0 +1,62 @@ +plugins { + alias(libs.plugins.androidApplication) + alias(libs.plugins.composeCompiler) +} + +android { + namespace = "ru.tanexc.hemoanalysis" + compileSdk { + version = release(36) + } + + defaultConfig { + applicationId = "ru.tanexc.hemoanalysis" + minSdk = 26 + targetSdk = 36 + versionCode = 1 + versionName = "1.0" + } + + buildTypes { + debug { + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + release { + isMinifyEnabled = true + isShrinkResources = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + splits { + abi { + isEnable = true + reset() + include("arm64-v8a", "armeabi-v7a", "x86", "x86_64") + isUniversalApk = false + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } +} + +dependencies { + implementation(projects.shared) + + implementation(libs.androidx.activity.compose) + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.lifecycle.runtime.ktx) + + implementation(libs.koin.core) + implementation(libs.koin.android) + + implementation(libs.filekit.core) + implementation(libs.filekit.dialogs.compose) +} diff --git a/androidApp/proguard-rules.pro b/androidApp/proguard-rules.pro new file mode 100644 index 0000000..3600ce7 --- /dev/null +++ b/androidApp/proguard-rules.pro @@ -0,0 +1,26 @@ +-keepattributes RuntimeVisibleAnnotations,RuntimeInvisibleAnnotations,Signature,InnerClasses,EnclosingMethod + +-keep class **$$serializer { *; } +-keepclassmembers class ** { + public static ** serializer(...); +} +-keepclassmembers class **$Companion { + public final kotlinx.serialization.KSerializer serializer(...); +} + +-keep @kotlinx.serialization.Serializable class ru.tanexc.hemoanalysis.** { *; } + +-keep class io.ktor.** { *; } +-keep class kotlinx.coroutines.** { *; } +-keep class kotlinx.serialization.** { *; } +-keepnames class io.ktor.** { *; } + +-keep class ai.onnxruntime.** { *; } + +-dontwarn okhttp3.** +-dontwarn okio.** +-dontwarn javax.annotation.** +-dontwarn org.conscrypt.** +-dontwarn org.bouncycastle.** +-dontwarn org.openjsse.** +-dontwarn java.lang.management.** diff --git a/androidApp/release/androidApp-arm64-v8a-release.apk b/androidApp/release/androidApp-arm64-v8a-release.apk new file mode 100644 index 0000000..95fa795 Binary files /dev/null and b/androidApp/release/androidApp-arm64-v8a-release.apk differ diff --git a/androidApp/release/androidApp-armeabi-v7a-release.apk b/androidApp/release/androidApp-armeabi-v7a-release.apk new file mode 100644 index 0000000..af70939 Binary files /dev/null and b/androidApp/release/androidApp-armeabi-v7a-release.apk differ diff --git a/androidApp/release/androidApp-x86-release.apk b/androidApp/release/androidApp-x86-release.apk new file mode 100644 index 0000000..dd0586c Binary files /dev/null and b/androidApp/release/androidApp-x86-release.apk differ diff --git a/androidApp/release/androidApp-x86_64-release.apk b/androidApp/release/androidApp-x86_64-release.apk new file mode 100644 index 0000000..fb2836a Binary files /dev/null and b/androidApp/release/androidApp-x86_64-release.apk differ diff --git a/androidApp/release/baselineProfiles/0/androidApp-arm64-v8a-release.dm b/androidApp/release/baselineProfiles/0/androidApp-arm64-v8a-release.dm new file mode 100644 index 0000000..694edb8 Binary files /dev/null and b/androidApp/release/baselineProfiles/0/androidApp-arm64-v8a-release.dm differ diff --git a/androidApp/release/baselineProfiles/0/androidApp-armeabi-v7a-release.dm b/androidApp/release/baselineProfiles/0/androidApp-armeabi-v7a-release.dm new file mode 100644 index 0000000..694edb8 Binary files /dev/null and b/androidApp/release/baselineProfiles/0/androidApp-armeabi-v7a-release.dm differ diff --git a/androidApp/release/baselineProfiles/0/androidApp-x86-release.dm b/androidApp/release/baselineProfiles/0/androidApp-x86-release.dm new file mode 100644 index 0000000..694edb8 Binary files /dev/null and b/androidApp/release/baselineProfiles/0/androidApp-x86-release.dm differ diff --git a/androidApp/release/baselineProfiles/0/androidApp-x86_64-release.dm b/androidApp/release/baselineProfiles/0/androidApp-x86_64-release.dm new file mode 100644 index 0000000..694edb8 Binary files /dev/null and b/androidApp/release/baselineProfiles/0/androidApp-x86_64-release.dm differ diff --git a/androidApp/release/baselineProfiles/1/androidApp-arm64-v8a-release.dm b/androidApp/release/baselineProfiles/1/androidApp-arm64-v8a-release.dm new file mode 100644 index 0000000..809a815 Binary files /dev/null and b/androidApp/release/baselineProfiles/1/androidApp-arm64-v8a-release.dm differ diff --git a/androidApp/release/baselineProfiles/1/androidApp-armeabi-v7a-release.dm b/androidApp/release/baselineProfiles/1/androidApp-armeabi-v7a-release.dm new file mode 100644 index 0000000..809a815 Binary files /dev/null and b/androidApp/release/baselineProfiles/1/androidApp-armeabi-v7a-release.dm differ diff --git a/androidApp/release/baselineProfiles/1/androidApp-x86-release.dm b/androidApp/release/baselineProfiles/1/androidApp-x86-release.dm new file mode 100644 index 0000000..809a815 Binary files /dev/null and b/androidApp/release/baselineProfiles/1/androidApp-x86-release.dm differ diff --git a/androidApp/release/baselineProfiles/1/androidApp-x86_64-release.dm b/androidApp/release/baselineProfiles/1/androidApp-x86_64-release.dm new file mode 100644 index 0000000..809a815 Binary files /dev/null and b/androidApp/release/baselineProfiles/1/androidApp-x86_64-release.dm differ diff --git a/androidApp/release/output-metadata.json b/androidApp/release/output-metadata.json new file mode 100644 index 0000000..c64ecc1 --- /dev/null +++ b/androidApp/release/output-metadata.json @@ -0,0 +1,87 @@ +{ + "version": 3, + "artifactType": { + "type": "APK", + "kind": "Directory" + }, + "applicationId": "ru.tanexc.hemoanalysis", + "variantName": "release", + "elements": [ + { + "type": "ONE_OF_MANY", + "filters": [ + { + "filterType": "ABI", + "value": "armeabi-v7a" + } + ], + "attributes": [], + "versionCode": 1, + "versionName": "1.0", + "outputFile": "androidApp-armeabi-v7a-release.apk" + }, + { + "type": "ONE_OF_MANY", + "filters": [ + { + "filterType": "ABI", + "value": "x86_64" + } + ], + "attributes": [], + "versionCode": 1, + "versionName": "1.0", + "outputFile": "androidApp-x86_64-release.apk" + }, + { + "type": "ONE_OF_MANY", + "filters": [ + { + "filterType": "ABI", + "value": "arm64-v8a" + } + ], + "attributes": [], + "versionCode": 1, + "versionName": "1.0", + "outputFile": "androidApp-arm64-v8a-release.apk" + }, + { + "type": "ONE_OF_MANY", + "filters": [ + { + "filterType": "ABI", + "value": "x86" + } + ], + "attributes": [], + "versionCode": 1, + "versionName": "1.0", + "outputFile": "androidApp-x86-release.apk" + } + ], + "elementType": "File", + "baselineProfiles": [ + { + "minApi": 28, + "maxApi": 30, + "baselineProfiles": [ + "baselineProfiles/1/androidApp-armeabi-v7a-release.dm", + "baselineProfiles/1/androidApp-x86_64-release.dm", + "baselineProfiles/1/androidApp-arm64-v8a-release.dm", + "baselineProfiles/1/androidApp-x86-release.dm" + ] + }, + { + "minApi": 31, + "maxApi": 2147483647, + "baselineProfiles": [ + "baselineProfiles/0/androidApp-armeabi-v7a-release.dm", + "baselineProfiles/0/androidApp-x86_64-release.dm", + "baselineProfiles/0/androidApp-arm64-v8a-release.dm", + "baselineProfiles/0/androidApp-x86-release.dm" + ] + } + ], + "minSdkVersionForDexing": 26 +} \ No newline at end of file diff --git a/androidApp/src/main/AndroidManifest.xml b/androidApp/src/main/AndroidManifest.xml new file mode 100644 index 0000000..23eb07b --- /dev/null +++ b/androidApp/src/main/AndroidManifest.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/androidApp/src/main/ic_launcher-playstore.png b/androidApp/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000..1da4657 Binary files /dev/null and b/androidApp/src/main/ic_launcher-playstore.png differ diff --git a/androidApp/src/main/java/ru/tanexc/hemoanalysis/HemoAnalysisApplication.kt b/androidApp/src/main/java/ru/tanexc/hemoanalysis/HemoAnalysisApplication.kt new file mode 100644 index 0000000..69e9cc4 --- /dev/null +++ b/androidApp/src/main/java/ru/tanexc/hemoanalysis/HemoAnalysisApplication.kt @@ -0,0 +1,14 @@ +package ru.tanexc.hemoanalysis + +import android.app.Application +import ru.tanexc.hemoanalysis.di.koinInit +import org.koin.android.ext.koin.androidContext + +class HemoAnalysisApplication: Application() { + override fun onCreate() { + super.onCreate() + koinInit { + androidContext(this@HemoAnalysisApplication) + } + } +} \ No newline at end of file diff --git a/androidApp/src/main/java/ru/tanexc/hemoanalysis/MainActivity.kt b/androidApp/src/main/java/ru/tanexc/hemoanalysis/MainActivity.kt new file mode 100644 index 0000000..a4dff73 --- /dev/null +++ b/androidApp/src/main/java/ru/tanexc/hemoanalysis/MainActivity.kt @@ -0,0 +1,21 @@ +package ru.tanexc.hemoanalysis + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge +import io.github.vinceglb.filekit.FileKit +import io.github.vinceglb.filekit.dialogs.init +import ru.tanexc.hemoanalysis.navigation.provideRootComponent + +class MainActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + val root = provideRootComponent() + FileKit.init(this) + setContent { + App(root) + } + } +} \ No newline at end of file diff --git a/androidApp/src/main/res/drawable/ic_launcher_foreground.xml b/androidApp/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..240602e --- /dev/null +++ b/androidApp/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,17 @@ + + + + + + diff --git a/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..ef49c99 --- /dev/null +++ b/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..ef49c99 --- /dev/null +++ b/androidApp/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/androidApp/src/main/res/mipmap-hdpi/ic_launcher.webp b/androidApp/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000..2f3b81c Binary files /dev/null and b/androidApp/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/androidApp/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/androidApp/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000..e0956f8 Binary files /dev/null and b/androidApp/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/androidApp/src/main/res/mipmap-mdpi/ic_launcher.webp b/androidApp/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000..faaec0d Binary files /dev/null and b/androidApp/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/androidApp/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/androidApp/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000..7262748 Binary files /dev/null and b/androidApp/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/androidApp/src/main/res/mipmap-xhdpi/ic_launcher.webp b/androidApp/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000..b0c52b9 Binary files /dev/null and b/androidApp/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/androidApp/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/androidApp/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..5caba2f Binary files /dev/null and b/androidApp/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000..0e56034 Binary files /dev/null and b/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..ed645d5 Binary files /dev/null and b/androidApp/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000..70f9a46 Binary files /dev/null and b/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..5e04a80 Binary files /dev/null and b/androidApp/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/androidApp/src/main/res/values/colors.xml b/androidApp/src/main/res/values/colors.xml new file mode 100644 index 0000000..f8c6127 --- /dev/null +++ b/androidApp/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/androidApp/src/main/res/values/ic_launcher_background.xml b/androidApp/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..485ccae --- /dev/null +++ b/androidApp/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #235024 + \ No newline at end of file diff --git a/androidApp/src/main/res/values/strings.xml b/androidApp/src/main/res/values/strings.xml new file mode 100644 index 0000000..da61b34 --- /dev/null +++ b/androidApp/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + HemoAnalysis + \ No newline at end of file diff --git a/androidApp/src/main/res/values/themes.xml b/androidApp/src/main/res/values/themes.xml new file mode 100644 index 0000000..554d7dd --- /dev/null +++ b/androidApp/src/main/res/values/themes.xml @@ -0,0 +1,5 @@ + + + +