Не удается установить версию отладки и выпуска на том же устройстве

Я сконфигурировал варианты сборки в своем проекте с помощью applicationIdSuffix, чтобы установить на своем устройстве обе версии отладки и выпуска. вот мой build.gradle (соответствующие части):

 buildTypes {
        debug {
            buildConfigField "String", "BASE_URL", '"http://dev.xyz.com"'

            applicationIdSuffix ".debug"
        }
        release {
            buildConfigField "String", "BASE_URL", '"http://api.xyz.com"'
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

Но когда я пытаюсь установить оба, это терпит неудачу. Я пробовал разные способы:

1. Сгенерировано как отладка, так и релиз apks и перенесены в хранилище телефона. Первый устанавливает, а второй дает ошибку "Приложение не установлено" - дополнительной информации нет. Это то же самое независимо от того, какую версию я устанавливаю в первую очередь.

2. Установленная версия отладки из хранилища, а затем попыталась установить версию выпуска из магазина воспроизведения, но в режиме воспроизведения появляется ошибка:

Невозможно установить код ошибки приложения: -505.

3. Установленная версия выпуска из магазина, а затем попыталась запустить проект из студии android, и это мой журнал "run":

    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(SystemProperties.java:52)
      at android.os.Environment$UserEnvironment.<init>(Environment.java:123)
      at android.os.Environment.initForCurrentUser(Environment.java:98)
      at android.os.Environment.<clinit>(Environment.java:92)
      at android.os.Environment.getLegacyExternalStorageDirectory(Environment.java:597)
      at android.os.Debug.<clinit>(Debug.java:103)
      at android.ddm.DdmHandleHello.handleHELO(DdmHandleHello.java:164)
      at android.ddm.DdmHandleHello.handleChunk(DdmHandleHello.java:91)
      at org.apache.harmony.dalvik.ddmc.DdmServer.dispatch(DdmServer.java:171)
    java.lang.UnsatisfiedLinkError: android.os.Debug
      at android.ddm.DdmHandleHello.handleFEAT(DdmHandleHello.java:176)
      at android.ddm.DdmHandleHello.handleChunk(DdmHandleHello.java:93)
      at org.apache.harmony.dalvik.ddmc.DdmServer.dispatch(DdmServer.java:171)
    java.lang.UnsatisfiedLinkError: android.os.Debug
      at android.ddm.DdmHandleProfiling.handleMPRQ(DdmHandleProfiling.java:187)
      at android.ddm.DdmHandleProfiling.handleChunk(DdmHandleProfiling.java:88)
      at org.apache.harmony.dalvik.ddmc.DdmServer.dispatch(DdmServer.java:171)
    Aborted 

    $ 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

любая идея, что происходит?

Обновить: не знаю, помогает ли это, но вот как я объявил свою активность запуска в androidmanifest.xml:

<activity
    android:name=".LoginActivity"
    android:label="@string/app_name"
    android:screenOrientation="portrait"
    android:theme="@style/AppTheme.Launcher">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

Ответы

Ответ 1

Хорошо, я понял, что происходит.

Я действительно создавал unsigned apk для варианта debug (Build > Build APK). Но мне пришлось использовать ( Сборкa > Сгенерировать подписанный APK), а затем выбрать вариант отладки из параметров.

введите описание изображения здесь

Кроме того, при запуске проекта на моем устройстве gradle будет генерировать unsigned apk. Так что это тоже не сработало. То есть - если я не настроил SigningConfigs, как описано в этом ответе.

Ответ 2

Вместо использования типов сборки, почему бы не использовать продукт Flavors вместо этого? Здесь ссылка на документация о том, как это сделать, а также то, что вы в настоящее время пытаетесь сделать. Надеюсь, это поможет.