I am Building an Android Kotlin app to receive push notifications, but encountering ‘Unresolved reference’ error during development

  Kiến thức lập trình

Project Specifications”

  1. I am using the latest one signal implementation ‘com.onesignal:OneSignal:[5.0.0, 5.99.99]’ dependency
  2. Gradle and AGP version 8.7 and 8.5.0
  3. Using JDK 17.0
    Previously i used the implementation(“com.onesignal:OneSignal:[4.6.4, 5.0.0)”) at that time everything was working file, app was stable and i wasreceivingg notification properly now after i updated the SDK to implementation ‘com.onesignal:OneSignal:[5.0.0, 5.99.99]’ i am getting these errors

`Executing tasks: [:app:clean, :app:assembleDebugAndroidTest, :app:assembleDebug, :app:assembleDebugUnitTest] in project H:Notification App NOTIFICATION – KOTLINV2V2BCNOTIFICATION0314PM27072024notificationApp

Task :app:clean
Task :app:preBuild UP-TO-DATE
Task :app:preDebugBuild UP-TO-DATE
Task :app:generateDebugResValues
Task :app:checkDebugAarMetadata
Task :app:mapDebugSourceSetPaths
Task :app:generateDebugResources
Task :app:packageDebugResources
Task :app:createDebugCompatibleScreenManifests
Task :app:parseDebugLocalResources
Task :app:extractDeepLinksDebug

Task :app:processDebugMainManifest
package=”com.myapp.notificationapp” found in source AndroidManifest.xml: H:Notification App NOTIFICATION – KOTLINV2V2BCNOTIFICATION0314PM27072024notificationAppappsrcmainAndroidManifest.xml.
Setting the namespace via the package attribute in the source AndroidManifest.xml is no longer supported, and the value is ignored.
Recommendation: remove package=”com.myapp.notificationapp” from the source AndroidManifest.xml: H:Notification App NOTIFICATION – KOTLINV2V2BCNOTIFICATION0314PM27072024notificationAppappsrcmainAndroidManifest.xml.

Task :app:processDebugManifest
Task :app:javaPreCompileDebug
Task :app:processDebugManifestForPackage
Task :app:preDebugAndroidTestBuild SKIPPED
Task :app:checkDebugAndroidTestAarMetadata
Task :app:generateDebugAndroidTestResValues
Task :app:mapDebugAndroidTestSourceSetPaths
Task :app:generateDebugAndroidTestResources
Task :app:mergeDebugAndroidTestResources
Task :app:mergeDebugResources
Task :app:processDebugAndroidTestManifest
Task :app:javaPreCompileDebugAndroidTest
Task :app:mergeDebugAndroidTestShaders
Task :app:compileDebugAndroidTestShaders NO-SOURCE
Task :app:generateDebugAndroidTestAssets UP-TO-DATE
Task :app:mergeDebugAndroidTestAssets
Task :app:compressDebugAndroidTestAssets
Task :app:checkDebugAndroidTestDuplicateClasses
Task :app:desugarDebugAndroidTestFileDependencies
Task :app:mergeDebugAndroidTestJniLibFolders
Task :app:mergeLibDexDebugAndroidTest
Task :app:mergeDebugJniLibFolders
Task :app:mergeDebugNativeLibs NO-SOURCE
Task :app:mergeDebugAndroidTestNativeLibs NO-SOURCE
Task :app:stripDebugAndroidTestDebugSymbols NO-SOURCE
Task :app:validateSigningDebugAndroidTest
Task :app:processDebugAndroidTestResources
Task :app:writeDebugAndroidTestSigningConfigVersions
Task :app:mergeDebugNativeDebugMetadata NO-SOURCE
Task :app:mergeDebugShaders
Task :app:compileDebugShaders NO-SOURCE
Task :app:generateDebugAssets UP-TO-DATE
Task :app:mergeDebugAssets
Task :app:compressDebugAssets
Task :app:desugarDebugFileDependencies
Task :app:mergeDebugStartupProfile UP-TO-DATE
Task :app:stripDebugDebugSymbols NO-SOURCE
Task :app:validateSigningDebug
Task :app:writeDebugAppMetadata
Task :app:checkDebugDuplicateClasses
Task :app:writeDebugSigningConfigVersions
Task :app:preDebugUnitTestBuild UP-TO-DATE
Task :app:javaPreCompileDebugUnitTest
Task :app:mergeLibDexDebug
Task :app:mergeExtDexDebugAndroidTest
Task :app:processDebugResources
Task :app:mergeExtDexDebug

Task :app:compileDebugKotlin FAILED
e: file:///H:/Notification%20app%20NOTIFICATION%20-%20KOTLIN/V2/V2/BCNOTIFICATION0314PM27072024/notificationApp/app/src/main/java/com/myapp/notificationapp/MainActivity.kt:27:19 Unresolved reference: setLogLevel
e: file:///H:/Notification%20app%20NOTIFICATION%20-%20KOTLIN/V2/V2/BCNOTIFICATION0314PM27072024/notificationApp/app/src/main/java/com/myapp/notificationapp/MainActivity.kt:27:41 Unresolved reference: LOG_LEVEL
e: file:///H:/Notification%20app%20NOTIFICATION%20-%20KOTLIN/V2/V2/BCNOTIFICATION0314PM27072024/notificationApp/app/src/main/java/com/myapp/notificationapp/MainActivity.kt:27:70 Unresolved reference: LOG_LEVEL
e: file:///H:/Notification%20app%20NOTIFICATION%20-%20KOTLIN/V2/V2/BCNOTIFICATION0314PM27072024/notificationApp/app/src/main/java/com/myapp/notificationapp/MainActivity.kt:31:19 Unresolved reference: setAppId
e: file:///H:/Notification%20app%20NOTIFICATION%20-%20KOTLIN/V2/V2/BCNOTIFICATION0314PM27072024/notificationApp/app/src/main/java/com/myapp/notificationapp/MyNotificationOpenedHandler.kt:5:22 Unresolved reference: OSNotificationOpenedResult
e: file:///H:/Notification%20app%20NOTIFICATION%20-%20KOTLIN/V2/V2/BCNOTIFICATION0314PM27072024/notificationApp/app/src/main/java/com/myapp/notificationapp/MyNotificationOpenedHandler.kt:8:69 Unresolved reference: OSNotificationOpenedHandler
e: file:///H:/Notification%20app%20NOTIFICATION%20-%20KOTLIN/V2/V2/BCNOTIFICATION0314PM27072024/notificationApp/app/src/main/java/com/myapp/notificationapp/MyNotificationOpenedHandler.kt:9:5 ‘notificationOpened’ overrides nothing
e: file:///H:/Notification%20app%20NOTIFICATION%20-%20KOTLIN/V2/V2/BCNOTIFICATION0314PM27072024/notificationApp/app/src/main/java/com/myapp/notificationapp/MyNotificationOpenedHandler.kt:9:45 Unresolved reference: OSNotificationOpenedResult

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ‘:app:compileDebugKotlin’.

A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction
Compilation error. See log for more details

  • Try:

Run with –stacktrace option to get the stack trace.
Run with –info or –debug option to get more log output.
Run with –scan to get full insights.
Get more help at https://help.gradle.org.

Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.

You can use ‘–warning-mode all’ to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/8.7/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD FAILED in 16s
47 actionable tasks: 46 executed, 1 up-to-date

`

