Как иметь несколько ApplicationIds для одного и того же продукта? - PullRequest
0 голосов
/ 15 марта 2019

У нас есть приложение с белой этикеткой с несколькими вкусами для разных клиентов.Пришел новый клиент, который хочет иметь возможность публиковать приложение через свою учетную запись разработчика.Однако перед выпуском нам нужно протестировать приложение через наш внутренний тестовый трек и убедиться, что среда prod работает (например, биллинг).

Когда мы начали разработку, мы создали новый вид продукта,"com.business.android.product".Теперь, когда мы приближаемся к выпуску, нам нужно другое имя пакета, "com.example.android.thing".У меня вопрос: как мы можем иметь два имени пакета для одного и того же варианта (то есть, используя один и тот же код в папке / product source)?

Вот пример нашей настройки и типа сборки

productFlavors {
    prod1 {
        applicationId "com.business.android"
        buildConfigField 'boolean', 'REPORT_CRASHES', "true"
    }
    prod2 {
        applicationId "com.business.android.product2"
        buildConfigField 'boolean', 'REPORT_CRASHES', "true"
    }
    prod3 {
        applicationId "com.business.android.product3"
        buildConfigField 'boolean', 'REPORT_CRASHES', "true"
        def flavor = "spg"
    }
    prod4 {
        applicationId "com.company.android.product4"
        buildConfigField 'boolean', 'REPORT_CRASHES', "true"
    }

    /* Need a way to have all the code in /prod4 flavor source folder but with
     * a very different applicationId - ex. somebusiness.android.product4
     *
     */
}

buildTypes {
    debug {
        debuggable true
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.KEY
        def buildType = "debug"
        def targetEnvironment = "production"
        buildConfigField "boolean", "PRODUCTION_ENV", "true"
    }

    debugTst {
        minifyEnabled false
        debuggable true
        signingConfig signingConfigs.KEY
        def buildType = "debug"
        buildConfigField "boolean", "PRODUCTION_ENV", "false"
    }

    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.KEY
        def buildType = "release"
        buildConfigField "boolean", "PRODUCTION_ENV", "true"
    }

    releaseTst {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.KEY
        def buildType = "release"
        buildConfigField "boolean", "PRODUCTION_ENV", "false"
    }
}

1 Ответ

0 голосов
/ 16 марта 2019

Эту проблему можно решить, выполнив следующие действия:

sourceSets {
    prod4Ext.java.srcDirs += 'src/prod4/java'
    prod4Ext.res.srcDirs += 'src/prod4/res'
}

Это предоставит исходный код и макеты аромата prod4 для вновь созданного аромата prod4Ext.

...