Как я могу генерировать несколько apk для всех вкусов, используя собственные уникальные ключи подписи [duplicate]

Я хотел бы добавить одну вещь к отличному ответу chazomaticus :

Не забудьте также тег META (например, или HTML4 или XHTML-версия этого файла ):


Это кажется тривиальным, но IE7 дал мне проблемы с этим раньше.

Я делал все правильно; база данных, соединение с базой данных и HTTP-заголовок Content-Type были настроены на UTF-8, и она отлично работала во всех других браузерах, но Internet Explorer по-прежнему настаивал на использовании «западноевропейской» кодировки.

It оказалось, что на странице отсутствует метка META. Добавление этого решения проблемы.

Правка:

У W3C фактически есть довольно большой раздел , посвященный I18N . У них есть ряд статей, связанных с этой проблемой & ndash; описывая HTTP, (X) HTML и CSS сторону вещей:

Они рекомендуют использовать как HTTP-заголовок, так и HTML метатег (или объявление XML в случае XHTML служил XML).

40
задан user2473760 11 June 2013 в 10:16
поделиться

3 ответа

В руководстве пользователя поддерживаются подписывающие соглашения для ароматизаторов.

Проблема здесь связана с областью действия объекта signatureConfigs. Я просто назначил его переменной внутри блока productFlavors, но вне блока аромата flavor1, чтобы исправить проблему:

productFlavors {
    def flavor1SigningVariable = signingConfigs.flavor1

    flavor1 {
        ...
        signingConfig flavor1SigningVariable
        ...
    }
41
ответ дан c2knaps 27 August 2018 в 15:04
поделиться

Вы можете объявить signing config для каждого flavor в buildType. Вот мой файл gradle для ароматов подписи релиза с различными хранилищами ключей.

android {
  signingConfigs {
    configFirst {
        keyAlias 'alias'
        keyPassword 'password'
        storeFile file('first.keystore')
        storePassword 'password'
    }

    configSecond {
        keyAlias 'alias'
        keyPassword 'password'
        storeFile file('second.keystore')
        storePassword 'password'
    }
  }

  compileSdkVersion 23
  buildToolsVersion "23.0.2"
  defaultConfig {
        minSdkVersion 14
        targetSdkVersion 23
  }

  productFlavors{
    flavor1 {
        applicationId "com.test.firstapp"
    }

    flavor2 {
        applicationId "com.test.secondapp"
    }
  }

  buildTypes {
    release {
        productFlavors.flavor1.signingConfig signingConfigs.configFirst
        productFlavors.flavor2.signingConfig signingConfigs.configSecond           

        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'),
                'proguard-rules.pro'

    }
  }
}

buildTypes блок должен быть размещен после блока productFlavors, я имею в виду, что порядок важен.

39
ответ дан ashakirov 27 August 2018 в 15:04
поделиться

Плагин gradle для android поддерживает только подписи для каждого типа сборки, но не для каждого аромата. Причиной этого является то, что любой данный вариант (тип сборки + ароматы) может быть подписан только одним ключом, но может быть комбинацией нескольких групп вкуса. Например, ваши группы вкусов могут быть cpu (x86 / arm) и версия (free / paid), это четыре разных варианта.

Решение, которое вы ищете, - это создание отдельных типов сборки для вашего разные версии выпуска. Например, ваши типы сборки могут быть debug, release, release-beta, например:

...

android {

    ...

    buildTypes {
        debug {
            signingConfig signingConfigs.debug
        }

        release {
            signingConfig signingConfigs.release
        }

        release-beta {
            initWith release
            signingConfig signingConfigs.release-beta
        }
    }
}

Выше initWith просто говорит, что release-beta должен быть копией тип сборки release, только подписанный с другим ключом.

5
ответ дан Marcus Forsell Stahre 27 August 2018 в 15:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: