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



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

1314   6  

6 ответов:

самый чистый способ решить эту проблему-отключить проверку Lint отсутствующих переводов только для сборок выпуска.

для этого добавьте "отключить 'MissingTranslation'" в вашу сборку.gradle файл, как показано ниже:

android {
    buildTypes {
        release {
            lintOptions {
                disable 'MissingTranslation'
            }
        }
    }
}

мне кажется, что 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 по умолчанию обращены к studio как ошибки, я на самом деле не знаю, почему, но с точки зрения переводов я думаю, что это способ "остановить" публикацию приложения, которое перевод является неполным из-за последних добавлений некоторых текстов.

С lintOptions checkReleaseBuilds abortOnError вы устанавливаете проверку Lint не запускать для версий выпуска, а также не останавливаться, если обнаружена "ошибка". Ниже я объясню, где можно найти настройки ошибок Lint, поэтому если вы хотите пойти дальше, вы можете сделать один шаг вперед и прочитать их один за другим. Некоторые из них содержат полезные инструкции по оптимизации кода.

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

в настройках Android Studio также есть возможность изменить любую ошибку Lint на предупреждение Lint, но я никогда не проверяю это. Я обычно обращаюсь к gradle решение.

опция находится по адресу Settings>Inspections>Android Lint. Для удобства поиска откройте Настройки и при поиске (расположенном вверху) введите Lint translation там вы можете изменить параметры перевода появляются слева от ошибок до предупреждений.

другой вариант, если ваши строки ошибок никогда не будут переведены, - это добавить в ваши XML-строковые файлы tools:ignore="MissingTranslation" либо в корневом элементе, либо в каждой непереводимой строке.

простой способ решить эту ошибку

просто добавьте следующий код, чтобы добавить "отключить' MissingTranslation '" в вашу сборку.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'
                }
            }
        }
    }

вы можете попробовать открыть " редактор переводов "и установить строку"..."как "Unstranlatable". Вы также должны удалить все переводы этой строки.

FWIW: если вы не планируете поддерживать другие языки, то вам вообще не нужно отключать проверки lint. Иногда ваша настройка проекта (или библиотека, которую вы импортируете) может случайно или намеренно включить конфигурацию для поддержки дополнительных языков, объявив папку значений для этого языка, например:

<your project source folder>/main/res/values-ar

Это было так для меня, поэтому я просто удалил папку. Но если у вас нет контроля над обидчиком библиотека тогда один из вариантов-отключить lint abortOnError, как указано в принятом ответе, или найти способ каким-то образом исключить папки "библиотека-импорт". Для последнего варианта вы можете начать здесь

есть много решений, но я пытался

<string name="hello" translatable="false">hello</string>

это атрибут ignore пространства имен tools в вашем файле строк, как показано ниже:

<?xml version="1.0" encoding="utf-8"?>
<resources
  xmlns:tools="http://schemas.android.com/tools"
  tools:ignore="MissingTranslation" >

  <!-- your strings here; no need now for the translatable attribute -->

</resources>

и с Gradle в

 release {
            lintOptions {
                disable 'MissingTranslation'
            }
        }

и

android {
     lintOptions {
        disable 'MissingTranslation'
    }
}

Comments

    Ничего не найдено.