Как избежать двух вариантов открытия приложения одним и тем же приложением?
У меня есть разные вкусы, настроенные для моего приложения. Когда я устанавливаю оба варианта на одном устройстве, возникает огромная проблема.
Когда я открываю 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 ответа
Удалить applicationId "com.xx.aa"
от defaultConfig
, Вам не нужно указывать здесь, когда вы используете productFlavors
,
В вашем манифесте вы указываете "com.xx.aa" в качестве пакета. Это может вызвать проблемы между обоими или вашими приложениями (aa и bb). Также удалите его из вашего defaultConfig.
У меня есть приложение с несколькими разновидностями, все с одним и тем же пакетом манифеста, но для того, чтобы установить их все на одном устройстве, я изменяю параметр applicationIdSuffix, и все приложение можно использовать одновременно.
Я не знаю, какова ваша точная цель, ниже задача остановит ваше приложение перед запуском.
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
задача.
https://s tackru.com/images/684c48925b1ae707787071d60e0ee9001c13dd6b.png