Below is my code

MainActivity

package com.myapp.notificationapp

import android.Manifest
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.PowerManager
import android.provider.Settings
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import com.onesignal.OneSignal

class MainActivity : AppCompatActivity() {

    private val ONESIGNAL_APP_ID = "My_app_id"
    private val PERMISSION_REQUEST_CODE = 1

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Enable verbose OneSignal logging to debug issues
        OneSignal.setLogLevel(OneSignal.LOG_LEVEL.VERBOSE, OneSignal.LOG_LEVEL.NONE)

        // OneSignal Initialization
        OneSignal.initWithContext(this)
        OneSignal.setAppId(ONESIGNAL_APP_ID)

        // Check and request permissions
        checkAndRequestPermissions()

        // Check battery optimization
        checkBatteryOptimization()

        // Start foreground service
        startForegroundService()
    }

    private fun checkAndRequestPermissions() {
        val permissionsNeeded = mutableListOf<String>()

        // Check INTERNET permission
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED) {
            permissionsNeeded.add(Manifest.permission.INTERNET)
        }

        // Check notification permission (for Android 13 and above)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
            if (ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS) != PackageManager.PERMISSION_GRANTED) {
                permissionsNeeded.add(Manifest.permission.POST_NOTIFICATIONS)
            }
        }

        // Check SYSTEM_ALERT_WINDOW permission
        if (!Settings.canDrawOverlays(this)) {
            permissionsNeeded.add(Manifest.permission.SYSTEM_ALERT_WINDOW)
        }

        if (permissionsNeeded.isNotEmpty()) {
            ActivityCompat.requestPermissions(this, permissionsNeeded.toTypedArray(), PERMISSION_REQUEST_CODE)
        }
    }

    private fun checkBatteryOptimization() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager
            val packageName = packageName
            if (!powerManager.isIgnoringBatteryOptimizations(packageName)) {
                val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
                intent.data = Uri.parse("package:$packageName")
                startActivity(intent)
            }
        }
    }

    private fun startForegroundService() {
        val serviceIntent = Intent(this, ForegroundService::class.java)
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            ContextCompat.startForegroundService(this, serviceIntent)
        } else {
            startService(serviceIntent)
        }
    }

    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        if (requestCode == PERMISSION_REQUEST_CODE) {
            for (i in permissions.indices) {
                if (grantResults[i] != PackageManager.PERMISSION_GRANTED) {
                    // Handle permission not granted
                }
            }
        }
    }
}


