yayan vor 1 Monat
Ursprung
Commit
02c900e0b3

+ 6 - 0
.idea/vcs.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$" vcs="Git" />
+  </component>
+</project>

+ 7 - 0
app/build.gradle.kts

@@ -2,6 +2,7 @@ plugins {
     alias(libs.plugins.android.application)
     alias(libs.plugins.android.application)
     alias(libs.plugins.kotlin.android)
     alias(libs.plugins.kotlin.android)
     alias(libs.plugins.hilt.android)
     alias(libs.plugins.hilt.android)
+    id("com.google.devtools.ksp")
     kotlin("kapt")
     kotlin("kapt")
 }
 }
 
 
@@ -41,6 +42,12 @@ android {
 }
 }
 
 
 dependencies {
 dependencies {
+    implementation(libs.androidx.room.runtime)
+    ksp(libs.androidx.room.compiler)
+    implementation(libs.android.database.sqlcipher)
+    implementation(libs.androidx.sqlite.framework)
+    implementation(libs.androidx.sqlite)
+    implementation(libs.androidx.room.ktx)
 
 
     implementation(libs.androidx.core.ktx)
     implementation(libs.androidx.core.ktx)
     implementation(libs.androidx.appcompat)
     implementation(libs.androidx.appcompat)

+ 7 - 0
app/src/main/java/io/nexilis/securecomsnative/db/Database.kt

@@ -0,0 +1,7 @@
+package io.nexilis.securecomsnative.db
+
+import androidx.room.RoomDatabase
+
+abstract class Database : RoomDatabase() {
+
+}

+ 43 - 0
app/src/main/java/io/nexilis/securecomsnative/db/DatabaseModule.kt

@@ -0,0 +1,43 @@
+package io.nexilis.securecomsnative.db
+
+import android.content.Context
+import android.content.SharedPreferences
+import androidx.room.Room
+import dagger.Module
+import dagger.Provides
+import dagger.hilt.InstallIn
+import dagger.hilt.android.qualifiers.ApplicationContext
+import dagger.hilt.components.SingletonComponent
+import net.zetetic.database.sqlcipher.SupportOpenHelperFactory
+import java.nio.charset.StandardCharsets
+import javax.inject.Singleton
+
+@Module
+@InstallIn(SingletonComponent::class)
+object DatabaseModule {
+
+    @Provides
+    @Singleton
+    fun provideDatabase(@ApplicationContext context: Context): Database {
+        val factory = SupportOpenHelperFactory(
+            "password".toByteArray(StandardCharsets.UTF_8)
+        )
+        System.loadLibrary("sqlcipher")
+        return Room.databaseBuilder(
+            context,
+            Database::class.java,
+            "secure-db"
+        )
+            .openHelperFactory(factory)
+            .build()
+    }
+
+    @Provides
+    fun provideSharedPref(@ApplicationContext context: Context) : SharedPreferences {
+        return context.getSharedPreferences(
+            "shared-pref",
+            Context.MODE_PRIVATE
+        )
+    }
+
+}

+ 1 - 0
build.gradle.kts

@@ -3,4 +3,5 @@ plugins {
     alias(libs.plugins.android.application) apply false
     alias(libs.plugins.android.application) apply false
     alias(libs.plugins.kotlin.android) apply false
     alias(libs.plugins.kotlin.android) apply false
     alias(libs.plugins.hilt.android) apply false
     alias(libs.plugins.hilt.android) apply false
+    id("com.google.devtools.ksp") version "2.0.21-1.0.27" apply false
 }
 }

+ 10 - 1
gradle/libs.versions.toml

@@ -1,9 +1,10 @@
 [versions]
 [versions]
 agp = "8.13.0"
 agp = "8.13.0"
+androidDatabaseSqlcipher = "4.11.0"
 coreSplashscreen = "1.0.1"
 coreSplashscreen = "1.0.1"
 datastorePreferences = "1.1.7"
 datastorePreferences = "1.1.7"
 hiltAndroid = "2.57.2"
 hiltAndroid = "2.57.2"
-kotlin = "2.0.21"
+kotlin = "2.2.20"
 coreKtx = "1.17.0"
 coreKtx = "1.17.0"
 junit = "4.13.2"
 junit = "4.13.2"
 junitVersion = "1.3.0"
 junitVersion = "1.3.0"
@@ -15,11 +16,19 @@ lifecycleLivedataKtx = "2.9.4"
 lifecycleViewmodelKtx = "2.9.4"
 lifecycleViewmodelKtx = "2.9.4"
 navigationFragmentKtx = "2.9.5"
 navigationFragmentKtx = "2.9.5"
 navigationUiKtx = "2.9.5"
 navigationUiKtx = "2.9.5"
+roomVersion = "2.8.2"
+sqliteFramework = "2.6.1"
 
 
 [libraries]
 [libraries]
+android-database-sqlcipher = { module = "net.zetetic:sqlcipher-android", version.ref = "androidDatabaseSqlcipher" }
 androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
 androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
 androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "coreSplashscreen" }
 androidx-core-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "coreSplashscreen" }
 androidx-datastore-preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "datastorePreferences" }
 androidx-datastore-preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "datastorePreferences" }
+androidx-room-compiler = { module = "androidx.room:room-compiler", version.ref = "roomVersion" }
+androidx-room-ktx = { module = "androidx.room:room-ktx", version.ref = "roomVersion" }
+androidx-room-runtime = { module = "androidx.room:room-runtime", version.ref = "roomVersion" }
+androidx-sqlite = { module = "androidx.sqlite:sqlite", version.ref = "sqliteFramework" }
+androidx-sqlite-framework = { module = "androidx.sqlite:sqlite-framework", version.ref = "sqliteFramework" }
 hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hiltAndroid" }
 hilt-android = { module = "com.google.dagger:hilt-android", version.ref = "hiltAndroid" }
 hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "hiltAndroid" }
 hilt-compiler = { module = "com.google.dagger:hilt-compiler", version.ref = "hiltAndroid" }
 junit = { group = "junit", name = "junit", version.ref = "junit" }
 junit = { group = "junit", name = "junit", version.ref = "junit" }