ShahiM ShahiM - 1 year ago 235
Android Question

Cannot install debug and release version on same device

I have configured build variants in my project with

so that I can install both debug and release versions on my device.
here is my
(relevant parts):

buildTypes {
debug {
buildConfigField "String", "BASE_URL", '""'

applicationIdSuffix ".debug"
release {
buildConfigField "String", "BASE_URL", '""'
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), ''

But when I try to install both, it fails. I tried different ways:

1. Generated both debug and release apks and transferred them to my phone storage. The first one installs, and the second one gives an error "App not installed" - no further info. This is the same no matter which version I install first.

2. Installed debug version from storage, then tried to install release version from play store, but play store gives error :

cant install app error code:-505.

3. Installed release version from store, and then tried running the project from android studio, and this is my 'run' log :

Launching app
$ adb push D:\myPROJECTS\MyApp\app\build\outputs\apk\app-debug.apk /data/local/tmp/com.example.myapp.debug
$ adb shell pm install -r "/data/local/tmp/com.example.myapp.debug"
java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String android.os.SystemProperties.native_get(java.lang.String) (tried Java_android_os_SystemProperties_native_1get and Java_android_os_SystemProperties_native_1get__Ljava_lang_String_2)
at android.os.SystemProperties.native_get(Native Method)
at android.os.SystemProperties.get(
at android.os.Environment$UserEnvironment.<init>(
at android.os.Environment.initForCurrentUser(
at android.os.Environment.<clinit>(
at android.os.Environment.getLegacyExternalStorageDirectory(
at android.os.Debug.<clinit>(
at android.ddm.DdmHandleHello.handleHELO(
at android.ddm.DdmHandleHello.handleChunk(
at org.apache.harmony.dalvik.ddmc.DdmServer.dispatch(
java.lang.UnsatisfiedLinkError: android.os.Debug
at android.ddm.DdmHandleHello.handleFEAT(
at android.ddm.DdmHandleHello.handleChunk(
at org.apache.harmony.dalvik.ddmc.DdmServer.dispatch(
java.lang.UnsatisfiedLinkError: android.os.Debug
at android.ddm.DdmHandleProfiling.handleMPRQ(
at android.ddm.DdmHandleProfiling.handleChunk(
at org.apache.harmony.dalvik.ddmc.DdmServer.dispatch(

$ adb shell am start -n "com.example.myapp.debug/com.example.myapp.LoginActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Error while executing: am start -n "com.example.myapp.debug/com.example.myapp.LoginActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.example.myapp.debug/com.example.myapp.LoginActivity }
Error type 3
Error: Activity class {com.example.myapp.debug/com.example.myapp.LoginActivity} does not exist.

Error while Launching activity

any idea what is going on?

Update : don't know if it helps, but here is how I declared my launcher activity in

<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />

Answer Source

Okay, I figured out what was going on.

I was actually creating an unsigned apk for the debug variant (Build > Build APK). But I had to use (Build > Generate Signed APK) and then select the debug variant from the options.

enter image description here

Also, when running the project on my device, gradle would be generating an unsigned apk. So that too wouldn't work. That is - unless I configure SigningConfigs as explained in this answer.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download