Я хотел бы добавить одну вещь к отличному ответу 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).
В руководстве пользователя поддерживаются подписывающие соглашения для ароматизаторов.
Проблема здесь связана с областью действия объекта signatureConfigs. Я просто назначил его переменной внутри блока productFlavors
, но вне блока аромата flavor1
, чтобы исправить проблему:
productFlavors {
def flavor1SigningVariable = signingConfigs.flavor1
flavor1 {
...
signingConfig flavor1SigningVariable
...
}
Вы можете объявить 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
, я имею в виду, что порядок важен.
Плагин 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
, только подписанный с другим ключом.