Search code examples
androidgoogle-play

What is causing these logcat error messages when using com.google.android.gms.security.ProviderInstaller


Im attempting to Update my Android Applications security provider to protect against SSL exploits, heres my android application class code:-

class AppApplication : Application() {

    override fun onCreate() {
        super.onCreate()

        upgradeSecurityProvider()

    }

    private fun upgradeSecurityProvider() {
        ProviderInstaller.installIfNeededAsync(this@AppApplication, object : ProviderInstaller.ProviderInstallListener {
            override fun onProviderInstalled() {
                Log.i(TAG, "onProviderInstalled: WORKED!!!!!!!!!!!")
            }

            override fun onProviderInstallFailed(errorCode: Int, recoveryIntent: Intent?) {
                val message = " override fun onProviderInstallFailed($errorCode: Int, $recoveryIntent: Intent?) {}"
                Log.e(TAG, "onProviderInstallFailed: ", RuntimeException(message))
            }
        })
    }
}

private const val TAG = "AppApplication"

When this code executes i see the following logcat entries:-

Considering local module com.google.android.gms.providerinstaller.dynamite:0 and remote module com.google.android.gms.providerinstaller.dynamite:0
Failed to load providerinstaller module: No acceptable module com.google.android.gms.providerinstaller.dynamite found. Local version is 0 and remote version is 0.
Failed to report request stats: com.google.android.gms.common.security.ProviderInstallerImpl.reportRequestStats [class android.content.Context, long, long]

in addition i see this exception and warning:-

E  Failed to get service from broker. 
   java.lang.SecurityException: Unknown calling package name 'com.google.android.gms'.
    at android.os.Parcel.createExceptionOrNull(Parcel.java:3069)
    at android.os.Parcel.createException(Parcel.java:3053)
    at android.os.Parcel.readException(Parcel.java:3036)
    at android.os.Parcel.readException(Parcel.java:2978)
    at asba.a(:com.google.android.gms@[email protected] (190400-721896117):36)
    at arzh.z(:com.google.android.gms@[email protected] (190400-721896117):143)
    at arha.run(:com.google.android.gms@[email protected] (190400-721896117):54)
    at android.os.Handler.handleCallback(Handler.java:958)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at bysy.mw(:com.google.android.gms@[email protected] (190400-721896117):1)
    at bysy.dispatchMessage(:com.google.android.gms@[email protected] (190400-721896117):5)
    at android.os.Looper.loopOnce(Looper.java:230)
    at android.os.Looper.loop(Looper.java:319)
    at android.os.HandlerThread.run(HandlerThread.java:67)


W  Failed to register com.google.android.gms.providerinstaller#com.google.android.gms
   eshc: 17: 17: API: Phenotype.API is not available on this device. Connection failed with: ConnectionResult{statusCode=DEVELOPER_ERROR, resolution=null, message=null}
    at eshe.a(:com.google.android.gms@[email protected] (190400-721896117):13)
    at fmak.d(:com.google.android.gms@[email protected] (190400-721896117):3)
    at fmam.run(:com.google.android.gms@[email protected] (190400-721896117):130)
    at fmcf.execute(:com.google.android.gms@[email protected] (190400-721896117):1)
    at fman.h(:com.google.android.gms@[email protected] (190400-721896117):1)
    at fman.l(:com.google.android.gms@[email protected] (190400-721896117):101)
    at fman.p(:com.google.android.gms@[email protected] (190400-721896117):19)
    at ekhy.hF(:com.google.android.gms@[email protected] (190400-721896117):35)
    at dzaw.run(:com.google.android.gms@[email protected] (190400-721896117):14)
    at fmcf.execute(:com.google.android.gms@[email protected] (190400-721896117):1)
    at dzax.b(:com.google.android.gms@[email protected] (190400-721896117):18)
    at dzbm.b(:com.google.android.gms@[email protected] (190400-721896117):36)
    at dzbo.c(:com.google.android.gms@[email protected] (190400-721896117):26)
    at arei.c(:com.google.android.gms@[email protected] (190400-721896117):9)
    at argy.q(:com.google.android.gms@[email protected] (190400-721896117):48)
    at argy.d(:com.google.android.gms@[email protected] (190400-721896117):10)
    at argy.g(:com.google.android.gms@[email protected] (190400-721896117):211)
    at argy.onConnectionFailed(:com.google.android.gms@[email protected] (190400-721896117):2)
    at arha.run(:com.google.android.gms@[email protected] (190400-721896117):82)
    at android.os.Handler.handleCallback(Handler.java:958)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at bysy.mw(:com.google.android.gms@[email protected] (190400-721896117):1)
    at bysy.dispatchMessage(:com.google.android.gms@[email protected] (190400-721896117):5)
    at android.os.Looper.loopOnce(Looper.java:230)
    at android.os.Looper.loop(Looper.java:319)
    at android.os.HandlerThread.run(HandlerThread.java:67)
   Caused by: arda: 17: API: Phenotype.API is not available on this device. Connection failed with: ConnectionResult{statusCode=DEVELOPER_ERROR, resolution=null, message=null}
    at aryt.a(:com.google.android.gms@[email protected] (190400-721896117):15)
    at arel.a(:com.google.android.gms@[email protected] (190400-721896117):1)
    at arei.c(:com.google.android.gms@[email protected] (190400-721896117):5)
    at argy.q(:com.google.android.gms@[email protected] (190400-721896117):48) 
    at argy.d(:com.google.android.gms@[email protected] (190400-721896117):10) 
    at argy.g(:com.google.android.gms@[email protected] (190400-721896117):211) 
    at argy.onConnectionFailed(:com.google.android.gms@[email protected] (190400-721896117):2) 
    at arha.run(:com.google.android.gms@[email protected] (190400-721896117):82) 
    at android.os.Handler.handleCallback(Handler.java:958) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at bysy.mw(:com.google.android.gms@[email protected] (190400-721896117):1) 
    at bysy.dispatchMessage(:com.google.android.gms@[email protected] (190400-721896117):5) 
    at android.os.Looper.loopOnce(Looper.java:230) 
    at android.os.Looper.loop(Looper.java:319) 
    at android.os.HandlerThread.run(HandlerThread.java:67) 

