Подтвердить что ты не робот

Как подписать 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, и причина в том, что я не перевел все строки. Это правда?

Кто-нибудь может мне помочь? Как я могу исправить это, так что Линт покажет мне только предупреждения? или диалог подтверждения, если я уверен, что хочу это сделать?

4b9b3361

Ответ 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, как указано в принятом ответе, или найти способ как-то исключить "библиотеки-импортированные" папки. Для последнего варианта вы можете начать здесь