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@250363029@25.03.63 (190400-721896117):36)
at arzh.z(:com.google.android.gms@250363029@25.03.63 (190400-721896117):143)
at arha.run(:com.google.android.gms@250363029@25.03.63 (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@250363029@25.03.63 (190400-721896117):1)
at bysy.dispatchMessage(:com.google.android.gms@250363029@25.03.63 (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@250363029@25.03.63 (190400-721896117):13)
at fmak.d(:com.google.android.gms@250363029@25.03.63 (190400-721896117):3)
at fmam.run(:com.google.android.gms@250363029@25.03.63 (190400-721896117):130)
at fmcf.execute(:com.google.android.gms@250363029@25.03.63 (190400-721896117):1)
at fman.h(:com.google.android.gms@250363029@25.03.63 (190400-721896117):1)
at fman.l(:com.google.android.gms@250363029@25.03.63 (190400-721896117):101)
at fman.p(:com.google.android.gms@250363029@25.03.63 (190400-721896117):19)
at ekhy.hF(:com.google.android.gms@250363029@25.03.63 (190400-721896117):35)
at dzaw.run(:com.google.android.gms@250363029@25.03.63 (190400-721896117):14)
at fmcf.execute(:com.google.android.gms@250363029@25.03.63 (190400-721896117):1)
at dzax.b(:com.google.android.gms@250363029@25.03.63 (190400-721896117):18)
at dzbm.b(:com.google.android.gms@250363029@25.03.63 (190400-721896117):36)
at dzbo.c(:com.google.android.gms@250363029@25.03.63 (190400-721896117):26)
at arei.c(:com.google.android.gms@250363029@25.03.63 (190400-721896117):9)
at argy.q(:com.google.android.gms@250363029@25.03.63 (190400-721896117):48)
at argy.d(:com.google.android.gms@250363029@25.03.63 (190400-721896117):10)
at argy.g(:com.google.android.gms@250363029@25.03.63 (190400-721896117):211)
at argy.onConnectionFailed(:com.google.android.gms@250363029@25.03.63 (190400-721896117):2)
at arha.run(:com.google.android.gms@250363029@25.03.63 (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@250363029@25.03.63 (190400-721896117):1)
at bysy.dispatchMessage(:com.google.android.gms@250363029@25.03.63 (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@250363029@25.03.63 (190400-721896117):15)
at arel.a(:com.google.android.gms@250363029@25.03.63 (190400-721896117):1)
at arei.c(:com.google.android.gms@250363029@25.03.63 (190400-721896117):5)
at argy.q(:com.google.android.gms@250363029@25.03.63 (190400-721896117):48)
at argy.d(:com.google.android.gms@250363029@25.03.63 (190400-721896117):10)
at argy.g(:com.google.android.gms@250363029@25.03.63 (190400-721896117):211)
at argy.onConnectionFailed(:com.google.android.gms@250363029@25.03.63 (190400-721896117):2)
at arha.run(:com.google.android.gms@250363029@25.03.63 (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@250363029@25.03.63 (190400-721896117):1)
at bysy.dispatchMessage(:com.google.android.gms@250363029@25.03.63 (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@250363029@25.03.63 (190400-721896117):36)
at arzh.z(:com.google.android.gms@250363029@25.03.63 (190400-721896117):143)
at arha.run(:com.google.android.gms@250363029@25.03.63 (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@250363029@25.03.63 (190400-721896117):1)
at bysy.dispatchMessage(:com.google.android.gms@250363029@25.03.63 (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)
}
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.
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.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.