Как избежать двух вариантов открытия приложения одним и тем же приложением? - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть разные вкусы, настроенные для моего приложения.Когда я устанавливаю оба варианта на одно устройство, возникает огромная проблема.

Когда я открываю App1 (Flavor 1), а затем минимизирую его (нажимаю кнопку «Домой») и пытаюсь открыть App2 (Flavor 2), он открываетсяApp1 (Flavour1).Чтобы открыть App2, я должен убить App1 из последних и затем открыть App2.Это происходит и наоборот.

Я тоже пытался использовать разные вкусовые размерыВот моя текущая конфигурация.

android {
compileSdkVersion 28
buildToolsVersion '28.0.3'
flavorDimensions("default")
defaultConfig {
    applicationId "com.xx.aa"
    minSdkVersion 21
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    vectorDrawables.useSupportLibrary = true
    multiDexEnabled true
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
lintOptions {
    disable 'RestrictedApi'
}

productFlavors {
    aa {
        applicationId "com.xx.aa"
        versionCode 12
        versionName "1.0.1"
        manifestPlaceholders = [
                appName: 'aa',
                appId  : 'com.xx.aa'
        ]
        buildConfigField "boolean", "XXXX", "false"
    }
    bb {
        applicationId "com.xx.bb"
        versionCode 2
        versionName "1.2.3"
        manifestPlaceholders = [
                appName: 'bb',
                appId  : 'com.xx.bb'
        ]
        buildConfigField "boolean", "XXXX", "true"
    }
}

Мой манифест

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xx.aa">

<!-- few permissions-->
<uses-feature
    android:name="android.hardware.camera"
    android:required="true" />

<application
    android:name=".global.aaApplication"
    android:allowBackup="false"
    android:fullBackupContent="false"
    android:icon="@drawable/ic_launcher_default"
    android:label="${appName}"
    android:roundIcon="@drawable/ic_launcher_default"
    android:supportsRtl="true"
    android:theme="@style/AppCompactTheme">
    <activity
        android:name=".activity.SplashActivity"
        android:screenOrientation="portrait"/>
.
.
.

</application>
</manifest>

Ответы [ 3 ]

0 голосов
/ 11 декабря 2018

Я не знаю, какова ваша точная цель, ниже задача остановит ваше приложение перед запуском.

task stopApp(type: Exec) {
    android.applicationVariants.all { variant ->
        android.productFlavors.all { flavor ->
            if (variant.flavorName == flavor.name) {
                def applicationId = [variant.mergedFlavor.applicationId, flavor.applicationIdSuffix].findAll().join()
                def command = ['adb', 'shell', 'am', 'force-stop', applicationId]
                commandLine command
            }
        }
    }
}

Добавьте это задание к вашему Run Configuration> Before launch.

Или просто (если все в порядке) добавить задачу uninstallAll.

enter uninstall gradle task

0 голосов
/ 11 декабря 2018

В вашем манифесте вы указываете "com.xx.aa" в качестве пакета.Это может вызвать проблемы между обоими или вашими приложениями (aa и bb).Также удалите его из defaultConfig.

У меня есть приложение с несколькими разновидностями, все с одним и тем же пакетом манифеста, но для того, чтобы установить их на одно устройство, я изменяю параметр applicationIdSuffix, и все приложение можно использовать нав то же время.

0 голосов
/ 11 декабря 2018

Удалить applicationId "com.xx.aa" из defaultConfig.Вам не нужно указывать здесь, когда вы используете productFlavors.

...