Установите два отладочных apk из одного приложения (Flavors)

Итак, у меня есть это приложение1, и я хочу создать приложение2 из приложения1. Это будет почти такое же приложение, но с различиями в макете. Мне удается сделать это с помощью productFlavors. В результате должно быть два приложения в магазине Play, оба бесплатные, и пользователь может иметь оба на своем телефоне.

Однако я могу собрать оба apk для отладки, но когда я устанавливаю один, телефон не позволяет мне установить другой. Это произойдет после того, как оба будут загружены в магазин?

Это мой градус:

defaultConfig {
    applicationId "com.example.app"
    minSdkVersion 16
    targetSdkVersion 25
    versionCode 48
    versionName "3.1.1"

    multiDexEnabled true
}

signingConfigs {
    String releaseFilename = "/.androidReleaseKeys/example_release.properties"

    Properties props = new Properties()
    props.load(new FileInputStream(file(releaseFilename)))


    release {
        storeFile file(props.getProperty('keystore'))
        storePassword props.getProperty('keystore.password')
        keyAlias props.getProperty('keyAlias')
        keyPassword props.getProperty('keyAlias.password')
    }

}

productFlavors{
    app1{
        applicationId "com.example.app"
        buildTypes {

            debug {
                buildConfigField "String", "GOOGLEMAPS_API_KEY", "\"${googleMapsAPIDev}\"";
                debuggable true
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }


            release {
                signingConfig signingConfigs.release
                buildConfigField "String", "GOOGLEMAPS_API_KEY", "\"${googleMapsAPIRelease}\"";
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }

    app2{
        applicationId "com.example2.app2"
        versionCode 1
        versionName "1"
        multiDexEnabled true

        buildTypes {

            debug {
                buildConfigField "String", "GOOGLEMAPS_API_KEY", "\"${googleMapsAPIDev}\"";
                debuggable true
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }


            release {
                signingConfig signingConfigs.release
                buildConfigField "String", "GOOGLEMAPS_API_KEY", "\"${googleMapsAPIRelease}\"";
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }

    }

person Diogo Rosa    schedule 02.06.2017    source источник
comment
Должен ли я сейчас создать новое приложение в консоли и создать новое хранилище ключей только для нее? (Я где-то читал, что вы можете использовать одно и то же хранилище ключей для нескольких приложений)   -  person Diogo Rosa    schedule 02.06.2017
comment
Какую ошибку возвращает adb при установке второго приложения?   -  person Artyom    schedule 05.06.2017
comment
Ошибка установки с сообщением INSTALL_FAILED_DUPLICATE_PERMISSION perm=com.example1.app.permission.C2D_MESSAGE pkg=com.example2.app (не в adb, просто всплывающее окно) Думаю, мне нужно создать второй манифест и объединить его с некоторыми изменениями   -  person Diogo Rosa    schedule 05.06.2017


Ответы (1)


Объявите это разрешение в манифесте с заполнителем ${applicationId}:

<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE"/>
<permission
    android:name="${applicationId}.permission.C2D_MESSAGE"
    android:protectionLevel="signature"/>

Не указывайте имя пакета в манифесте.

person Artyom    schedule 05.06.2017
comment
Я пытаюсь это сделать, но как насчет поля пакета в манифесте, кажется, что я использую ${applicationId}, adb говорит, что не может прочитать packageName - person Diogo Rosa; 05.06.2017
comment
Как вы устанавливаете пакет в манифесте? Опубликуйте свой тег <manifest>. - person Artyom; 05.06.2017
comment
‹manifest xmlns:android=schemas.android.com/apk/res/android пакет =com.example1.com› я оставил так, но изменил жестко запрограммированный код в остальной части манифеста, и это сработало, теперь у меня установлены два приложения. Спасибо, я принял ваш ответ - person Diogo Rosa; 05.06.2017