如何在Android Studio上使用非翻译string来签名APK?

背景

我最近把我的应用程序迁移到Android-Studio。 我遇到了一些问题,但最终我终于解决了。

问题

出于某种原因,在Android Studio上,当我尝试签署一个APK时,我收到了很多像这样的错误:

Error:(16) Error: "..." is not translated in "de" (German), "el" (Greek), "iw" (Hebrew) [MissingTranslation] 

(其中“…”是一个string)

在底部,经过这种错误很多,我看到这样的:

 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上我很容易做到这一点。 缺less翻译不应阻止我签署APK …

对我来说,好像Lint正在阻止APK的导出,而原因是我没有翻译所有的string。 真的吗?

谁能帮帮我吗? 我该如何解决这个问题,这样Lint会告诉我只是警告而已? 或者如果我确定我想要做一个确认对话框?

解决这个问题的最简单的方法是仅对发布版本禁用Lint检查缺less的翻译。

为此,将“禁用”MissingTranslation“”添加到您的build.gradle文件中,如下所示:

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

对我来说,好像Lint正在阻止APK的导出,而原因是我没有翻译所有的string。 真的吗?

是。 默认选项是lintOptions.abortOnError = true

谁能帮帮我吗?

您应该打开位于主项目模块的build.gradle文件,或者如果没有模块,则打开通用文件夹。 然后添加build议的行:

 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 } } 

一些林特警告默认转换为工作室作为错误,我不知道为什么,但在翻译方面,我想这是一种方法来“停止”您发布的应用程序,由于最后一分钟的补充,翻译是不完整的的一些文本。

使用lintOptions checkReleaseBuilds abortOnError您可以将Lint的检查设置为不针对发行版本运行,并且在发现“错误”时也不会停止。 下面我解释一下Lint错误设置可以find的位置,所以如果你想要走的更远,你可以前进一步,逐一阅读。 其中一些提供了有用的代码优化说明。

我该如何解决这个问题,这样Lint会告诉我只是警告而已? 或者如果我确定我想要做一个确认对话框?

在Android Studio设置中还有一个选项可以将任何Lint错误更改为Lint警告,但是我从来没有testing过。 我通常转向gradle解决scheme。

该选项位于Settings > Inspections > Android Lint 。 为了方便查找打开的设置,并在search(位于顶部)键Lint translation那里你可以改变翻译选项出现在左侧从错误到警告。

如果你的错误string永远不会被翻译,另一种select是在你的XMLstring文件中添加tools:ignore="MissingTranslation"在根项目或者在每个不可翻译的string处。

简单的方法来解决这个错误

只需添加以下代码添加“禁用'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' } } } } 

你可以尝试打开“Translations Editor”并将string“…”设置为“Unstranlatable”。 您还必须删除该string的所有翻译。

FWIW:如果您不打算支持其他语言,则根本不需要禁用皮棉检查。 有时你的项目设置(或者你正在导入的一个库)可能意外地(或者有意)包含了一个configuration来支持额外的语言,例如通过声明这个语言的values-文件夹来实现:

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

这是我的情况,所以我只是删除该文件夹。 但是,如果您无法控制违规的库,那么一种select是禁用lint abortOnError(如接受的答案中所示),或者find一种方法来以某种方式排除“库导入”文件夹。 对于后面的选项,你可以从这里开始