Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c3fa9c81 authored by Mohammed Althaf T's avatar Mohammed Althaf T 😊
Browse files

Merge branch '3691-main-updatetoa16' into 'main'

Update for new android version

See merge request e/os/find-my-device!8
parents 84e91c0f 6a530b59
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ stages:
  - build

before_script:
  - export JAVA_HOME=/usr/lib/jvm/java-25-openjdk-amd64
  - export GRADLE_USER_HOME=$(pwd)/.gradle
  - chmod +x ./gradlew

@@ -17,7 +18,7 @@ build:
  variables:
    GIT_SUBMODULE_STRATEGY: recursive
  script:
    - ./gradlew assemble
    - ./gradlew lint assemble
  artifacts:
    paths:
      - app/build/outputs/apk/
+29 −57
Original line number Diff line number Diff line
import org.jetbrains.kotlin.gradle.dsl.JvmTarget

plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.kotlin.android)
    alias(libs.plugins.compose.compiler)
    alias(libs.plugins.detekt.plugin)
    alias(libs.plugins.kotlin.serialization)
}

android {
    namespace = "foundation.e.findmydevice"
    compileSdk = 35
    compileSdk = 36
    compileSdkMinor = 1

    defaultConfig {
        applicationId = "foundation.e.findmydevice"
        minSdk = 31
        targetSdk = 35
        versionCode = 3
        versionName = "0.2.1"
        targetSdk = 36
        versionCode = 4
        versionName = "0.2.2"

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    }

    signingConfigs {
        create("debugConfig") {
        create("platformConfig") {
            storeFile = file("../keystore/platform.jks")
            storePassword = "platform"
            keyAlias = "platform"
@@ -30,91 +34,59 @@ android {

    buildTypes {
        debug {
            signingConfig = signingConfigs.getByName("debugConfig")
            signingConfig = signingConfigs.getByName("platformConfig")
        }

        release {
            isMinifyEnabled = false
            isMinifyEnabled = true
            isShrinkResources = true
            signingConfig = signingConfigs.getByName("platformConfig")
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_11
        targetCompatibility = JavaVersion.VERSION_11
    }
    kotlinOptions {
        jvmTarget = "11"
        sourceCompatibility = JavaVersion.VERSION_25
        targetCompatibility = JavaVersion.VERSION_25
    }

    kotlin { compilerOptions { jvmTarget = JvmTarget.JVM_25 } }

    buildFeatures {
        compose = true
    }
    composeOptions {
        kotlinCompilerExtensionVersion = "1.6.7"
    }


}

dependencies {

    implementation(libs.androidx.browser)
    val composeBom = platform("androidx.compose:compose-bom:2025.02.00")
    implementation(composeBom)

    // Graphics
    // AndroidX
    implementation(platform(libs.androidx.compose.bom))
    implementation(libs.androidx.activity.compose)
    implementation(libs.androidx.appcompat)
    implementation(libs.androidx.compose.material.icons.extended)
    implementation(libs.androidx.core.ktx)
    implementation(libs.androidx.material3.android)
    implementation(libs.androidx.runtime.android)
    implementation(libs.androidx.work.runtime.ktx)
    implementation(libs.androidx.junit.ktx)
    implementation(libs.material)

    implementation(libs.androidx.ui)
    implementation(libs.androidx.ui.tooling.preview)

    // Murena elib
    // Murena
    implementation(libs.elib)

    // GSON
    implementation(libs.gson)

    // Background workers
    implementation(libs.androidx.work.runtime.ktx)

    // Biometric
    implementation(libs.androidx.biometric)
    // Utilities
    implementation(libs.kotlinx.serialization.json)
    implementation(libs.material)

    // Tests
    testImplementation(libs.junit)
    testImplementation(libs.robolectric)
    testImplementation(libs.mockito.core)

    // Android tests
    androidTestImplementation(composeBom)
    androidTestImplementation(libs.androidx.espresso.core)
    androidTestImplementation(libs.androidx.junit)

    implementation("androidx.compose.ui:ui:1.6.8")
    implementation("androidx.compose.ui:ui-tooling-preview:1.6.8")
    debugImplementation("androidx.compose.ui:ui-tooling:1.6.8")
    debugImplementation("androidx.compose.ui:ui-test-manifest:1.6.8")

    testImplementation(libs.robolectric)
}

detekt {
    toolVersion = "1.23.7"
    config.setFrom(file("../detekt.yml"))
    buildUponDefaultConfig = true
    autoCorrect = true
}

// Detekt
tasks.withType<io.gitlab.arturbosch.detekt.Detekt>().configureEach {
    jvmTarget = "11"
}
tasks.withType<io.gitlab.arturbosch.detekt.DetektCreateBaselineTask>().configureEach {
    jvmTarget = "11"
}
+7 −0
Original line number Diff line number Diff line
<?xml version="1.0" ?>
<SmellBaseline>
  <ManuallySuppressedIssues/>
  <CurrentIssues>
    <ID>TooGenericExceptionCaught:SmsSender.kt$SmsSender$e: Exception</ID>
  </CurrentIssues>
</SmellBaseline>
+23 −7
Original line number Diff line number Diff line
package foundation.e.findmydevice.activity

import android.app.Activity
import android.content.res.Configuration
import android.os.Build
import android.os.Bundle
@@ -19,6 +20,8 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.toArgb
import androidx.compose.ui.platform.LocalConfiguration
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.fragment.app.FragmentActivity
import foundation.e.findmydevice.R
import foundation.e.findmydevice.data.Pages
@@ -49,6 +52,10 @@ class FindMyDeviceActivity : FragmentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.BAKLAVA) {
            setupEdgeToEdge(this)
        }

        persistentStorage = PersistentStorage(this)

        permissionManager = PermissionManager(this)
@@ -56,6 +63,19 @@ class FindMyDeviceActivity : FragmentActivity() {
        displayPage(Pages.ActivateFeature)
    }

    fun setupEdgeToEdge(activity: Activity) {
        ViewCompat.setOnApplyWindowInsetsListener(activity.findViewById(android.R.id.content)) {
                v,
                windowInsets ->
            val insets =
                windowInsets.getInsets(
                    WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.ime()
                )
            v.setPadding(insets.left, insets.top, insets.right, insets.bottom)
            WindowInsetsCompat.CONSUMED
        }
    }

    private fun onExitApp(withResult: Boolean = false) {
        if (withResult) {
            setResult(RESULT_OK)
@@ -64,8 +84,8 @@ class FindMyDeviceActivity : FragmentActivity() {
    }

    private fun getTitleForPage(page: Pages) = when(page) {
        Pages.ActivateFeature -> getString(R.string.title_welcome)
        Pages.GeneratePassword -> getString(R.string.title_generate_password)
        else -> ""
    }

    //region Display screen
@@ -73,8 +93,6 @@ class FindMyDeviceActivity : FragmentActivity() {
    fun displayPage(page: Pages){
        setContent {
            findMyDeviceTheme {
                window.statusBarColor = MaterialTheme.colorScheme.background.toArgb()
                window.navigationBarColor = MaterialTheme.colorScheme.background.toArgb()
                Surface(color = MaterialTheme.colorScheme.background) {

                    val appBarTitle = remember { mutableStateOf(getTitleForPage(page)) }
@@ -117,9 +135,7 @@ class FindMyDeviceActivity : FragmentActivity() {
                                )
                                Pages.GeneratePassword ->GenerationPasswordScreen.displayScreen(
                                    onBackPressed = {},
                                    onSelection = {
                                        onExitApp(true) },
                                    findMyDeviceActivity = this@FindMyDeviceActivity
                                    onSelection = { onExitApp(true) }
                                )
                            }
                        }
+9 −0
Original line number Diff line number Diff line
package foundation.e.findmydevice.data

import kotlinx.serialization.Serializable

@Serializable
data class PasswordCheckResult(
    val first: Long,
    val second: Boolean
)
Loading