MyNotificationOpenedHandler

package com.myapp.notificationapp

import android.content.Context
import android.content.Intent
import com.onesignal.OSNotificationOpenedResult
import com.onesignal.OneSignal

class MyNotificationOpenedHandler(val context: Context) : OneSignal.OSNotificationOpenedHandler {
    override fun notificationOpened(result: OSNotificationOpenedResult?) {
        // Handle the action when notification is opened
        val intent = Intent(context, MainActivity::class.java)
        intent.flags = Intent.FLAG_ACTIVITY_REORDER_TO_FRONT or Intent.FLAG_ACTIVITY_NEW_TASK
        context.startActivity(intent)
    }
}


My App level Build.gradle

plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.jetbrains.kotlin.android)
}

android {
    namespace = "com.myapp.notificationapp"
    compileSdk = 34

    defaultConfig {
        applicationId = "com.myapp.notificationapp"
        minSdk = 26
        targetSdk = 34
        versionCode = 1
        versionName = "1.0"

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

    buildTypes {
        release {
            minifyEnabled = false
            proguardFiles(
                    getDefaultProguardFile("proguard-android-optimize.txt"),
                    "proguard-rules.pro"
            )
        }
    }

    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

dependencies {
    implementation(libs.androidx.core.ktx)
    implementation(libs.androidx.appcompat)
    implementation(libs.material)
    implementation(libs.androidx.activity)
    implementation(libs.androidx.constraintlayout)
    implementation 'com.onesignal:OneSignal:[5.0.0, 5.99.99]'
    testImplementation(libs.junit)
    androidTestImplementation(libs.androidx.junit)
    androidTestImplementation(libs.androidx.espresso.core)
}

My settings.gradle

pluginManagement {
    repositories {
        google {
            content {
                includeGroupByRegex("com\.android.*")
                includeGroupByRegex("com\.google.*")
                includeGroupByRegex("androidx.*")
            }
        }
        mavenCentral()
        gradlePluginPortal()
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}

rootProject.name = "Notification App Notification App"
include ':app'

My project level build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
alias(libs.plugins.android.application) apply false
    alias(libs.plugins.jetbrains.kotlin.android) apply false
}

This is my libs.version.toml

[versions]
agp = "8.5.0"
kotlin = "1.9.0"
coreKtx = "1.13.1"
junit = "4.13.2"
junitVersion = "1.2.1"
espressoCore = "3.6.1"
appcompat = "1.7.0"
material = "1.12.0"
activity = "1.9.1"
constraintlayout = "2.1.4"

[libraries]
androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
junit = { group = "junit", name = "junit", version.ref = "junit" }
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
material = { group = "com.google.android.material", name = "material", version.ref = "material" }
androidx-activity = { group = "androidx.activity", name = "activity", version.ref = "activity" }
androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" }

[plugins]
android-application = { id = "com.android.application", version.ref = "agp" }
jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }

when i was using implementation(“com.onesignal:OneSignal:[4.6.4, 5.0.0)”) app the building and running fine, now i am getting the above error. I tried contacting one signal but no help. My app is a simple app just to receive push notification nothing else. I am new to Android development. I would be grateful if anyone could help me.

New contributor

Fabcia Developers is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.

Theme wordpress giá rẻ Theme wordpress giá rẻ Thiết kế website

LEAVE A COMMENT