Как подписать APK на Android Studio даже с непереведенными строками?
Фон
Недавно я перенесла мое приложение в Android-Studio. У меня были некоторые проблемы, но я в конце концов их преодолел.
Проблема
По какой-то причине, в Android Studio, когда я пытаюсь подписать APK, я получаю много ошибок, которые выглядят следующим образом:
Error:(16) Error: "..." is not translated in "de" (German), "el" (Greek), "iw" (Hebrew) [MissingTranslation]
(где "..." - строка)
Внизу, после множества ошибок такого типа, я вижу следующее:
Error:Execution failed for task ':app:lintVitalRelease'.
> Lint found fatal errors while assembling a release target.
To proceed, either fix the issues identified by lint, or modify your build script as follows:
...
android {
lintOptions {
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
}
}
...
Вопрос
Я не уверен, что случилось, и как я могу это исправить. На Eclipse я сделал это очень легко. Отсутствующие переводы не должны мешать мне подписывать APK...
Мне кажется, что Lint препятствует экспорту APK, и причина в том, что я не перевел все строки. Это правда?
Кто-нибудь может мне помочь? Как я могу исправить это, так что Линт покажет мне только предупреждения? или диалог подтверждения, если я уверен, что хочу это сделать?
Ответы
Ответ 1
Самый чистый способ решить проблему - отключить проверки отсутствующих переводов Lint только для версий релизов.
Для этого добавьте "отключить" MissingTranslation "в файл build.gradle, как показано ниже:
android {
buildTypes {
release {
lintOptions {
disable 'MissingTranslation'
}
}
}
}
Ответ 2
Мне кажется, что Lint препятствует экспорту APK, и что причина в том, что я не перевел все строки. В том, что правда?
Да. Значение по умолчанию: lintOptions.abortOnError = true
Кто-нибудь может мне помочь?
Вы должны открыть файл build.gradle
, расположенный в основном модуле проекта, или общую папку, если у вас нет модуля. Затем добавьте предлагаемые строки:
android {
lintOptions {
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
}
}
Некоторые предупреждения Lint по умолчанию превращаются в студию как ошибки, я на самом деле не знаю почему, но в терминах переводов я предполагаю, что это способ "остановить" публикацию приложения, что перевод неполный из-за последние добавления некоторых текстов.
С помощью lintOptions checkReleaseBuilds abortOnError
вы устанавливаете проверку Lint не для версий выпуска, а также не останавливаетесь, если найдена "ошибка". Ниже я объясню, где можно найти параметры ошибок Lint, поэтому, если вы хотите идти дальше, вы можете идти на один шаг вперед и читать их по одному. Некоторые из них предоставляют полезные инструкции для оптимизации кода.
Как я могу исправить это, так что Lint покажет мне только предупреждения? или диалог подтверждения, если я уверен, что хочу это сделать?
В настройках Android Studio также есть возможность изменить любую ошибку Lint на предупреждение Lint, но я никогда не проверяю это. Обычно я обращаюсь к решению gradle.
Опция находится в Settings
> Inspections
> Android Lint
. Для упрощения поиска откройте "Настройки" и в поиске (расположенном вверху) введите Lint translation
там, где вы можете изменить параметры перевода слева от ошибок до предупреждений.
Другой вариант, если ваши строки ошибок никогда не будут переведены, заключается в добавлении в ваши строковые файлы XML tools:ignore="MissingTranslation"
либо в корневом элементе, либо в каждой непереводимой строке.
Ответ 3
Простой способ решить эту ошибку
Просто добавьте следующий код Чтобы добавить "отключить" MissingTranslation "в файл build.gradle, как показано ниже:
...
android {
lintOptions {
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
}
}
...
ИЛИ Вы также можете добавить это:
android {
buildTypes {
release {
lintOptions {
disable 'MissingTranslation'
}
}
}
}
Ответ 4
Вы можете попытаться открыть "Редактор переводов" и установить строку "..." как "Unstranlatable".
Вы также должны удалить все переводы этой строки.
Ответ 5
FWIW: Если вы не планируете поддерживать другие языки, вам не нужно вообще отключать чеки. Иногда ваша настройка проекта (или библиотека, которую вы импортируете) может быть случайно или намеренно включена в конфигурацию для поддержки дополнительных языков, объявив папку значений для этого языка, например, например:
<your project source folder>/main/res/values-ar
Это было для меня, поэтому я просто удалил папку. Но если у вас нет контроля над библиотекой-нарушителем, тогда один из вариантов - отключить lint abortOnError, как указано в принятом ответе, или найти способ как-то исключить "библиотеки-импортированные" папки. Для последнего варианта вы можете начать здесь