However I then see these success messages:-

I  Installed default security provider GmsCore_OpenSSL

onProviderInstalled: WORKED!!!!!!!!!!!

and finally this repeated exception is logged:-

E  Failed to get service from broker. 
   java.lang.SecurityException: Unknown calling package name 'com.google.android.gms'.
    at android.os.Parcel.createExceptionOrNull(Parcel.java:3069)
    at android.os.Parcel.createException(Parcel.java:3053)
    at android.os.Parcel.readException(Parcel.java:3036)
    at android.os.Parcel.readException(Parcel.java:2978)
    at asba.a(:com.google.android.gms@[email protected] (190400-721896117):36)
    at arzh.z(:com.google.android.gms@[email protected] (190400-721896117):143)
    at arha.run(:com.google.android.gms@[email protected] (190400-721896117):54)
    at android.os.Handler.handleCallback(Handler.java:958)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at bysy.mw(:com.google.android.gms@[email protected] (190400-721896117):1)
    at bysy.dispatchMessage(:com.google.android.gms@[email protected] (190400-721896117):5)
    at android.os.Looper.loopOnce(Looper.java:230)
    at android.os.Looper.loop(Looper.java:319)
    at android.os.HandlerThread.run(HandlerThread.java:67)

Do i need to be concerned about these warning and error messages? As it appears default security provider GmsCore_OpenSSL is being updated.

what am i doing wrong to cause these execptions?

my gradle resembles this:-

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

android {
    namespace = "com.my.app"
    compileSdk = 35

    defaultConfig {
        applicationId = "com.my.app"
        minSdk = 24
        targetSdk = 35
        versionCode = 1
        versionName = "1.0"

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

    buildTypes {
        release {
            isMinifyEnabled = false
            proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
        }
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }
    kotlinOptions {
        jvmTarget = "17"
    }
    buildFeatures {
        compose = true
    }
}

dependencies {
    implementation("com.google.android.play:app-update:2.1.0")
    implementation("com.google.android.play:app-update-ktx:2.1.0")


    implementation(libs.androidx.core.ktx)
    implementation(libs.androidx.lifecycle.runtime.ktx)
    implementation(libs.androidx.activity.compose)
    implementation(platform(libs.androidx.compose.bom))
    implementation(libs.androidx.ui)
    implementation(libs.androidx.ui.graphics)
    implementation(libs.androidx.ui.tooling.preview)
    implementation(libs.androidx.material3)
    testImplementation(libs.junit)
    androidTestImplementation(libs.androidx.junit)
    androidTestImplementation(libs.androidx.espresso.core)
    androidTestImplementation(platform(libs.androidx.compose.bom))
    androidTestImplementation(libs.androidx.ui.test.junit4)
    debugImplementation(libs.androidx.ui.tooling)
    debugImplementation(libs.androidx.ui.test.manifest)
}

Solution

  • You’re calling ProviderInstaller.installIfNeededAsync(...) correctly, and it is updating the security provider (notice the “Installed default security provider GmsCore_OpenSSL” message). The “Failed to load providerinstaller module,” “SecurityException,” and “Phenotype.API is not available” logs are common internal warnings from Play services. They look alarming but usually aren’t harmful or indicative of a bug in your code. As long as onProviderInstalled is triggered and you see the “Installed default security provider” log, you can safely ignore those warnings.

    If you want to know what is really causing these logs…

    1. Dynamite Module Loading
    • The “Failed to load providerinstaller module: No acceptable module found” message appears because Google’s ProviderInstaller tries to load a Dynamite module (a way Google services deliver features/updates without a full app update) but doesn’t find a matching version on your device. Then it falls back to its default update mechanism, which succeeds in the end—hence the “Installed default security provider GmsCore_OpenSSL” message.
    1. Phenotype & Developer Errors
    • The warnings about “Phenotype.API” not being available or DEVELOPER_ERROR indicate that certain internal Google APIs (Phenotype is basically Google’s feature flag/config system) aren’t accessible or supported on the device/emulator. These warnings don’t affect the actual security provider installation; they’re more of a reflection of the limited or restricted environment on the device.
    1. SecurityException: Unknown calling package
    • This often happens when Google Play services attempts some system-level call that requires specific permissions or package verifications. On many devices or emulators, the OS either can’t verify “com.google.android.gms” as a calling package or rejects the request. The “SecurityException” message is mostly an internal log rather than a crash that stops the process.

    In other words, the logs are just internal noise from Google Play services’ fallback steps. Since you see the success message, your app is doing the right thing. There’s no need to worry about these warnings or change anything in your code.